SQLite

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. május 9-én felülvizsgált verziótól ; az ellenőrzések 52 szerkesztést igényelnek .
SQLite
Típusú szerver nélküli relációs adatbázis-kezelő rendszer [d]
Fejlesztő Richard Hipp [d]
Beírva C [2]
Operációs rendszer platformközi
Első kiadás 2000. augusztus
legújabb verzió
Olvasható fájlformátumok SQLite adatbázis fájlformátum [d] , SQLite 3.x adatbázis [d] és SQLite rollbak napló [d]
Generált fájlformátumok SQLite adatbázis fájlformátum [d] , SQLite 3.x adatbázis [d] , SQLite Zipvfs tömörített adatbázis [d] és SQLite rollbak napló [d]
Engedély 🅮 [d] [3]
Weboldal sqlite.org
 Médiafájlok a Wikimedia Commons oldalon

Az SQLite ( / ˌ ɛ s ˌ k juː ˌ ɛ l ˈ aɪ t / , [4] [5] / ˈ s k w ə ˌ la t / [6] ) egy kompakt beágyazott DBMS . A könyvtár forráskódja nyilvánosságra került . 2005 -ben a projekt elnyerte a Google-O'Reilly Open Source Awards díjat [7] .

Eszköz

Az "embedded" ( eng.  embedded ) szó azt jelenti, hogy az SQLite nem használja a kliens-szerver paradigmát , vagyis az SQLite motor nem egy különálló munkafolyamat, amellyel a program interakcióba lép, hanem egy könyvtár , amelyhez a program kapcsolódik. , és a motor a programok szerves részévé válik. Így az SQLite könyvtár függvényhívásait ( API ) használják csereprotokollként. Ez a megközelítés csökkenti az általános költségeket, a válaszidőt és leegyszerűsíti a programot. Az SQLite a teljes adatbázist (beleértve a definíciókat, táblákat, indexeket és adatokat) egyetlen szabványos fájlban tárolja azon a gépen, amelyen a program fut. A megvalósítás egyszerűsége annak köszönhető, hogy az írási tranzakció végrehajtásának megkezdése előtt az adatbázist tároló teljes fájl blokkolva van; Az ACID funkciók többek között naplófájl létrehozásával érhetők el.

Egyidejűleg több folyamat vagy szál is képes gond nélkül kiolvasni az adatokat ugyanabból az adatbázisból. Az adatbázisba csak akkor lehet írni, ha jelenleg nincs más kérés kiszolgálása; ellenkező esetben az írási kísérlet meghiúsul, és a program egy hibakódot küld vissza. Az események fejlesztésének másik lehetősége a rögzítési kísérletek automatikus megismétlése egy meghatározott időintervallumon belül.

A csomag egy funkcionális kliens részt is tartalmaz egy végrehajtható sqlite3 fájl formájában , amely bemutatja a fő könyvtár funkcióinak megvalósítását. Az ügyfél rész egy többplatformos parancssori segédprogram .

Az SQLite beágyazott rendszereken és dedikált, gigabájtos adattömbökkel rendelkező gépeken egyaránt használható.

Adattípusok

Az SQLite támogatja a dinamikus adatbevitelt. A lehetséges értéktípusok: INTEGER, REAL, TEXTés BLOB. A speciális érték szintén támogatott NULL. [nyolc]

A TEXT és BLOB értékek méretét semmi sem korlátozza, kivéve SQLITE_MAX_LENGTHaz SQLite forrásokban egy milliárdnak megfelelő állandót (10 9 ) [9] .

Bármely rekord bármely mezőjében minden érték a fenti típusok bármelyikébe tartozhat, függetlenül a tábla mezőinek deklarálásakor megadott típustól. A mező deklarálásakor megadott típust a rendszer referenciaként tárolja az eredeti írásmódjában, és alapul szolgál a preferenciák kiválasztásához (úgynevezett "típusaffinitás": ez a megközelítés ritkán található meg más DBMS-ekben) implicit típuskonverziók végrehajtásakor. ennek a típusnévnek az SQLite-ban ismert bármihez való hasonlósága alapján. Ez az algoritmus kiterjedt listát tartalmaz a más DBMS-ekben alkalmazott adattípusnevek változatairól. Ha egy írási értéket nem lehet biztonságosan átalakítani a preferált típusra, az SQLite az értéket az eredeti formájában írja ki. Ahhoz, hogy értékeket kapjunk az adatbázisból, mindegyik típushoz számos függvény tartozik, és ha a tárolt érték típusa nem egyezik a kért értékkel, akkor lehetőség szerint át is konvertáljuk. [tíz]

Korlátozások

Az SQLite régi verzióit megkötés nélkül tervezték, csak az volt a feltétel, hogy az adatbázis elférjen a memóriában, amelyben minden számítás 32 bites egész számokkal történt. Ez bizonyos problémákat okozott. Mivel a felső határértékek nincsenek meghatározva és megfelelően tesztelve, gyakran találtak hibákat az SQLite meglehetősen szélsőséges körülmények között történő használatakor. Ezért az SQLite újabb verziói korlátokat vezettek be, amelyeket most az általános tesztkészlettel együtt ellenőriznek.

Az SQLite könyvtár fordítása során a következő korlátok kerülnek beállításra, amelyek szükség esetén növelhetők:

Leírás Jelentése Állandó a forráskódban
Egy karakterlánc vagy BLOB mező maximális hossza 1 000 000 000 SQLITE_MAX_LENGTH
Az oszlopok maximális száma 2000 SQLITE_MAX_COLUMN
Egy SQL utasítás maximális hossza 1 000 000 000 SQLITE_MAX_SQL_LENGTH
A táblák maximális száma a JOIN funkcióval rendelkező kifejezésekben 64
Kifejezési fa maximális mélysége 1000 SQLITE_MAX_EXPR_DEPTH
A függvény argumentumainak maximális száma 127 SQLITE_MAX_FUNCTION_ARG
A kifejezések maximális száma a SELECT funkcióval kombinált kifejezésben 500 SQLITE_MAX_COMPOUND_SELECT
A minta maximális hossza a LIKE vagy a GLOB operátorok argumentumaként 50 000 SQLITE_MAX_LIKE_PATTERN_LENGTH
Helyőrző karakterek maximális száma egy SQL utasításban 999 SQLITE_MAX_VARIABLE_NUMBER
Maximális trigger rekurziós mélység 1000 SQLITE_MAX_TRIGGER_DEPTH
Maximális számú csatlakoztatott alap tíz SQLITE_MAX_ATTACHED
Az adatbázis maximális oldalmérete 65 536 SQLITE_MAX_PAGE_SIZE
Oldalak maximális száma egy adatbázisfájlban 1 073 741 823 SQLITE_MAX_PAGE_COUNT

A 3.37.0 verziótól kezdve az SQLITE_MAX_PAGE_SIZE érték nem lehet nagyobb, mint az alapértelmezett érték, amely kifejezetten szerepel a forráskódban. Az adatbázis maximális oldalszáma 4294967294. Így az adatbázis maximális mérete 1,4e+14 bájt (281 decimális terabájt vagy 256 TiB ). [tizenegy]

Néhány korlát lefelé módosítható futás közben egy kategória és az sqlite3_limit() függvény megfelelő értékének megadásával :

int sqlite3_limit ( sqlite3 * , int id , int newVal )
Kategória Leírás
SQLITE_LIMIT_LENGTH Bármely karakterlánc vagy BLOB mező vagy sor maximális hossza
SQLITE_LIMIT_SQL_LENGTH Maximális SQL utasítás hossza
SQLITE_LIMIT_COLUMN Oszlopok maximális száma egy táblázatdefinícióban, vagy válassza ki az eredményt vagy indexet vagy kifejezéseket ORDER BY vagy GROUP BY záradékkal
SQLITE_LIMIT_EXPR_DEPTH Bármely kifejezés elemzett fa maximális mélysége
SQLITE_LIMIT_COMPOUND_SELECT A kifejezések maximális száma a SELECT funkcióval kombinált kifejezésben
SQLITE_LIMIT_VDBE_OP Egy végrehajtható SQL utasítás virtuálisgép -program utasításainak maximális száma
SQLITE_LIMIT_FUNCTION_ARG A függvény argumentumainak maximális száma
SQLITE_LIMIT_ATTACHED Maximális számú csatlakoztatott alap
SQLITE_LIMIT_LIKE_PATTERN_LENGTH A minta maximális hossza a LIKE vagy a GLOB operátorok argumentumaként
SQLITE_LIMIT_VARIABLE_NUMBER Egy SQL-utasításban a köthető változók maximális száma
SQLITE_LIMIT_TRIGGER_DEPTH Maximális trigger rekurziós mélység

Ez hasznos lehet, ha az SQLite-ot webalkalmazásokban használják , mivel a csökkentett korlátok megakadályozhatják a nem megbízható külső ügyfelektől érkező DoS-támadásokat .

Használat

Maga az SQLite könyvtár C nyelven van írva ; számos kötés létezik más programozási nyelvekhez, köztük Apple Swift, Delphi , C++ , Java , C# , VB.NET , Python , Perl , Node.js , PHP , PureBasic [12] , Tcl (a Tcl-lel való munkavégzéshez szükséges eszközöket a csomag tartalmazza SQLite-tal), Ruby , Haskell , Scheme , Smalltalk , Lua és Parser , és még sok más. A meglévő eszközök teljes listája elérhető a projekt oldalán [13] .

Az SQLite beágyazásának egyszerűsége és kényelme oda vezetett, hogy a könyvtárat böngészőkben , zenelejátszókban és sok más programban használják.

Az SQLite-t különösen a következőkben használják:

Számos program támogatja az SQLite-ot adattárolási formátumként (különösen Mac OS és iOS , Android rendszeren ), többek között:

Lásd még

Jegyzetek

  1. SQLite 3.39.4 kiadás, 2022-09-29 - 2022.
  2. Az sqlite nyílt forráskódú projekt az Open Hubon: Nyelvek oldala - 2006.
  3. https://www.sqlite.org/copyright.html
  4. " Miért sikerült az SQLite adatbázisként? Richard Hipp, az SQLite megalkotója ". A Változásnapló . 201. epizód. Az esemény időpontja: 00:17:25. Azt mondom, SQL-ite, mint egy ásvány."
  5. D. Richard Hipp (előadó). Bevezetés az SQLite -be (videó). Google Inc. A forrás kezdetétől számított idő: 00:01:14. "[...]ess-kju-elite [...]"
  6. D. Richard Hipp (előadó). Bevezetés az SQLite-be . Google Inc.. A forrás kezdetétől számított idő: 00:48:15. "[...]folytatás [...]"
  7. Google-O'Reilly Open Source Awards - Hírességek Csarnok - Google Code . Letöltve: 2010. március 5. Az eredetiből archiválva : 2011. július 11..
  8. Archivált másolat (a hivatkozás nem elérhető) . Letöltve: 2019. március 11. Az eredetiből archiválva : 2019. február 13.    (Angol)
  9. ↑ Megvalósítási korlátok az SQLite számára . Letöltve: 2018. november 23. Az eredetiből archiválva : 2019. január 8..
  10. Archivált másolat (a hivatkozás nem elérhető) . Letöltve: 2019. március 11. Az eredetiből archiválva : 2019. március 10.    (Angol)
  11. Az SQLite megvalósítási korlátai . Letöltve: 2021. december 8. Az eredetiből archiválva : 2021. november 7..
  12. UseSQLiteDatabase() függvény . Letöltve: 2013. szeptember 28. Az eredetiből archiválva : 2013. október 2..
  13. SQLite-kötések listája más nyelvekhez (lefelé irányuló kapcsolat) . Letöltve: 2007. április 4. Az eredetiből archiválva : 2009. február 5.. 
  14. sqlite-manager – Projekttárhely a Google Code-on . Letöltve: 2010. március 5. Az eredetiből archiválva : 2010. február 9..
  15. Skype kliens SQLite-ot használ? (nem elérhető link) . Letöltve: 2010. május 7. Az eredetiből archiválva : 2014. szeptember 28.. 
  16. sqlite1c – Projekttárhely a Google Code-on . Letöltve: 2008. augusztus 5. Az eredetiből archiválva : 2009. április 12..
  17. Hogyan fejlesztettük a regisztrációs naplót ? 1C (2013. október 29.). Letöltve: 2014. július 1. Az eredetiből archiválva : 2014. augusztus 27..
  18. dbRW Database Driver 1.2 Archiválva : 2011. május 1.

Linkek