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:

AprakstsVērtībaKonstante izejāMaksimālais līniju garums vai BLOB lauks1000000000SQLITE_MAX_LENGTHMaksimālais kolonnu skaits2000SQLITE_MAX_COLUMNMaksimālais SQL ekspresijas garums1.000.000SQLITE_MAX_SQL_LENGTHMaksimālais tabulu skaits ekspresijā ar JOIN64Maksimālais izteiksmes koka dziļums1000SQLITE_MAX_EXPR_DEPTHMaksimālais argumentu skaits funkcijā100SQLITE_MAX_FUNCTION_ARGMaksimālais termu skaits apvienotajās izteiksmi ar SELECT500SQLITE_MAX_COMPOUND_SELECTMaksimālais šablona garums kā argumentam operatoros LIKE vai GLOB50 000SQLITE_MAX_LIKE_PATTERN_LENGTHMaksimālais aizstājējzīmju skaits vienā SQL izteiksmē999SQLITE_MAX_VARIABLE_NUMBERMaksimālais trigeru dziļums1000SQLITE_MAX_TRIGGER_DEPTHMaksimālais  pievienoto datu bāzu skaits10SQLITE_MAX_ATTACHEDMaksimālais datubāzes lapas apjoms32 768SQLITE_MAX_PAGE_SIZEMaksimālais lappušu skaits datubāzes failā1073741823SQLITE_MAX_PAGE_COUNT 

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)

 Kategorija  Apraksts SQLITE_LIMIT_LENGTH  Maksimālais jebkuras rindas vai BLOB lauka garums SQLITE_LIMIT_SQL_LENGTH  Maksimālais garums SQL izteiksmei SQLITE_LIMIT_COLUMN  Maksimālais kolonnu skaits tabulās, vai indeksos, vai izteiksmēs ar ORDER BY vai GROUP BY operandiem SQLITE_LIMIT_EXPR_DEPTH  Maksimālais dziļums jebkurai izteiksmei, SQLITE_LIMIT_COMPOUND_SELECT  Maksimālais termu skaits apvienotajās izteiksmi ar  SELECT SQLITE_LIMIT_VDBE_OP  Maksimālais  virtuālās mašīnas programma instrukciju skaits izpildot SQL izteiksmes SQLITE_LIMIT_FUNCTION_ARG  Maksimālais funkciju argumentu skaits SQLITE_LIMIT_ATTACHED  Maksimālais pievienoto datu bāzu skaits SQLITE_LIMIT_LIKE_PATTERN_LENGTH  Maksimālais šablona garums kā argumentam operatoros LIKE vai GLOB SQLITE_LIMIT_VARIABLE_NUMBER  Maksimālais SQL izteiksmes mainīgo skaits, kas var būt saistīti SQLITE_LIMIT_TRIGGER_DEPTH  Maksimālais trigeru dziļums 

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 

Kategorija:Datubāzu pārvaldības sistēmas
Kategorija:Iegultās datubāzes