Programování

Proč byste měli používat SQLite

Zvedněte kapotu u většiny obchodních aplikací a odhalíte způsob, jak ukládat a používat strukturovaná data. Ať už se jedná o klientskou aplikaci, aplikaci s webovým front-endem nebo aplikaci pro okrajové zařízení, je pravděpodobné, že potřebuje nějakou vloženou databázi.

SQLite je integrovatelná databáze s otevřeným zdrojovým kódem, napsaná v jazyce C a dotazovatelná konvenčním SQL, která je navržena tak, aby pokryla tyto případy použití a další. SQLite je navržen tak, aby byl rychlý, přenosný a spolehlivý, ať už ukládáte pouze kilobajty dat nebo vícegigabajtové objekty BLOB.

Kde můžete použít SQLite

Jednou z největších výhod SQLite je, že může běžet téměř kdekoli. SQLite byl přenesen na širokou škálu platforem: Windows, MacOS, Linux, iOS, Android a další. Zejména uživatelé Windows mohou používat předkompilované binární soubory pro běžné Win32, UWP, WinRT a .Net. Ať už je pro vaši aplikaci cíl nasazení jakýkoli, je pravděpodobné, že je pro ni k dispozici edice SQLite nebo způsob, jak do tohoto cíle přenést zdrojový kód C.

Aplikace, které používají SQLite, nemusí být psány v žádném konkrétním jazyce, pokud existuje nějaký způsob, jak svázat a pracovat s externími knihovnami napsanými v C. Binární soubory SQLite jsou samostatné, takže k nasazení nevyžadují žádnou zvláštní magii - mohou být jednoduše vloženy do stejného adresáře jako aplikace.

Mnoho jazyků má pro SQLite jako knihovnu vazby na vysoké úrovni a lze je použít ve spojení s dalšími vrstvami přístupu k databázi pro daný jazyk. Například Python spojuje knihovnu SQLite jako prvek standardního vydání se standardní verzí tlumočníka Pythonu. Třetí strany navíc vytvořily širokou škálu ORM a datových vrstev, které používají SQLite, takže nebudete mít problém s přístupem k SQLite prostřednictvím surových řetězců SQL (což je nejen neohrabané, ale také potenciálně nebezpečné).

Nakonec je zdrojový kód pro SQLite public domain, takže jej lze znovu použít v jiných programech bez praktických omezení.

Výhody SQLite

Nejběžnějším a zřejmým případem použití pro SQLite slouží jako konvenční relační databáze orientovaná na tabulku. SQLite podporuje transakce a atomové chování, takže selhání programu nebo dokonce výpadek napájení vám nezanechá poškozenou databázi.

SQLite má funkce nalezené ve vyšších databázích, jako je fulltextové indexování a podpora dat JSON. Aplikační data typicky plněná do polostrukturovaných formátů, jako je YAML nebo XML, lze ukládat jako tabulky SQLite, což umožňuje snadnější přístup k datům a rychlejší zpracování.

SQLite také poskytuje rychlý a výkonný způsob ukládání konfiguračních dat programu. Místo analýzy formátu souboru, jako je YAML, může vývojář použít SQLite jako rozhraní k těmto souborům - často mnohem rychleji, než aby na nich pracoval ručně. SQLite může pracovat s daty v paměti nebo externími soubory (např. Soubory CSV), jako by šlo o nativní databázové tabulky, což poskytuje praktický způsob dotazování těchto dat.

Protože SQLite je samostatný samostatný binární soubor, je snadné jej nasadit pomocí aplikace a podle potřeby ji pomocí aplikace přesunout. Každá databáze vytvořená společností SQLite také obsahuje jeden soubor, který lze zhutnit nebo optimalizovat pomocí příkazů SQL.

Binární rozšíření třetích stran pro SQLite přidávají ještě více funkcí. SQLCipher přidává 256bitové šifrování AES do souborů databáze SQLite. Další, SQLite-Bloomfilter, vám umožňuje vytvářet Bloom filtry z dat v daném poli.

Mnoho dalších projektů třetích stran poskytuje další nástroje pro SQLite, například rozšíření Visual Studio Code, které umožňuje procházení databází v rámci Visual Studio Code, nebo interaktivní příkazový řádek LiteCLI pro SQLite. Kurátorský seznam zdrojů SQLite na GitHubu obsahuje mnoho dalších.

SQLite vs. MySQL

SQLite se nejčastěji porovnává s MySQL (nebo MariaDB) - široce používaným databázovým produktem s otevřeným zdrojovým kódem, který je základem dnešních zásobníků aplikací. Jakkoli by se SQLite mohl podobat MySQL, je třeba tyto dvě databáze od sebe oddělit - a dobré důvody pro upřednostňování jedné nad druhou, v závislosti na případu použití.

Typy dat

SQLite má relativně málo datových typů - BLOB, NULL, INTEGER a TEXT. MySQL (nebo MariaDB) má na druhou stranu vyhrazené datové typy pro data a časy, různá přesnost celých čísel a plováků a mnoho dalšího.

Pokud ukládáte relativně málo datových typů nebo chcete použít datovou vrstvu k ověření dat, je SQLite užitečný. Pokud však chcete, aby vaše datová vrstva poskytovala své vlastní ověření a normalizaci, použijte MySQL (nebo MariaDB).

Konfigurace a ladění

Možnosti konfigurace a vyladění SQLite jsou minimální. Většina interních příznaků nebo příznaků příkazového řádku pro SQLite řeší okrajové případy nebo zpětnou kompatibilitu. To odpovídá celkové filozofii jednoduchosti společnosti SQLite: Vytvořte výchozí možnosti vhodné pro většinu běžných případů použití.

MySQL (nebo MariaDB) má opravdovou strukturu konfiguračních možností specifických pro databázi a instalaci - řazení, indexování, ladění výkonu atd. Toto množství možností je výsledkem toho, že MySQL nabízí mnohem více funkcí. Možná budete muset MySQL vyladit více, ale je to pravděpodobné, protože se snažíte udělat více.

Databáze pro jednoho uživatele vs. více uživatelů

SQLite je nejvhodnější pro aplikace s jedním souběžným uživatelem, například pro stolní počítače nebo mobilní aplikace. MySQL a MariaDB jsou navrženy tak, aby zvládly více souběžných uživatelů. MySQL a MariaDB mohou také poskytovat klastrovaná a škálovatelná řešení, zatímco SQLite nikoli.

SQLite vs. vložené databáze

SQLite není zdaleka jediná vložitelná databáze. Mnoho dalších poskytuje podobné funkce, ale zdůrazňují různé případy použití nebo modely nasazení.

  • Apache Derby: Integrovatelný modul SQL, který také Oracle přebalil jako Java DB. Protože Derby je napsáno v Javě a vyžaduje JVM, je navrženo hlavně pro vkládání do Java aplikací.
  • Vestavěný Firebird: Databáze Firebird, která běží na různých platformách a má mnoho špičkových funkcí, je k dispozici jako knihovna, kterou lze vložit do klientské aplikace. Jeho sada funkcí se dobře srovnává s SQLite, ale SQLite má mnohem větší komunitu uživatelů a základnu podpory.
  • Oblast: Vysoce výkonná relační databáze určená pro mobilní prostředí, zejména Android, ale může také podporovat desktopová prostředí, jako je Windows. Realm je však objektově založený a nepoužívá dotazy SQL - dobré, pokud raději nepoužíváte SQL, ale špatné, pokud je SQL známý a pohodlný.
  • VistaDB: Integrovaná databáze pro běhový modul .Net. VistaDB je k dispozici ve verzích specifických pro různé příchutě a inkarnace .Net a s mnoha podnikovými funkcemi, jako je šifrování celé databáze. Je to však komerční produkt, nikoli open source.
  • Berkeley DB: Projekt Oracle, nominálně úložiště klíčů / hodnot, ale takový, který používá SQLite v posledních vydáních jako způsob zpracování dotazů SQL. Základní databázový stroj Berkeley DB má vylepšení výkonu, které SQLite nemůže odpovídat, například schopnost zpracovávat více operací současného zápisu.

Kdy nepoužívat SQLite

Díky volbám designu SQLite se hodí pro některé scénáře, ale pro ostatní špatně. Tady je několik míst, kde SQLite nefunguje dobře:

  • Aplikace využívající funkce SQLite nepodporují. SQLite nepodporuje a v mnoha případech se nebude snažit podporovat řadu funkcí relační databáze. Mnoho z nich je rohových případů, ale dokonce i jeden z nich může dohodu porušit.
  • Aplikace, které vyžadují škálovatelné vzory. Instance SQLite jsou singulární a nezávislé, bez nativní synchronizace mezi nimi. Nelze je spojit dohromady nebo z nich vytvořit klastr. Žádná softwarová aplikace, která používá škálovatelný design, nemůže používat SQLite.
  • Aplikace se současnými operacemi zápisu z více připojení. SQLite uzamkne databázi pro operace zápisu, takže cokoli zahrnující více operací současného zápisu může mít za následek problémy s výkonem. Aplikace s více souběžnými čteními jsou obecně rychlé. SQLite 3.7.0 a vyšší poskytuje režim zápisu dopředu, aby více zápisů fungovalo rychleji, ale přichází s určitými omezeními. Alternativou je Berkeley DB, zmíněná výše.
  • Aplikace, které vyžadují silné zadávání dat. SQLite má relativně málo datových typů - například žádný nativní typ datetime. To znamená, že vynucování těchto typů bude muset zpracovat aplikace. Pokud chcete, aby databáze na rozdíl od aplikace normalizovala a omezovala vstupy pro hodnoty datetime, SQLite pro vás nemusí fungovat.
$config[zx-auto] not found$config[zx-overlay] not found