SQLite: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
(281 versioni intermedie di oltre 100 utenti non mostrate) | |||
Riga 1:
{{Software
|Nome = SQLite
|DimensioneLogo = 200px
|Screenshot =
|Didascalia =
|UltimaVersione =
|DataUltimaVersione =
|Sviluppatore = Dwayne Richard Hipp
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = Multipiattaforma
|Genere = RDBMS
|Licenza = [[Public ___domain]] o [http://www.hwaci.com/ Licenza commerciale]
|SoftwareLibero = sì
|Lingua = inglese
}}
'''SQLite''' è una [[libreria software]] scritta in [[C (linguaggio)|linguaggio C]] che implementa un [[DBMS]] [[SQL]] di tipo [[ACID]] incorporabile all'interno di applicazioni. Il suo creatore, [[D. Richard Hipp]], lo ha pubblicato nel [[pubblico dominio]], rendendolo utilizzabile quindi senza alcuna restrizione. Permette di creare una [[base di dati]] (comprese [[Tabella (database)|tabelle]], [[query]], [[form]], [[Report informativo|report]]) incorporata in un unico file, come nel caso dei moduli ''Access'' di [[Microsoft Office]] e ''Base'' di [[OpenOffice.org]] e [[Libre Office]]; analogamente a prodotti specifici come [[Paradox (database)|Paradox]] o [[FileMaker Pro|Filemaker]].
SQLite non è un processo standalone utilizzabile di per sé, ma può essere incorporato all'interno di un altro programma. È utilizzabile con il [[C (linguaggio)|linguaggio C]]/[[C++]], ed esistono binding anche per altri linguaggi, in particolare [[Tcl]].
È inoltre stato integrato nella versione 5 di [[PHP]], consentendo a tale popolare linguaggio di disporre di un altro RDBMS indipendentemente dalla presenza di [[MySQL]]. Viene utilizzato in [[Mozilla Firefox]] e [[Seamonkey]] per memorizzare i ''[[Segnalibro (World Wide Web)|segnalibri]]'', la cronologia di navigazione ed altre informazioni.
== Caratteristiche e limitazioni ==
La libreria offre molte interessanti caratteristiche:
* è compatta (meno di 750KB per l'intera libreria alla versione 3.39.0);
* è molto veloce; in molti casi più di [[MySQL]] e [[PostgreSQL]];
* il codice sorgente è liberamente disponibile, chiaro e ben commentato;
* è in grado di interpretare stringhe SQL; a differenza di altre librerie simili, supporta buona parte dello standard [[SQL]]92;
* ha la possibilità di interpretare campi in [[JavaScript_Object_Notation|JSON]];
* l'[[Application programming interface|API]] è semplice da utilizzare;
* ha [[Transazione (basi di dati)|transazioni]] atomiche, consistenti, isolate e durabili ([[ACID]]), anche in caso di crash di sistema o blackout;
* è [[multipiattaforma]];
* include un programma di utilità a [[riga di comando]] per accedere al database anche manualmente (come su MySQL, Postgresql e tanti altri DB) o tramite scripting;
* supporta database nell'ordine dei terabyte, con righe grandi fino a 1GB<ref>{{Cita web|url=https://sqlite.org/limits.html|titolo=Limits In SQLite}}</ref>;
* un database consiste di un unico file, il cui formato interno è indipendente dalla piattaforma e dal relativo [[ordine dei byte]];
* non ha dipendenze esterne;
* normalmente non richiede alcun lavoro di amministrazione, ma supporta il comando "SQL VACUUM" nel caso si renda necessario compattare esplicitamente i dati del database.
SQLite presenta dei limiti legati in parte alla finalità di semplice database da incorporare in altre applicazioni:
* non offre le [[stored procedure]].
* non prevede la gestione dei permessi d'accesso, demandata al software con cui si interagisce con il database e/o al meccanismo dei permessi del ''[[file system]]'';<ref name="unsupported">{{cita web
|url=https://www.sqlite.org/omitted.html
|titolo=SQL Features That SQLite Does Not Implement
|accesso=14 gennaio 2010
|lingua=en
}}</ref>
* non ha una vera gestione della [[Concorrenza (informatica)|concorrenza]]: le applicazioni che lo utilizzano, se necessario, devono implementarla;
* per garantire la coerenza del file del database sono usati i ''[[lock]]'' del ''file system'', e quindi vi possono essere problemi qualora quest'ultimo non li implementi correttamente, ad esempio con ''file system'' di rete (come [[Network File System|NFS]]);
* non offre alcuna cache per le query (e non ne ha la possibilità, non esistendo un processo server centrale);
* non ha protocolli di rete, non essendo utilizzabile come programma a sé; è possibile utilizzare un database remoto, ma solo tramite ''file system'' di rete del sistema operativo, con prestazioni difficilmente accettabili;
* non ha un supporto completo per il costrutto SQL "ALTER TABLE".<ref name="unsupported"/>
* non supporta la scrittura diretta nelle [[Vista (basi di dati)|viste]] (occorre usare trigger "INSTEAD OF");<ref name="unsupported"/>
* non supporta trigger di tipo "FOR EACH STATEMENT" ma solo "FOR EACH ROW", eventualmente combinato con "INSTEAD OF";<ref name="unsupported"/>
* il supporto ai trigger ricorsivi ed ai vincoli sulle [[Chiave esterna|chiavi esterne]], introdotto rispettivamente nelle versioni 3.6.18 e 3.6.19, deve essere attivato dal programmatore oppure definito in fase di compilazione della libreria.
Una peculiarità di SQLite è la gestione flessibile dei tipi di dati: ogni campo può contenere qualsiasi tipo di dato (gestito differentemente nella versione 2 e 3).
== Interfacce grafiche per SQLite ==
Pur gestibile da altre applicazioni, esistono delle interfacce grafiche appositamente sviluppate per SQLite:
* [[DaDaBIK]] [https://dadabik.com/ (sito)]- software proprietario scritto in PHP che permette di creare un Web front-end per SQLite senza scrivere codice. Anche per MySQL e PostgreSQL;
* [[SpatiaLite]] [http://www.gaia-gis.it/spatialite/ (sito)] {{Webarchive|url=https://web.archive.org/web/20110722033735/http://www.gaia-gis.it/spatialite/ |date=22 luglio 2011 }}- estensione per il supporto dei dati geografici all'interno di database SQLite, può essere utilizzato da console o tramite un'interfaccia grafica dedicata.
* [[Database Browser for SQLite]] [https://sqlitebrowser.org/ (sito)]— è un'applicazione multipiattaforma che consente di amministrare in modo semplificato, con una interfaccia grafica, database di SQLite; Licenza public ___domain
* [[TkSQLite]] [http://reddog.s35.xrea.com/wiki/TkSQLite.html (sito)]— applicazione multipiattaforma. Licenza BSD-style
* [[sqlite-manager]] [https://code.google.com/p/sqlite-manager/ (sito)]— è una estensione per browser basati su [[Gecko]] (Firefox 3, Thunderbird 3, Seamonkey 2, Sunbird 1.0, Komodo 5.0, etc.) multipiattaforma, che consente di amministrare in modo semplificato, con l'interfaccia grafica del browser, database di SQLite;
* [[SQLiteManager]] [https://sourceforge.net/projects/sqlitemanager/ (sito)]— è un'applicazione multipiattaforma, basata sul web, che consente di amministrare in modo semplificato, con una interfaccia grafica, database di SQLite; Lingua francese
* [[Sqliteman]] [https://web.archive.org/web/20140625111343/http://sqliteman.com/ (sito)]— applicazione realizzata con le librerie Qt4 - versione per [[GNU/Linux]], Mac, Windows, richiede SQLite versione 3.
* [[Database Master]] [https://web.archive.org/web/20200122085236/http://nucleonsoftware.com/ (sito)] per Windows, anche per [[MySQL]], PostgreSQL, FireBird, Oracle, DB2, Informix, ODBC, OleDB, SQL-Server, MongoDB.
* Sqlite-Workbench [http://www.sqlite-workbench.com/ (sito)] - applicazione online per la gestione grafica di database sql
* DataBase.Net [https://fishcodelib.com/database.htm (sito)] Applicazione sviluppata .Net / Gratuita (La versione commerciale non ha limiti in tante funzioni)
== Diffusione<ref>{{Cita web|url=https://sqlite.org/mostdeployed.html|titolo=Most Widely Deployed and Used Database Engine}}</ref> ==
[[Chromium]] (e quindi anche [[Google Chrome]]), [[Mozilla Firefox]] e [[Mozilla Thunderbird]] memorizzano varie informazioni di configurazione (segnalibri, cookie, contatti della rubrica, ecc) in database SQLite. [[Skype]] è un altro software molto diffuso che utilizza SQLite.<ref name="skype">[https://www.mail-archive.com/sqlite-users%40sqlite.org/msg27326.html Skype client using SQLite?]</ref> [[Adobe (azienda)|Adobe]] utilizza SQLite come formato file in [[Adobe Photoshop Lightroom]], come database di appoggio alle applicazioni in [[Adobe Integrated Runtime|Adobe AIR]] e internamente in [[Adobe Reader]].<ref name="adobe">[https://www.sqlite.org/famous.html Well-Known Users of SQLite]</ref>
Grazie alle ridotte dimensioni SQLite è particolarmente adatto ai [[Sistema embedded|sistemi embedded]]. SQLite viene inoltre utilizzato su [[iOS]] e [[MacOS]] per la gestione degli SMS e MMS, per il calendario, la cronologia delle chiamate e la memorizzazione dei contatti. La libreria è inoltre utilizzata in [[Symbian OS]] ed [[Android]], sul sistema operativo del [[BlackBerry]] e su [[webOS]] di Palm.
SQLite è inoltre integrato nei linguaggi [[PHP]] e [[Python]].<ref name="famous">[https://www.sqlite.org/famous.html Well-known Users of SQLite]</ref>
== Note ==
<references/>
== Altri progetti ==
{{interprogetto}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{cita web|https://www.php.net/manual/en/book.pdo.php|Funzioni PHP raccomandate per l'utilizzo di SQLite 3.x con PHP|lingua=en}}
<!-- * {{en}} [https://www.youtube.com/watch?v=giAMt8Tj-84 Introduzione video a SQLite tenuta da D. Richard Hipp] -->
* {{cita web | 1 = http://appuntilinux.mirror.garr.it/mirrors/appuntilinux/a2/a2109.htm#almlindex11097 | 2 = SQLite su Appunti di Informatica Libera | accesso = 17 giugno 2014 | urlarchivio = https://web.archive.org/web/20160405071526/http://appuntilinux.mirror.garr.it/mirrors/appuntilinux/a2/a2109.htm#almlindex11097 | dataarchivio = 5 aprile 2016 | urlmorto = sì }}
{{Database management system}}
{{Android}}
{{Controllo di autorità}}
{{Portale|Informatica|Software libero}}
[[Categoria:Database management system]]
[[Categoria:Librerie software]]
|