SQLite ( sau ) este o mică bibliotecă C care implementează un motor de baze de date SQL încapsulat. Oferă posibilitatea de a-l introduce în diverse sisteme și necesită zero-configurare.

Ce este SQLite? SQLite este o mică bibliotecă C care implementează un motor de baze de date SQL încapsulat, oferă posibilitatea de a-l introduce în diverse sisteme și necesită zero-configurare. Caracteristicile includ: Tranzacțiile sunt atomice, consistente, izolate și durabile (ACID) chiar după căderi de sistem și pene de current. Zero-configurare - nici o setare sau administrare necesară. Implementează o mare parte a SQL92. (sunt unele caracteristici nesuportate) O bază de date întreagă este stocată într-un singur fișier de pe HDD. Fișierele bază de date pot fi liber partajate între mașini cu ordine diferită de octeți. Suportă baze de date de până la 2 terraocteți (2 ^ 41 octeți) în mărime. Mărimea șirurilor și BLOB-urile limitate doar de memoria disponibilă. Cod de bază mic: mai puțin de 250KiO configurat complet sau mai puțin de 150KiO cu caracteristici opționale omise. Mai rapid decât baze de date client/server cunoscute pentru majoritatea operațiilor obișnuite. API simplu, ușor de folosit. Legături TCL incluse. Legături către alte multe limbaje disponibile separat. Cod sursă foarte bine comentat cu peste 95% acoperire prin teste. Încapsulat: nu are dependențe externe. Sursele sunt în domeniul public. Poate fi folosit pentru orice scop. Distribuția SQLite vine cu un program linie-comandă de sine stătător (sqlite) care poate fi folosit pentru a administra o bază de date SQLite și care servește că un exemplu despre modul în care să folosiți librăria SQLite.

Întrebuințările SQLite SQLite este diferit de majoritatea altor motoare de baze de date SQL prin aceea că a fost proiectat pentru a fi simplu: Simplu de administrat. Simplu de folosit. Simplu de a fi încapsulat într-un program mai mare. Simplu de întreținut și setat. Multora le place SQLite deoarece este mic și rapid. Dar aceste calități sunt doar accidente fericite. Utilizatorii descoperă, de asemenea, că SQLite este foarte sigur. Siguranța este o consecință a simplismului. Cu mai puțină complicare, este mai puțin loc de greșeli. Deci, da, SQLite este mic, rapid și de încredere (sigur), dar în primul rând și cea mai mare calitate a lui este aceea că reușește să fie simplu. Simplitatea într-un motor de baze de date poate fi fie un punct tare, fie unul slab, depinde de ceea ce încerci să faci. Pentru a atinge simplitatea, SQLite a trebuit să sacrifice alte caracteristici care sunt găsite de unii oameni folositoare, ca cea a concurenței înalte, controlul la accesul detaliat, un set bogat de funcții implementate, proceduri stocate, caracteristici ezoterice a limbajului SQL, extensii XML și/sau Java, scalabilitate tera- sau peta-octet și așa mai departe. Dacă ai nevoie de unele din aceste caracteristici și nu îți pasă de complexitatea adugată pe care o aduc, atunci SQLite nu este probabil baza de date de care ai nevoie. Nu este proiectat să concureze cu Oracle sau cu PostgreSQL.

Regula de bază pentru când este potrivit să folosim SQLite este aceasta: folosește SQLite în situații unde simplitatea în administrare, implementare și întreținere sunt mai importante decât nenumăratele caracteristici complexe pe care motoarele de baze de date enterprise le furnizează. După cum se dovedește, situațiile unde simplitatea este o alegere mai bună sunt mai des întâlnite decât realizează mulți oameni.

Situații în care SQLite merge bine Situri web SQLite de obicei va merge formidabil ca bază de date pentru trafic al siturilor web mic spre mediu (care este, să spunem, 99.9% din toate siturile). Cantitatea de traffic web pe care SQLite îl poate administra depinde, binențeles, de cât de mult folosește situl web baza de date. În general, orice sit care primește mai puțin de 100000 de vizite/zi ar trebuii să meargă bine cu SQLite. Cele 100000 de vizite/zi sunt o estimare conservativă, nu o limită maximă. SQLite a fost demonstrat că merge și cu de 10 ori această cantitate de trafic. Dispozitive și aplicații încapsulate Deoarece o bază de date SQLite necesită puțină (sau deloc) administrare, SQLite este o alegere bună pentru dispozitive sau servicii care trebuiesc să meargă neadministrate sau fără sprijin uman. SQLite este potrivit pentru a fi folosit în telefoane mobile, PDA-uri și altele. Ar putea merge bine și ca bază de date încapsulată în aplicații consumator descărcabile. Format de fișier la aplicații SQLite a fost folosit cu succes ca un fișier pe disc sau aplicații desktop ca de exemplu unealtă de analiză financiară, pachete CAD, programe de ținut înregistrări și așa mai departe. Operația tradițională File/Open efectuează un sqlite3_open() și execută un BEGIN TRANSACTION pentru a obține acces exclusiv la conținut. File/Save face un COMMIT urmat de un alt BEGIN TRANSACTION. Folosirea tranzacțiilor garantează că update-urile la fișierul aplicației sunt atomice, consistente, izolate și durabile (ACID). Declanșatoare temporare pot fi adăugate bazei de date pentru a înregistra toate schimbările într-o tabela de logare (temporară) Undo/Redo. Aceste schimbări pot fi după aceea urmărite când utilizatorul apasa butoanele Undo și Redo. Folosind această tehnică, o implementare pentru un număr de pași nelimitați Undo/Redo poate fi scrisă în surprinzător de puțin cod. Înlocuitor pentru fișierele disc ad hoc Multe programe folosesc fopen(), fread() și fwrite() pentru a crea și administra fișiere de date în formate proprii. SQLite merge foarte bine că înlocuitor pentru aceste fișiere de date ad hoc. Baze de date interne sau temporare Pentru programe care au o mulțime de date care trebuiesc mutate sau sortate în diverse direcții, este de obicei mai ușor și mai rapid să încarce datele într-o bază de date SQLite în-memorie și să folosesca query-uri cu JOIN-uri și clauze ORDER BY pentru a extrage datele în formă și ordinea dorită, decât să încerce codarea acestor operații manual. Folosind o bază de date SQL intern în acest mod oferă de asemenea programului o flexibilitatea mai mare de când coloane noi și indici pot fi adăugați fără a recoda fiecare query. Unealtă linie-comandă pentru analiză dataset-urilor Utilizatorii SQL experimentați pot pune programul linie-comandă sqlite pentru a analiza diferite dataset-uri. Date brute pot fi importate din fișiere CSV (Comma Separated Values - Valori Separate prin Virgulă), după acea datele pot fi tăiate și aranjate pentru a genera o miriadă (un număr foarte mare) de rapoarte scurte. Utilizări posibile includ analiză log-urilor pe un sit, analiză statisticilor sportive, compilarea metricilor programării și analiza rezultatelor experimentale. Poți, binenteles, să faci același lucru cu o bază de date enterprise client/server. Avantajul în folosirea SQLite în această situație este acela că SQLite este mai ușor de configurat și bază de date rezultată este un singur fișier pe care îl poți stoca pe o dischetă, un pen-drive sau un e-mail către un coleg. Înlocuitor al unei baze de date enterprise în timpul unor demo-uri sau teste Dacă scri o aplicație client pentru un motor de baze de date enterprise, este logic să folosești o structură de bază de date generică care îți permite să te conectezi la multe diferite tipuri de motoare de baze de date SQL. Este și mai logic să faci pasul de a include SQLite în amestecul de baze de date suportate și să legi static motorul SQLite cu clientul. În acest mod programul client poate fi folosit de sine stătător cu un fișier SQLite pentru teste sau pentru demonstrații. Pedagogia bazelor de date Deoarece este simplu de setat și folosit (instalarea este trivială: doar copiezi SQLite sau executabilul sqlite.exe pe mașină dorită și îl rulezi) SQLite devine un motor de baze de date apt pentru a fi folosit în predarea SQL. Studenții pot ușor crea oricât de multe baze de date doresc și pot trimite cu ajutorul e-mail-ului aceste baze de date către profesor pentru observații sau pentru notare. Pentru studenți mai avansați care sunt interesați în studiat cum este implementat un RDBMS, codul SQLite foarte bine documentat, comentat și modular poate servi că o bază bună. Nu spunem că SQLite este un model exact a cum sunt implementate alte motoare de baze de date, dar un student care înțelege cum funcționează SQLite poate mult mai rapid înțelege principiile operaționale ale altor sisteme. Extensiile experimentale de limbaj SQL Arhitectură simplă și modulară a SQLite face din el o platformă bună pentru prototipizarea de idei și caracteristici noi pentru limbajul bazei de date (experimente).

Situații în care alt RDBMS ar merge mai bine Aplicații Client/Server Dacă ai multe programe client care accesează o bază de date comună peste o rețea ar trebuii să consideri folosirea unui motor de baze de date client/server în locul a SQLite. SQLite va merge peste o rețea de fișiere sistem, dar din cauza latenței asociată majorității fisierelor sistem rețea, performanța nu va fi satisfăcătoare. De asemenea, implementarea blocării a multor fisieresitem rețea (logică) conține bug-uri (și pe Unix și pe Windows). Dacă blocarea fișierului nu merge așa cum ar trebui, este posibil că două sau mai multe programe client să modifice aceeași parte a aceeași bază de date în același moment, rezultând în o corupere a bazei de date. Deoarece această problemă rezultă din bug-uri din implementarea ce stă la bază fisierelor sistem, nu este nimic ce SQLite ar putea face să prevină problema. O bună regulă este aceea că ar trebui să eviți folositea SQLite în situații în care aceeas bază de date va fi accesată simultan de mai multe calculatoare într-un fișier sistem rețea. Situri web cu volum mare SQLite va merge în mod normal bine că bază de date ce sprijină un sit web. Însă dacă situl web este atât de aglomerat încât te gândești să împarți componența bazei de date pe o mașină separată, atunci cu siguranță ar trebui să iei în considerare folosirea unui motor de baze de date client/server în locul SQLite. Dataset-uri foarte mari

Când începi o tranzacție în SQLite (ceea ce se întâmplă automat înainte de orice operație de scriere care nu este într-un explicit BEGIN...COMMIT) motorul are de alocat un bitmap de pagini murdare în fișierul disc pentru a-l ajută la administrarea jurnalului rollback (de revenire). SQLite necesită 256 de octeți de RAM pentru fiecare 1Mo de bază de date. Pentru baze de date mai mici, cantitatea de memorie necesară nu este o problemă, dar când bază de date începe să crească în rangul mulți-gigaocteți, mărimea bitmapului poate deveni foarte largă. Dacă trebuie să depozitezi și să modifici mai mult de câteva duzini de Go de date, atunci ar trebui să te gândești să folosești un motor de baze de date diferit. Concurență SQLite folosește lacăte reader/writer pe întregul de date. Orice proces citește din orice parte bazei de date, toate celelalte procese sunt oprite din orice punct a bazei de date. Similar, oricând un proces scrie date, toate celelalte procese sunt oprite din citit orice parte a bazei de date. Pentru multe situații nu este o problemă. Fiecare aplicație face propria operație peste de date lucreaza rapid și trece mai departe, nici o închidere nu durează mult de câteva milisecunde. Sunt unele aplicații, însă, care necesită mai multă concurență, și acele aplicații ar avea nevoie de abordări diferite.

Caracteristicile SQLite Aratăm în continuare unele din caracteristicile SQLite-ului care sunt neobișnuite și care fac SQLite diferit de multe alte motoare de baze de date SQL: Zero-Configurare