Software Libero e RDBMS
DB2 Express-C 9 e MySQL Community Server a confronto
Alessandro Benati
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
RDBMS
Il termine Relational DataBase
Management System (RDBMS),
RDBMS sistema
relazionale per la gestione di basi di dati,
indica un sistema basato sul modello
relazionale (Entity/Relationship), introdotto
da Edgar F. Codd nel 1970, mentre lavorava
per IBM, con l’articolo “A Relational Model of
Data for Large Shared Data Banks”.
Banks”
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
RDBMS
Una nota definizione dei requisiti che un
RDBMS dovrebbe avere, è data dalle
famose 12 regole di Codd.
Codd
•
•
•
•
•
•
•
Regola 0: il sistema deve potersi definire
come relazionale, base di dati e sistema di
gestione. Affinché un sistema possa definirsi
sistema relazionale per la gestione di basi di
dati (RDBMS), tale sistema deve usare le
proprie funzionalità relazionali (e solo quelle)
per gestire la base di dati.
Regola 1: l'informazione deve essere
rappresentata sotto forma di tabelle.
Regola 2: l’accesso ai dati deve essere
garantito tramite la relazione tabella-chiave
primaria e valore della chiave primaria.
Regola 3: il sistema deve supportare i valori
di NULL.
Regola 4: la descrizione del database deve
avvenire ad un livello logico tramite i
metadati.
Regola 5: deve esistere un linguaggio che
permetta la gestione dei dati (come SQL).
SQL
Regola 6: si possono creare delle viste per
vedere una parte dei dati. Queste viste
devono essere aggiornabili.
•
•
•
•
•
•
Regola 7: le operazioni che avvengono su
database devono avvenire anche sulle
tabelle.
Regola 8: i dati memorizzati nel database
devono essere indipendenti dalle strutture di
memorizzazione fisiche
Regola 9: i dati devono essere indipendenti
dalla struttura logica del database per
garantire la crescita naturale e la
manutenzione del database.
Regola 10: le restrizioni sui dati devono
essere memorizzate nel database.
Regola 11: l'accesso ai dati è indipendente
dal tipo di supporto per la lettura o
memorizzazione degli stessi.
Regola 12: l'accesso ai dati non deve
annullare le restrizioni o i vincoli di integrità
del linguaggio principale (SQL).
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Player di Mercato
Prima del 1994, se qualcuno avesse voluto
un RDBMS SQL-based senza pagare uno
sproposito, avrebbe dovuto desistere.
Le soluzioni commerciali dominanti erano
Oracle,
Oracle Sybase e Informix.
Informix
Questi database erano progettati per gestire
“valanghe” di dati, erano potenti e pieni di
funzioni, a scapito delle risorse e del TCO.
TCO
Mediamente le risorse necessarie a questi
motori database erano dell’ordine delle
decine di migliaia di dollari.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Player di Mercato
.
4th Dimension
Adabas
DB2
Informix
4D s.a.s
Software AG
IBM
IBM
Release
Date
1984
1970
1982
1985
Ingres
Ingres Corp.
1974
CodeGear
Microsoft
1985
1992
Microsoft
1989
Oracle
Oracle Corporation
1979
Oracle Rdb
Oracle Corporation
PostgreSQL Global
Development Group
Sybase
Teradata
1984
Latest Stable
Version
v11 SQL
2006
9
11.0
Ingres 2006 II
9.0.4
2007
12 (2007)
9.00.3042 (2005
SP2)
11g Release 1
(September 2007)
7.2
1989
8.2.5
BSD
1992
1984
10.0
V2R8.2
Proprietary
Proprietary
Product
Maintainer
InterBase
Microsoft Access
Microsoft SQL
Server
PostgreSQL
SQL Anywhere
Teradata
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Software
License
Proprietary
Proprietary
Proprietary
Proprietary
GPL and
proprietary
Proprietary
Proprietary
Proprietary
Proprietary
Proprietary
Un po’ di storia
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
La comparsa di Linux
Nel 1991 appare Linux,
Linux come risposta alle
varie insoddisfazioni che Linus Torvalds,
Torvalds un
giovane programmatore finlandese, trovava
in Minix,
Minix un sistema operativo Unix-like a
microkernel, creato da Andrew Tanenbaum
nel 1987.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
La comparsa di Linux
.Le principali critiche di Torvalds erano le
seguenti:
•Minix non era free software e neanche
completamente open source;
source
•sebbene portabile, non supportava appieno
la nuova architettura i386 a 32bit.
Queste critiche sfociarono poi in un dibattito
pubblico tra i due sul newsgroup
comp.os.minix, dal titolo Linux is
obsolete.
obsolete
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
La comparsa di Linux
“Don`t
get me wrong, I am not unhappy with LINUX. It will get all the
.
people who want to turn MINIX in BSD UNIX off my back. But in all
honesty, I would suggest that people who want a **MODERN** "free"
OS look around for a microkernel-based, portable OS, like maybe GNU
or something like that.“ - Andrew Tanenbaum
“I also agree that linux takes the non-portability to an extreme: I got my
386 last January, and linux was partly a project to teach me about it.
Many things should have been done more portably if it would have been
a real project. I'm not making overly many excuses about it though: it
was a design decision, and last april when I started the thing, I didn't
think anybody would actually want to use it. I'm happy to report I was
wrong, and as my source is freely available, anybody is free to try to
port it, even though it won't be easy.” - Linus Torvald
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Un po’ di storia
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Un po’ di storia: DB2
DB2 ha una lunga storia ed è considerato in
qualche modo il primo database a fare uso
del linguaggio SQL, anche se il primo a
sfruttare commercialmente le idee di Codd
fu Larry Ellison,
Ellison fondatore di Oracle,
Oracle con
grande “disappunto” da parte di IBM.
La prima versione del prodotto con tale
nome, risale al 1982, su piattaforma
mainframe, successore del System
R(elational) del 1978.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Un po’ di storia: DB2
Codd aveva anche pensato a un linguaggio
relazionale, chiamato Alpha, per il database
da lui pensato, ma per ragioni di scarsa
lungimiranza il gruppo di sviluppo non fu
posto sotto di lui.
Il risultato di ciò fu che il gruppo produsse un
linguaggio che violava molti dei suoi punti.
punti
Tale linguaggio si chiamò inizialmente
Structured English QUEry Language,
Language
SEQUEL,
SEQUEL nome poi cambiato in SQL per
ragioni di copyright.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Un po’ di storia: MySQL
MySQL è legato in qualche modo alla tesi di
dottorato di David Hughes, che scelse un
database SQL come strumento per la
raccolta dati del suo monitor di rete,
chiamato Minerva.
All’epoca fu giocoforza scegliere Postgres
come DBMS, il quale supportava una
variante di SQL non standard, denominata
PostQUEL.
PostQUEL Fu così che Hughes scrisse un
modulo che convertisse SQL standard in
linguaggio PostQUEL. Tale prodotto fu
chiamato mSQL (miniSQL).
(miniSQL)
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Un po’ di storia: MySQL
La crescita di Minerva rese insufficiente
Postgres, a causa di limiti tecnologici, ciò
indusse Hughes a rivalutare mSQL,
mSQL
aggiungendogli le funzioni di archiviazione e
di ricerca dei dati, trasformandolo cioè in
vero e proprio DBMS.
Più tardi un altro sviluppatore, Michael
Widenius, pensò di utilizzare mSQL per le sue
applicazioni web, aggiungendo alcune ciò che
all’epoca mSQL non aveva, ad esempio gli
indici. Fu così che nacque MySQL 1.0
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Un po’ di storia: MySQL
Con l'aiuto di Aladdin Peter Deutsch MySQL
diventa "più libero” del predecessore mSQL e
rappresenta il primo database “open” al
mondo. Già dalla prima versione viene
effettuato il porting per i sistemi Unix, Win32
e OS/2, al punto che si contavano circa
500.000 server MySQL.
MySQL
Curiosità: pare sia incerta l’origine del nome,
ma la più attendibile vuole che derivi dal
soprannome della figlia di Widenius, My.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto!
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto!
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: edizioni
MySQL
offre due versioni basate su GPL e due
.
licenze commerciali:
2.MySQL Standard (full transactional support
database)
3.MySQL Max (early adopters database with
advanced features)
4.MySQL Pro (commercially licensed version
of MySQL Standard)
5.MySQL Classic (commercially licensed, basic
in-memory database)
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: edizioni
DB2 copre un vasto range di applicazioni o
piattaforme:
2.DB2 Cloudscape (Java-based lightweight embed.)
3.DB2 UDB for LUW
a)DB2 Express Edition (2 CPU, 4GB RAM, for
SMB)
b)DB2 Workgroup Edition (4 CPU, no RAM limit)
c) DB2 Enterprise Server Edition (Highly mission
critical applications & clusters)
d)DB2 Personal Edition (for non commercial use)
4.DB2 z/OS (for IBM zSeries mainframes)
5.DB2 for iSeries (for AS400 platforms)
5.DB2 Everyplace (for mobile and PDA)
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: edizioni
DB2 Express-C is a free version of DB2
Express Edition (DB2 Express) for the
community.
It’s a no-charge data server for use in
development and deployment of applications
including: XML, C/C++, Java, .NET, PHP, and
more.
DB2 Express-C can be run on up to 2 dualcore CPU servers, with up to 4 GB of
memory, any storage system setup and with
no restrictions on database size or any other
artificial restrictions (Linux and Windows).
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: features
Sistemi Operativi Supportati
Windows Mac OS X Linux BSD UNIX
z/OS
DB2
Yes
No
Yes
No
Yes
Yes
MySQL
Yes
Yes
Yes
Yes
Yes
Maybe
Caratteristiche fondamentali
ACID
Referential
Atomicity, Consistency,
Integrity
Isolation, Durability
Transactions Unicode
DB2
Yes
Yes
Yes
Yes
MySQL
Yes*
Yes*
Yes*
Yes*
Note: for transactions and referential integrity, the InnoDB table type must be used; Windows installer
sets this as default if support for transactions is selected, on other operating systems the default table
type is MyISAM. However, even the InnoDB table type permits storage of values that exceed the data
range; some view this as violating the Integrity constraint of ACID.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: features
Limiti
DB2
MySQL
Max DB
size
Max
table
size
Max
row
size
Max
cols
per
row
Max
LOB size
Max
CHAR
size
Max
NUMBER
size
512TB
512TB
32KB
1012
2GB
32KB
64 bits
Unlimited
2GB
(FAT32)
to 16TB
(Solaris)
3398
4GB
(longtext,
longblob)
64KB
(text)
64 bits
64KB
Tabelle e viste
Temporary
Table
Materialized
View
DB2
Yes
Yes
MySQL
Yes
No*
Note: materialized views can be emulated using stored procedures and triggers.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: features
Indici
DB2
RR+ tree
Hash
Expr.
Partial
Reverse
Bitmap
GiST
GIN
No
Yes
No
No
Yes
Yes
No
No
No
No
No
No
No
No
MEMORY
MySQL
MyISAM
tables
only
Cluster
(NDB)
InnoDB
tables
only
Proprietà DB
Union
Inner
Joins
Outer
Joins
Inner
Selects
Merge
LOBs
DB2
Yes
Yes
Yes
?
Yes
Yes
MySQL
Yes
Yes
Yes
Yes
Yes
Yes
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: features
Altri Oggetti
Data
Domain
Cursor
Trigger
Function Procedure
External
Routine
DB2
No
Yes
Yes
Yes
Yes
Yes
MySQL
No
Yes
Yes
Yes
Yes
Yes
Partitioning
DB2
MySQL
List
Shadow
Native
Replication
API
Range
Hash
Composite
(Range+Hash)
Yes
Yes
Yes
Yes
?
?
Yes (5.1.6)
Yes
(5.1.6)
?
?
Yes
Yes
(5.1.6) (5.1.6)
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Al Lavoro!
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: setup
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
A Confronto: setup
rpm -i MySQLserver5.0.glibc23.i386.rpm
!!!
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Conclusioni
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Conclusione
“Nel 2006 avete pianificato il passaggio da
database proprietario a Software Libero e/o
Open Source?” In Europa il 40% ha risposto
sì, il 60% in America Latina e il 50% in Asia.
Questi dati, pubblicati da Gartner,
Gartner indicano
un forte cambiamento preannunciato già
negli scorsi anni dai sostenitori del software
libero ed open. L’idea è che le soluzioni
“aperte” crescono inesorabilmente e rubano
fette di mercato alle grandi software house.
Quest' idea, priva di credibilità per anni,
sembra iniziare a spaventare molti.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Conclusione
.
Research
Publication Date: 2 May 2007
ID Number: G00148562
MySQL Will Open IBM System-i to New
Applications and Customers
Donald Feinberg
MySQL's and IBM's plan for the MySQL
database management system to run on the
System i platform brings hundreds of new
applications to System i and should be
welcome news to small and midsize
businesses.
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Links
•http://it.wikipedia.org/wiki/Edgar_F._Codd
•http://it.wikipedia.org/wiki/12_regole_di_Codd
•http://it.wikipedia.org/wiki/Linux
•http://it.wikipedia.org/wiki/Minix
•http://www-306.ibm.com/software/data/db2/express/download.html
•http://dev.mysql.com/downloads/mysql/5.0.html
•http://en.wikipedia.org/wiki/Comparison_of_relational_database_manageme
nt_systems
•http://www-it.mysql.com/company/legal/licensing/faq.html
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007
Grazie!
LinuxDays ’07 – Imola 27/10/2007 – Granarolo Faentino 3/11/2007