MySQL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Forzare ad avere una sola riga altrimenti possono accadere artefatti
Screenshot; Molte più fonti e citazioni; Messa in ordine; Rimozione paragrafo storico privo di fonte
Riga 3:
|Logo =
|DimensioneLogo = 150px
|Screenshot = Screenshot-mysql-client-text-debian.png
|Didascalia = Client MySQL a riga di comando (in Debian).
|Sviluppatore = [[Oracle Corporation]]
|UltimaVersione = 5.6.1019<ref name="download">
{{cita web
|DataUltimaVersione = {{Data e tempo|5|2|2013}}
|titolo=Download MySQL Community Server
|UltimaVersioneBeta =
|url=http://dev.mysql.com/downloads/mysql/
|editore=[[Oracle Corporation]]
|accesso=22 giugno 2014
|lingua=en
}}</ref>
|DataUltimaVersione = {{Data e tempo|5|2|2013}}
|UltimaVersioneBeta = 5.7.4<ref name="download" />
|DataUltimaVersioneBeta =
|SistemaOperativo = Multipiattaforma
|Linguaggio = C
|Linguaggio2 = C++
|Genere = rdbms
|Genere = relational database management system
|Licenza = [[GNU General Public License|GNU GPL]] oe [http://www-it.mysql.com/company/legal/licensing/commercial-license.html Licenzalicenza commerciale]
|SoftwareLibero = sì
|Lingua =
|SitoWeb = http://www.mysql.com/
}}
'''MySQL''' o '''Oracle MySQL''' (/maɪ ˌɛskjuːˈɛl/ "My S-Q-L")<ref>
'''MySQL''', definito '''Oracle MySQL''', è un [[Relational database management system]] (''RDBMS''), composto da un [[client]] con [[interfaccia (informatica)|interfaccia]] a [[riga di comando]] e un [[server]], entrambi disponibili sia per sistemi [[Unix]] o [[Unix-like]] come [[GNU/Linux]] che per [[Microsoft Windows|Windows]], anche se prevale un suo utilizzo in ambito Unix.
{{cita web
|titolo=What is MySQL?
|url=http://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html
|editore=[[Oracle Corporation]]
|citazione=The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we do not mind if you pronounce it as “my sequel” or in some other localized way.
|accesso=22 giugno 2014
|lingua=en
'''MySQL''', definito '''Oracle MySQL''',}}</ref> è un [[Relational database management system]] (''RDBMS''), composto da un [[client]] con [[interfaccia (informatica)|interfaccia]] a [[riga di comando]] e un [[server]],. entrambiEntrambi i software sono disponibili sia per sistemi [[Unix]] oe [[Unix-like]] come [[GNU/Linux]] che per [[Microsoft Windows|Windows]],; anchele sepiattaforme prevaleprincipali undi suoriferimento utilizzosono in[[Linux]] ambitoe Unix[[Oracle Solaris (sistema operativo)|Oracle Solaris]].
 
MySQL è un [[software libero]] rilasciato a doppia licenza, compresa la [[GNU General Public License]] ed è sviluppato per essere il più possibile conforme agli standard ANSI [[SQL]] e ODBC SQL.<ref>
Dal [[1996]] supporta la maggior parte della sintassi [[SQL]]{{cn}} e si prevede in futuro il pieno rispetto dello standard [[ANSI]]{{cn}}. Possiede delle interfacce per diversi linguaggi, compreso un [[driver]] [[ODBC]], due driver [[Java (linguaggio)|Java]], un driver per [[Mono (progetto)|Mono]] e [[.NET]] ed una [[libreria (software)|libreria]] per [[python]].
{{cita web
|titolo=Commercial License for OEMs, ISVs and VARs
|url=http://www.mysql.com/about/legal/licensing/oem/
|editore=[[Oracle Corporation]]
|citazione=Oracle provides its MySQL database server and MySQL Client Libraries under a dual license model designed to meet the development and distribution needs of both commercial distributors (such as OEMs, ISVs and VARs) and open source projects.
|accesso=22 giugno 2014
|lingua=en
}}</ref><ref>
{{cita web
|titolo=MySQL Standards Compliance
|url=http://www.radionomy.com/en/radio/abc-jazz/
|editore=[[Oracle Corporation]]
|citazione=One of our main goals with the product is to continue to work toward compliance with the SQL standard, but without sacrificing speed or reliability.
|accesso=22 giugno 2014
|lingua=en
}}
</ref>
<ref>
{{cita web
|titolo=MySQL Differences from Standard SQL
|url=http://dev.mysql.com/doc/refman/5.7/en/differences-from-ansi.html
|editore=[[Oracle Corporation]]
|citazione=We try to make MySQL Server follow the ANSI SQL standard and the ODBC SQL standard, but MySQL Server performs operations differently in some cases
|accesso=22 giugno 2014
|lingua=en
}}
</ref>
 
I sistemi e i linguaggi di programmazione che supportano MySQL sono molto numerosi: [[ODBC]], [[Java (linguaggio)|Java]], [[Mono (progetto)|Mono]], [[.NET]], [[PHP]], [[Python]] e molti altri.
Il codice di MySQL venne sviluppato fin dal [[1979]] dalla ditta ''TcX ataconsult'', poi rinominata [[MySQL AB]], ma è solo dal [[1996]] che viene distribuita una versione che supporta SQL, prendendo spunto da un altro prodotto: [[mSQL]]. MySQL AB è stata rilevata da [[Sun Microsystems]] nel 2008, mentre nel 2010 quest'ultima è stata acquisita da [[Oracle Corporation]].
 
MySQL fa parte di pacchetti come [[LAMP (piattaforma)|piattaforma LAMP]] e [[WAMP (piattaforma)|WAMP]] usati per sviluppare in locale [[sito web|siti web]], anche in congiunzione con pacchetti software ([[Content Management System|CMS]]) come per esempio [[WordPress]], [[Drupal]], [[Joomla]] o altri.
 
Le piattaforme [[LAMP (piattaforma)|LAMP]] e [[WAMP (piattaforma)|WAMP]] incorporano MySQL per l'implementazione di server per gestire [[sito web|siti web]] dinamici, inoltre molti dei [[Content Management System]] di successo come [[WordPress]], [[Joomla]] e [[Drupal]] nascono proprio con il supporto predefinito a MySQL.<ref>
{{cita web
|titolo=Wordpress > About
|editore=[[Wordpress]]
|url=http://wordpress.org/about/
|citazione=WordPress was born out of a desire for an elegant, well-architectured personal publishing system built on PHP and MySQL
|accesso=22 giugno 2014
|lingua=en
}}
</ref><ref>
{{cita web
|titolo=What is Joomla?
|editore=[[Joomla]]
|url=http://www.joomla.org/about-joomla.html
|citazione=Joomla is based on PHP and MySQL
|accesso=22 giugno 2014
|lingua=en
}}
</ref><ref>
{{cita web
|titolo=A proposito di Drupal
|editore=[[Drupal]]
|url=http://www.drupal.it/a_proposito_di_drupal
|citazione=Utilizza come base di dati MySQL e PostgreSQL in modo nativo ma è utilizzabile con ogni tipo di database server.
|accesso=22 giugno 2014
}}
</ref>
== Storia ==
 
Il [[codice sorgente]] di MySQL era inizialmente di proprietà della società MySQL AB, veniva però distribuito con la licenza [[GNU GPL]] oltre che con una [[licenza (informatica)|licenza]] commerciale. Fino alla versione 4.0, una buona parte del codice del client era licenziato con la [[GNU LGPL]] e poteva dunque essere utilizzato anche per applicazioni proprietarie. Dalla versione 4.1 in poi, anche il codice del client è distribuito sotto GNU GPL. Esiste peraltro una [http://www.mysql.com/company/legal/licensing/foss-exception.html clausola estensiva] che consente l'utilizzo di MySQL con una vasta gamma di licenze libere.
 
Line 77 ⟶ 144:
Le aggiunte più significative sono:
*le Subquery. Queste sono delle query [[SQL]] nidificate. Si ha dunque la possibilità di scrivere:
<source lang=sql>SELECT * FROM tabella1 WHERE colonna1 = (SELECT colonna1 FROM tabella2 LIMIT 1)</source>
*dati Dati geografici memorizzati secondo il modello [[OpenGIS]];
*i I ''Prepared Statements'';
*le Le ''connessioni [[Transport Layer Security|SSL/TLS]]'';
*set Set di caratteri impostabili a livello di database, tabella e colonna; aggiunto il supporto per [[Unicode]] (UTF8 e UCS2);
*commenti Commenti a livello di colonna.
 
===5.0===
Il 22 dicembre [[2003]] viene rilasciata la prima versione della serie 5.0, che è entrata in produzione il 19 ottobre [[2005]].
Le aggiunte più significative sono:
* leLe [[Vista (modello relazionale)|viste]], tabelle virtuali ricavate da una query SQL, aggiornabili quando possibile;
* leLe [[stored procedure]], un vero e proprio linguaggio di programmazione per interagire con i dati del database. Oltre ai soliti parametri di ricerca e selezione è possibile inserire costrutti [IF ... THEN ... ELSE], tanto per fare un esempio.;
* iI [[trigger (basi di dati)|trigger]], istruzioni SQL che vengono lanciate automaticamente prima o dopo l'esecuzione di determinate query su determinate tabelle
* ''INFORMATION_SCHEMA'', un database virtuale che descrive la struttura di tutti gli altri database; inoltre i comandi SHOW, che anch'essi restituiscono informazioni sulla struttura dei database, sono stati potenziati;
* ilIl tipo di dati ''BIT'';
* gestioneGestione appropriata del fuso orario (''timezone'');
* iI tipi di tabella Archive e Federated;
* unUn'[[Application Programming Interface|API]] ben strutturata per sviluppare nuovi tipi di tabelle.
 
===5.1===
La prima [[Versione alpha|alfa]] pubblica è uscita il 29 novembre [[2005]]. Le principali nuove caratteristiche sono:
*il Il partizionamento delle tabelle;
*un Un'[[Application Programming Interface|API]] per scrivere nuovi [[parser]] per le ''ricerche FULLTEXT'';
*gli Gli eventi;
*replica Replica basata sui dati (anziché sulle query);
*i logIlog possono essere scritti in un database, oltre che nei file di testo;
*supporto Supporto per [[Xpath]];
*campi Campi AUTOINCREMENT e varie ottimizzazioni per le tabelle ARCHIVE;
* ClusterDB ora può scrivere i dati su disco, oltre che conservarli nella RAM; supporta inoltre [[MontaVista]];
* ALTER TABLE, CREATE INDEX e DROP INDEX sono molto più performanti.
 
===5.2===
Line 118 ⟶ 185:
Si tratta del primo ramo che è divenuto stabile sotto l'egida di Oracle.
La versione 5.5 introduce diverse nuove funzionalità:
* La '''replicazione semisincrona''' fornisce una maggiore garanzia sui dati poiché il commit sulla base dati Master attende che almeno uno Slave abbia ricevuto le modifiche.;
* Viene introdotto il '''Performance Schema''' che contiene numerose viste utili per il tuning della base dati.;
* L'Engine '''InnoDB''' diventa il default e viene reso molto più performante e scalabile sui moderni processori multicore.
 
Line 125 ⟶ 192:
È l'ultima versione rilasciata in produzione.
Sono molte, di cui alcune molto attese, le nuove funzionalità della versione 5.6:
* La gestione dei microsecondi e dei millisecondi nei datatype temporali e nei timestamp.;
* La possibilità di controllare i dati della Host Cache (ed i relativi errori).;
* Nuove viste, utili per il monitoraggio ed il tuning della base dati, nel Performance Schema e nell'Information Schema.;
* La possibilità di escludere alcune directory dalla ricerca come nome di database;
* L'utilizzo di ricerche testuali (FULLTEXT SEARCH) sull'Engine InnoDB;
* Un'interfaccia di tipo '''memcache''' su tabelle InnoDB;
* Molte utili estensioni che migliorano la sicurezza della base dati.
 
===5.7===
Line 160 ⟶ 227:
Esistono anche storage engine prodotti da terze parti. Eccone alcuni:
 
* [[XtraDB]] - Fork di InnoDB, sviluppato da Percona
* [[OQGRAPH]] - Simula strutture a [[grafo]]
* [http://dev.soliddb.com/ solidDB] - Motore transazionale
* [http://www.ritmark.com/ RitmarkFS] - Permette di accedere al filesystem in lettura e in scrittura tramite comandi SQL, supporta anche la replica del filesystem
* [http://ddengine.org/ Distributed Data Engine] - Motore per dati distribuiti, per gestire meglio il carico di lavoro
* [[Sphinx#API|SphinxSE]] - Interfaccia MySQL con Sphinx
* [[CassandraSE]] - Interfaccia MariaDB con Apache Cassandra
* [http://sourceforge.net/projects/mdbtools mdbtools] - Permette di leggere e scrivere un file .mdb (Access)
* [http://www.infobright.com/ BrightHouse] - Appare all'utilizzatore come un normale MyISAM, ma struttura internamente i dati per colonne anziché per righe. Da utilizzare tipicamente in lettura per Data Warehouse: riduce da 10 a 100 volte i tempi di accesso e lo spazio per i dati.
 
Alcuni di questi Storage Engine sono distribuiti con MariaDB o Percona Server.
Line 181 ⟶ 248:
 
== Compatibilità ==
MySQL, essendo scritto in [[C (linguaggio)|linguaggio C]] e [[C++]], è disponibile su molti differenti [[sistema operativo|sistemi operativi]] tra cui [[AIX (sistema operativo)|AIX]], AmigaOS, [[BSDi]], Digital Unix, [[FreeBSD]], [[HP-UX]], [[GNU/Linux]], [[Mac OS X]], [[NetBSD]], [[Novell NetWare]], [[OpenBSD]], [[OS/2]] Warp, [[Silicon Graphics|SGI]] [[IRIX]], [[Oracle Solaris (sistema operativo)|Solaris]], [[SunOS]], SCO OpenServer, SCO UnixWare, SGI Irix, [[Tru64]], [[Windows 95]], [[Windows 98]], [[Windows NT]], [[Windows 2000]], [[Windows XP]], [[Windows Server 2003|Windows 2003]], [[Windows Server 2008]], [[Windows Server 2008 R2]], [[Windows Vista]], [[Windows 7]], [[Windows 8]].<ref>
{{cita web
|titolo=The Main Features of MySQL
|url=http://dev.mysql.com/doc/refman/5.7/en/features.html
|editore=[[Oracle Corporation]]
|citazione=Written in C and C++
|accesso=29 giugno 2014
|lingua=en
}}
</ref>
 
Le piattaforme di riferimento sono Linux e Solaris. La documentazione di MySQL offre comunque un aiuto per chi avesse bisogno di provare a [[compilazione|compilare]] il software su qualsiasi sistema operativo discretamente diffuso.