Zdvihnite kapotu väčšiny obchodných aplikácií a odhalíte spôsob, ako ukladať a používať štruktúrované dáta. Či už ide o aplikáciu na strane klienta, aplikáciu s webovým rozhraním alebo aplikáciu na okraji zariadenia, je pravdepodobné, že potrebuje nejakú vloženú databázu.
SQLite je integrovateľná otvorená databáza s otvoreným zdrojovým kódom, napísaná v jazyku C a dotazovateľná s konvenčným SQL, ktorá je navrhnutá tak, aby pokrývala tieto prípady použitia a ďalšie. Program SQLite je navrhnutý tak, aby bol rýchly, prenosný a spoľahlivý, či už ukladáte iba kilobajty dát, alebo viacgigabajtové objekty BLOB.
Kde môžete použiť SQLite
Jednou z najväčších výhod spoločnosti SQLite je, že môže bežať takmer kdekoľvek. SQLite bol portovaný na širokú škálu platforiem: Windows, MacOS, Linux, iOS, Android a ďalšie. Najmä používatelia systému Windows môžu používať predkompilované binárne súbory pre bežné programy Win32, UWP, WinRT a .Net. Nech už je pre vašu aplikáciu cieľ nasadenia akýkoľvek, existuje šanca, že pre ňu bude k dispozícii vydanie SQLite alebo spôsob, ako do tohto cieľa preniesť zdrojový kód C.
Aplikácie, ktoré používajú SQLite, nemusia byť napísané v žiadnom konkrétnom jazyku, pokiaľ existuje spôsob, ako viazať a pracovať s externými knižnicami napísanými v jazyku C. Binárne súbory SQLite sú samostatné, takže ich nasadenie nevyžaduje nijaké zvláštne kúzlo - dajú sa jednoducho vložiť do rovnakého adresára ako aplikácia.
Mnoho jazykov má väzby na vysokej úrovni pre SQLite ako knižnicu a môžu ich použiť v spojení s inými vrstvami prístupu do databázy pre daný jazyk. Napríklad Python spája knižnicu SQLite ako prvok štandardného vydania so sériovou verziou tlmočníka Pythonu. Tretie strany navyše napísali širokú škálu ORM a dátových vrstiev, ktoré používajú SQLite, takže sa nemusíte zasekávať v prístupe k SQLite prostredníctvom surových reťazcov SQL (čo je nielen neohrabané, ale aj potenciálne nebezpečné).
Nakoniec je zdrojový kód pre SQLite voľným dielom, takže ho možno opätovne použiť v iných programoch bez praktických obmedzení.
Výhody SQLite
Najbežnejším a zrejmým prípadom použitia pre SQLite slúži ako konvenčná, tabuľkovo orientovaná relačná databáza. SQLite podporuje transakcie a atómové správanie, takže zlyhanie programu alebo dokonca výpadok napájania vás nenechá poškodenou databázou.
SQLite obsahuje funkcie, ktoré sa nachádzajú v databázach vyšších štandardov, ako napríklad fulltextové indexovanie a podpora údajov JSON. Aplikačné údaje zvyčajne plnené do pološtruktúrovaných formátov ako YAML alebo XML je možné ukladať ako tabuľky SQLite, čo umožňuje ľahší prístup k údajom a ich rýchlejšie spracovanie.
SQLite tiež poskytuje rýchly a výkonný spôsob ukladania konfiguračných údajov programu. Namiesto analýzy formátu súboru, ako je YAML, môže vývojár použiť SQLite ako rozhranie k týmto súborom - často oveľa rýchlejšie ako pri ich manuálnom použití. SQLite môže pracovať s údajmi v pamäti alebo externými súbormi (napr. Súbormi CSV), akoby išlo o natívne databázové tabuľky, čo poskytuje praktický spôsob dotazovania na tieto údaje.
Pretože SQLite je samostatný samostatný binárny súbor, je ľahké ho nasadiť pomocou aplikácie a podľa potreby ju s ňou presunúť. Každá databáza vytvorená programom SQLite tiež obsahuje jeden súbor, ktorý je možné zhutniť alebo optimalizovať pomocou príkazov SQL.
Binárne rozšírenia tretích strán pre SQLite pridávajú ešte viac funkcií. SQLCipher pridáva 256-bitové šifrovanie AES do súborov databázy SQLite. Ďalší, SQLite-Bloomfilter, vám umožňuje vytvárať filtre kvetov z údajov v danom poli.
Mnoho ďalších projektov tretích strán poskytuje ďalšie nástroje pre SQLite, napríklad rozšírenie Visual Studio Code, ktoré umožňuje prehliadanie databáz z Visual Studio Code, alebo interaktívny príkazový riadok LiteCLI pre SQLite. Vybraný zoznam zdrojov SQLite na GitHub obsahuje oveľa viac.
SQLite vs. MySQL
SQLite sa najčastejšie porovnáva s MySQL (alebo MariaDB) - široko používaným databázovým produktom s otvoreným zdrojovým kódom, ktorý je základom súčasných zásobníkov aplikácií. Aj keď by sa SQLite mohlo podobať na MySQL, je potrebné tieto dve databázy od seba oddeliť - a v závislosti od prípadu použitia existuje dobrý dôvod uprednostňovať jednu pred druhou.
Dátové typy
SQLite má relatívne málo dátových typov - BLOB, NULL, INTEGER a TEXT. MySQL (alebo MariaDB) má na druhej strane vyhradené dátové typy pre dátumy a časy, rôzne presnosti celých čísel a floatov a oveľa viac.
Ak ukladáte relatívne málo dátových typov alebo chcete na overenie údajov použiť svoju dátovú vrstvu, je užitočný nástroj SQLite. Ak však chcete, aby vaša dátová vrstva poskytovala svoje vlastné overenie a normalizáciu, použite MySQL (alebo MariaDB).
Konfigurácia a ladenie
Možnosti konfigurácie a vyladenia servera SQLite sú minimálne. Väčšina interných príznakov alebo príkazových riadkov pre SQLite sa zaoberá okrajovými prípadmi alebo spätnou kompatibilitou. To zapadá do celkovej filozofie jednoduchosti spoločnosti SQLite: Urobte predvolené možnosti tak, aby vyhovovali najbežnejším prípadom použitia.
MySQL (alebo MariaDB) má skutočnú štruktúru možností konfigurácie špecifických pre databázu a inštaláciu - porovnávanie, indexovanie, ladenie výkonu atď. Toto množstvo možností je výsledkom toho, že MySQL ponúka oveľa viac funkcií. Možno budete musieť vylepšiť MySQL, ale je to pravdepodobné, pretože sa v prvom rade snažíte dokázať viac.
Databáza pre jedného používateľa a pre viacerých používateľov
SQLite je najvhodnejší pre aplikácie s jedným súbežným používateľom, ako je napríklad počítač alebo mobilná aplikácia. MySQL a MariaDB sú navrhnuté tak, aby zvládli viac súbežných používateľov. MySQL a MariaDB môžu tiež poskytovať klastrované a škálovateľné riešenia, zatiaľ čo SQLite nie.
SQLite vs. vložené databázy
SQLite nie je ani zďaleka jedinou vložiteľnou databázou. Mnoho ďalších poskytuje podobné funkcie, ale zdôrazňujú rôzne prípady použitia alebo modely nasadenia.
- Apache Derby: Integrovateľný modul SQL, ktorý Oracle tiež prebalí ako Java DB. Pretože je Derby napísaný v jazyku Java a vyžaduje JVM, je navrhnutý hlavne na zabudovanie do aplikácií Java.
- Firebird Embedded: Databáza Firebird, ktorá beží na viacerých platformách a ponúka mnoho špičkových funkcií, je k dispozícii ako knižnica, ktorú je možné vložiť do klientskej aplikácie. Jeho sada funkcií sa porovnáva dobre s SQLite, ale SQLite má oveľa väčšiu komunitu používateľov a základňu podpory.
- Ríša: Vysoko výkonná relačná databáza určená pre mobilné prostredia, hlavne Android, ale môže podporovať aj desktopové prostredia ako Windows. Realm je však založený na objektoch a nepoužíva dotazy SQL - dobré, ak radšej nepoužívate SQL, ale zlé, ak je SQL známy a pohodlný.
- VistaDB: Vložená databáza pre runtime .Net. VistaDB je k dispozícii vo verziách špecifických pre rôzne príchute a inkarnácie siete .Net a s mnohými podnikovými funkciami, ako je šifrovanie celej databázy. Je to však komerčný produkt, nie otvorený zdroj.
- Berkeley DB: Projekt Oracle, nominálne úložisko kľúčov / hodnôt, ale ten, ktorý v posledných vydaniach používa SQLite ako spôsob spracovania dotazov SQL. Základný databázový stroj Berkeley DB má vylepšenia výkonu, ktorým sa SQLite nemôže vyrovnať, napríklad schopnosť zvládnuť viac operácií súčasného zápisu.
Kedy nepoužívať SQLite
Vďaka dizajnovým možnostiam produktu SQLite sa tento model hodí pre niektoré scenáre, ale pre ostatné naopak zle. Tu sú niektoré miesta, kde SQLite nefunguje dobre:
- Aplikácie, ktoré používajú funkcie SQLite, nepodporujú. SQLite nepodporuje a v mnohých prípadoch sa nebude snažiť podporovať množstvo funkcií relačnej databázy. Mnohé sú rohové prípady, ale dokonca jeden z nich môže dohodu porušiť.
- Aplikácie, ktoré si vyžadujú škálovateľný dizajn. Inštancie SQLite sú jednotlivé a nezávislé, medzi ktorými nie je žiadna natívna synchronizácia. Nemôžu byť združené dohromady alebo vytvorené do klastra. Žiadna softvérová aplikácia, ktorá používa škálovateľný dizajn, nemôže používať SQLite.
- Aplikácie so súčasnými operáciami zápisu z viacerých pripojení. SQLite uzamkne databázu na operácie zápisu, takže čokoľvek, čo zahŕňa viacnásobné operácie súčasného zápisu, môže mať za následok problémy s výkonom. Aplikácie s viacnásobným súčasným čítaním sú však vo všeobecnosti rýchle. Program SQLite 3.7.0 a vyšší poskytuje režim zapisovania dopredu, aby viac zápisov fungovalo rýchlejšie, prichádza však s určitými obmedzeniami. Za alternatívu sa považuje vyššie uvedená spoločnosť Berkeley DB.
- Aplikácie, ktoré vyžadujú silné zadávanie údajov. SQLite má relatívne málo dátových typov - napríklad žiadny natívny typ datetime. To znamená, že vynútenie týchto typov bude musieť vybaviť aplikácia. Ak chcete, aby databáza na rozdiel od aplikácie normalizovala a obmedzila vstupy pre hodnoty dátumu a času, nemusí pre vás SQLite fungovať.