SQLite

***SQLite*** ir maza izmēra iegultā relāciju datubāzu pārvaldības sistēma. Datubāzes bibliotēkas pirmkods ir publiskots. 2005.gadā projekts saņēma *Google-O'Reilly Open Source Awards* balvu.

## Dizains
Vārds "iegultā" nozīmē, ka *SQLite* neizmanto klienta-servera paradigmu – *SQLite* nav atsevišķi strādājošs process ar kuru mijiedarbojas programmas, bet ir bibliotēka ar kuru tiek papildināta programma un tas kļūst par daļu no programmas. Tādējādi, kā saziņas protokols tiek izmantotas funkcija no *SQLite* bibliotēkas. Šāda pieeja samazina pieskaitāmās izmaksas, reakcijas laiku un vienkāršo programmu. *SQLite* visas datubāzes (ieskaitot definīcijas, tabulas, indeksus un datus) glabā vienotā standarta failā tajā datorā, kurā tiek veikta izpildāmā programma. Īstenošanas vienkāršums ir panākts, nodrošinot, ka pirms transakcijas veikšanas ieraksta visu failu, kas glabā datubāzes informāciju, tiek bloķēts.

Vairāki procesi vai plūsmas vienlaicīgi var bez problēmām nolasīt datus no vienas datubāzes. Ierakstu datubāzē var izdarīt tikai tad, ja tajā pat laikā nav citu pieprasījumu, citādi ieraksta mēģinājums neizdodas, un programma atgriež kļūdas kodu. Vēl viens scenārijs ir automātiska atkārtošana mēģinājumiem rakstīt iepriekš noteiktā laika intervālā.

Komplektā ir arī funkcionāla klienta daļa, kā izpildāmais fails `sqlite3`, ar kura palīdzību tiek demonstrēta bibliotēkas funkciju īstenošana. Klienta daļa strādā no komandrindas ļaujot piekļūt datubāzes failiem uz standarta OS funkciju pamata.

Pateicoties arhitektūrai *SQLite* var izmantot kā iegultās sistēmas, tā arī atsevišķos datoros ar gigabaitu datu masīviem.

## Ierobežojumi
Vecākas *SQLite* versijas tika veidota bez jebkādiem ierobežojumiem, vienīgais nosacījums bija, ka datu bāze ietilpst atmiņā, kurā tika veikti visi aprēķini, izmantojot 32 bitu veselus skaitļus. Tas radīja dažas problēmas. Sakarā ar to, ka augšējās robežas nav definētas un tāpēc pienācīgi pārbaudītas, tad tika konstatēts, ka bieži vien rodas kļūdas lietojot *SQLite* diezgan ekstremālos apstākļos. Tāpēc *SQLite* jaunākajām versijām tika ieviesti ierobežojumi, kas tiek pārbaudīti ar kopējo testu komplektu.

*SQLite* bibliotēkai noteikti atbilstoši ierobežojumi, kurus akūtas nepieciešamības gadījumā ir iespējams palielināt:

 

Līdz šim brīdim tikai **SQLITE_MAX_PAGE_SIZE** izmērs nedrīkst būt lielāks par noklusēto. Tādējādi nemainot **SQLITE_MAX_PAGE_COUNT** var teikt, ka maksimālais datubāzes faila izmērs sasniedz aptuveni 32 TB (35'184'372'056'064 B).

Dažus ierobežojumus var mainīt, lai samazinātu izpildes laiku programmās, nosakot kategorijas un atbilstošās vērtības `sqlite3_limit()` funkcijai:

 int sqlite3_limit(sqlite3*, int id, int newVal)

 

Tas var būt noderīgi, ja *SQLite* tiek izmantots Web pielikumos, jo samazinātas maksimālās vērtības var novērst DoS uzbrukumus no neuzticamiem ārējiem klientiem.

## Izmantošana
*SQLite* bibliotēka ir uzrakstīta izmantojot C, kā arī eksistē saikne arī ar lielu skaitu citām programmēšanas valodām, tostarp C++, Java, C#, VB.NET, Python, Perl, PHP, Tcl, Ruby, Haskell, Schema, Smalltalk, Lua un Parser, kā arī ar daudzām citām valodām.

Vienkāršība un ērtā *SQLite* implementēšana noveda pie fakta, ka tā tiek izmantota pārlūkprogrammās, mūzikas atskaņotājos un daudzās citās programmās.

*SQLite* pielieto:

* Adobe Integrated Runtime – vide pielikumu palaišanai;
* Gears;
* XUL platforma;
* Skype;
* Daži Garmin GPS navigatoru modeļi;
* Android API.

Daudzas programmas atbalsta SQLite, kā datu uzglabāšanas formātu (jo īpaši Mac OS un IPHONE OS, Android), to skaitā:

* 1C;
* Adobe Photoshop Lightroom;
* FlylinkDC++;
* AIMP;
* Banshee;
* Eserv;
* F-Spot;
* FAR Manager (sākot ar 3.0 versiju);
* Gajim;
* Miranda IM;
* Money IQ;
* Mozilla Firefox;
* Opera (sākot ar 10.50 versiju);
* QutIM;
* Safari;
* XnView.

## Ārējās saites