SQLite
SQLite | |
Fejlesztő | D. Richard Hipp |
Legfrissebb stabil kiadás | 3.47.1 (stabil verzió, 2024. november 25.)[1] |
Programozási nyelv | C |
Operációs rendszer | platformfüggetlen |
Kategória | adatbázis-kezelő rendszer |
Licenc | közkincs |
A SQLite weboldala |
Az SQLite önálló, kis méretű (kb. 500 KiB), C forrású programkönyvtárként (library) megvalósított ACID-kompatibilis relációs adatbázis-kezelő rendszer, illetve adatbázismotor.
A kliens-szerver architektúrájú adatbázis-kezelő rendszerekkel ellentétben az SQLite motor nem egy különálló folyamat, amellyel a program kommunikál, hanem a program részét alkotja, ahhoz hozzálinkelt programkönyvtár lévén. Dinamikusan is meghívható. A program így függvényhívásokon keresztül használhatja az SQLite lehetőségeit, funkcionalitását, és ez csökkenti az adatbázis eléréséhez szükséges várakozási időt (latency), mivel a függvényhívások egyszerűen gyorsabbak, mint a folyamatok közötti kommunikáció (inter-process communication). A teljes adatbázis (definíciók, táblák, indexek és maguk az adatok is) egyetlen platformfüggetlen fájlban tárolódik a programot futtató számítógépen. Ez az egyszerű felépítés azon alapul, hogy a zárolási technika (locking) az egész adatbázis-állományt zárolja egy tranzakció kezdetekor.
A szoftvert D. Richard Hipp tervezte és alkotta meg. Az SQLite forráskódja nyílt, közkincsnek számít.
Egyre több népszerű szoftver használja az SQLite-ot, például a Mozilla Firefox újabb verziói a konfigurációs adatokat, könyvjelzőket, sütiket tárolják SQLite adatbázisban.[2] Vektorgrafikus formában tárolt téradatok kezelését és geoadatokon végzett térbeli műveleteket biztosító kiterjesztése a SpatiaLite.
Jellemzői
[szerkesztés]Az SQLite megvalósítja az SQL-92 szabvány nagy részét, így pl. részlegesen támogatja a triggereket és a legtöbb komplex / összetett lekérdezést, de a referenciális integritási kényszerek használatát csak a 3.6.19 verziótól kezdődően támogatja.[3]
Az SQLite nem alkalmazza a hagyományos SQL rendszerekben megszokott szigorú mezőtípus-kezelést: egy adattípus nem egy tábla oszlopaihoz, hanem az egyedi értékekhez van hozzárendelve, más szóval dinamikus típuskezelést használ. Emellett a Perlre emlékeztető gyengén típusos adatkezelés található benne: a mezőknek típus helyett affinitásuk (preferált típus) van. Például string típusú adat beilleszthető integer affinitású oszlopba; ha az SQLite sikeresen tudja konvertálni integerré, akkor úgy tárolja, egyébként meghagyja az adat eredeti típusát.[4] Ez nagyobb rugalmasságot ad az oszlopoknak, ami hasznos lehet dinamikus típuskezelésű script-nyelvekben való alkalmazás esetén, azonban ez a technika nem vihető át más SQL adatbázis-kezelőkbe. A szigorúan típusos oszlopokat szimulálhatjuk az egyes mezőkre megadott megszorításokkal.[5]
Az SQLite-ot kis erőforrásigényű rendszernek tervezték. A lefordított bináris könyvtár mérete (megfelelő paraméterezéssel) 500KiB alá is szorítható, annak ellenére, hogy a kód különböző architektúrák széles skáláján lefordítható.[6]
Ugyanazt az adatbázist több processz és szál használhatja egyidejűleg problémamentesen. Az olvasási kérelmek kiszolgálása párhuzamosan történik. Az írási kérelmek végrehajtása akkor történik meg, amikor nincs folyamatban más kérelem kiszolgálása, egyébként az írási kérelem sikertelen lesz és hibakóddal tér vissza, illetve lehetőség van egy beállítható várakozási idő elteltével a kérelem ismétlésére. Ez a konkurens hozzáférési állapot megváltozhat ideiglenes táblák használata esetén.
Különálló program – az sqlite3 – segítségével kezelhetők az adatbázisok (adatbázisok és táblák létrehozása, SQL utasítások). Mivel ennek a forráskódja is nyílt, gyakorlati példaként szolgálhat egyéb SQLite könyvtárat használó alkalmazások írásához.
Az SQLite számos programnyelvből és fejlesztőkörnyezetből használható, így BASIC, C, C++, Common Lisp, Java, C#, Visual Basic .NET, Delphi, Free Pascal, Curl, Lua, Tcl, R, PHP, Perl, Ruby, Objective-C (Mac OS X-en), Python, newLisp, Haskell, OCaml, Smalltalk és Scheme nyelvekhez rendelkezik illesztőfelülettel. Létezik COM (ActiveX) burkolat (wrapper) is, amelynek segítségével a Windowsban használható script-nyelvekből (pl. JavaScript, VBScript) is elérhető a SQLite, ezáltal adatbázis-kezelési lehetőségek adhatók a HTML alkalmazásokhoz.[7]
Az SQLite a szöveg típusú adatokat belsőleg alapértelmezetten UTF-8-ban tárolja, de az API UTF-16 kódolású stringekkel is megbirkózik. Csak bináris típusú rendezést (collation) valósították meg (a bináris rendezés egyúttal alkalmazható ASCII stringek rendezésére is), de a célunknak (adott esetben saját nyelvünknek) megfelelő rendező függvényt is bejegyezhetünk, melyet nekünk kell implementálnunk (vagy más library ilyen lehetőségét felhasználnunk).[8]
További olvasmányok
[szerkesztés]- Owens, Michael. The Definitive Guide to SQLite. Apress (2006). ISBN 978-1-59059-673-9
- SQLite Tutorial An article exploring the power and simplicity of SQLite.
Jegyzetek
[szerkesztés]- ↑ SQLite Release 3.47.1 On 2024-11-25, 2024. november 25. (Hozzáférés: 2024. november 26.)
- ↑ Archivált másolat. [2014. október 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. január 30.)
- ↑ SQLite Foreign Key Support. [2011. június 29-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. június 30.)
- ↑ Datatypes In SQLite Version 3. [2015. december 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. december 31.)
- ↑ A nem dokumentált 'strict' üzemmód még fejlesztés alatt áll.
- ↑ Az SQLite könyvtár mérete. [2015. február 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. szeptember 14.)
- ↑ sqlite - Sqlite Wrappers. [2009. február 5-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. január 30.)
- ↑ [1]