Pāriet uz saturu

SQLite

Vikipēdijas lapa

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.

Vārds "iegultā" nozīmē, ka SQLite neizmanto klienta-servera paradigmu, ti. 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.

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. Un 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:

Apraksts Vērtība Konstante izejā
Maksimālais līniju garums vai BLOB lauks 1000000000 SQLITE_MAX_LENGTH
Maksimālais kolonnu skaits 2000 SQLITE_MAX_COLUMN
Maksimālais SQL ekspresijas garums 1.000.000 SQLITE_MAX_SQL_LENGTH
Maksimālais tabulu skaits ekspresijā ar JOIN 64
Maksimālais izteiksmes koka dziļums 1000 SQLITE_MAX_EXPR_DEPTH
Maksimālais argumentu skaits funkcijā 100 SQLITE_MAX_FUNCTION_ARG
Maksimālais termu skaits apvienotajās izteiksmi ar SELECT 500 SQLITE_MAX_COMPOUND_SELECT
Maksimālais šablona garums kā argumentam operatoros LIKE vai GLOB 50 000 SQLITE_MAX_LIKE_PATTERN_LENGTH
Maksimālais aizstājējzīmju skaits vienā SQL izteiksmē 999 SQLITE_MAX_VARIABLE_NUMBER
Maksimālais trigeru dziļums 1000 SQLITE_MAX_TRIGGER_DEPTH
Maksimālais pievienoto datu bāzu skaits 10 SQLITE_MAX_ATTACHED
Maksimālais datubāzes lapas apjoms 32 768 SQLITE_MAX_PAGE_SIZE
Maksimālais lappušu skaits datubāzes failā 1073741823 SQLITE_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.

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:

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