SQLite

Software screenshot:
SQLite
Podrobnosti Software:
Verze: 3.24.0 Aktualizováno
Datum uploadu: 22 Jun 18
Vývojka: D. Richard Hipp
Licence: Volný
Popularita: 82

Rating: 5.0/5 (Total Votes: 1)

SQLite je open source, multiplatformní, bezplatná a malá knihovna C, která implementuje samostatný embeddable, transakční, bezserverový a databázový stroj SQL s nulovou konfigurací. Je to světový nejpoužívanější databázový stroj SQL.


Funkce na první pohled

Mezi klíčové funkce patří podpora izolovaných, atomových, trvanlivých a konzistentních transakcí, implementace SQL92, databázové soubory mohou být volně sdíleny mezi počítači, podporovány databáze až 2 terabajty, podpora gibabajtů a strun, malý kód, footprint stejně jako snadno použitelné a velmi jednoduché API (Application Programming Interface).

Navíc SQLite nevyžaduje počáteční konfiguraci ani další správu, dovoluje vývojářům ukládat kompletní databázi do jediného disku, který je ideální pro použití formátů aplikačních souborů, nemá žádné externí závislosti, ve vazbách TCL (Command Language Tool) a komplexní dokumentaci.

Vázání pro řadu dalších programovacích jazyků je k dispozici samostatně. Jeho zdrojový kód je dobře komentován a je dodáván se samostatným klientem CLI (Command-Line Interface), který byl navržen z offsetu pro správu databází SQLite.


Na co jej mohu použít?

Databázový stroj SQLite lze použít pro libovolný účel, osobní nebo komerční. Navrhované použití pro SQLite zahrnují databázi pro gadgety, databázi webových stránek, stand-in pro podnikové RDBMS (relační databázový systém) a formát aplikačního souboru.


Pod kapotou a podporovanými operačními systémy

Distribuce SQLite je dodávána se samostatným programem pro přístup k příkazovému řádku (sqlite), který lze použít k administraci databáze SQLite a který slouží jako příklad použití knihovny SQLite. Je napsán výhradně v programovacím jazyce ANSI-C.

Podporované desktopové operační systémy zahrnují GNU / Linux, Mac OS X a Microsoft Windows. Mezi podporované mobilní operační systémy patří Android a iOS. Byl úspěšně testován s 32bitovými i 64bitovými hardwarovými platformami a snadno přenositelný do jiných operačních systémů.

Co je nového v této verzi:

  • Nejdůležitější informace tohoto vydání zahrnují podporu UPSERT ve stylu PostgreSQL a vylepšený výkon, zejména pro dotazy ORDER BY LIMIT.

Co je nového ve verzi:

  • Využijte schopnosti atomového zápisu v souborovém systému F2FS, pokud jsou k dispozici, a tím výrazně snížit režii transakcí. To v současné době vyžaduje volbu kompilace SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Umožněte příkazům ATTACH a DETACH pracovat uvnitř transakce.
  • Povolit zapisovat virtuální tabulky WITHOUT ROWID, pokud PRIMÁRNÍ KEY obsahuje přesně jeden sloupec.
  • "fsync ()" , k němuž dochází po zápisu záhlaví do WAL resetu, nyní používá nastavení synchronizace pro kontrolní body. To znamená, že bude používat "fullfsync" na makách, pokud je PRAGMA checkpoint_fullfsync zapnut.
  • Funkce sqlite3_sourceid () se pokusí zjistit, zda byl zdrojový kód změněn z toho, co je zaškrtnuto do řízení verzí a zda existují změny, poslední čtyři znaky hash verze jsou zobrazeny jako "alt1" nebo "alt2". Cílem je zjistit náhodné a / nebo neopatrné úpravy. Figurátor může tuto funkci vyvrátit.
  • Zlepšení de-citování názvů sloupců pro příkazy CREATE TABLE AS s agregovaným dotazem na pravé straně.
  • méně "stat ()" systémové volání vydané unixem VFS.
  • Vylepšila optimalizaci LIKE tak, aby fungovala s klauzulem ESCAPE.
  • Vylepšená kontrola PRAGMA integrity_check a PRAGMA quick_check k odhalení obtížné korupce řádků, které dříve chyběly. Také aktualizujte obě pragma, aby se při zaznamenávání poškození v záznamu vrátili chybové zprávy spíše než SQLITE_CORRUPT.
  • Plánovač dotazů nyní dává přednost implementaci podkotů FROM-clause pomocí co-rutin spíše pomocí optimalizace vyrovnávání dotazů. Podpora pro použití ko-rutin pro poddotazy již nemusí být zakázána.
  • Do metody virtuálních tabulek xBestIndex přeneste informace o podmínkách! =, IS, IS NOT, NULL a IS NULL.
  • Vylepšila virtuální tabulku CSV, aby přijala poslední řádek vstupu, pokud chybí poslední znak nové řádky.
  • Odstraňte zřídka používanou "škrábání" alokátor paměti. Nahraďte je konfiguračním nastavením SQLITE_CONFIG_SMALL_MALLOC, které poskytuje SQLitemu náznak, že je třeba vyloučit velké přidělení paměti.
  • Přidána virtuální tabulka rojů do stávajícího rozšíření virtuální tabulky odboru
  • Přidána virtuální tabulka sqlite_dbpage pro přímý přístup ke stránkám databázového souboru. Zdrojový kód je integrován do sloučení a je aktivován pomocí volby kompilace -DSQLITE_ENABLE_DBPAGE_VTAB.
  • Přidejte nový typ virtuální tabulky fts5vocab - "instance" - poskytuje přímý přístup k indexu FTS5 fulltextového indexu na nejnižší možné úrovni.
  • V systému Windows VFS odeberte volání do rand_s (), protože v některých prohlížečích způsobuje problémy ve Firefoxu.
  • Zdrojový kód src / shell.c do shellu příkazového řádku již není pod kontrolou verze. Tento soubor je nyní generován jako součást procesu sestavení.
  • Různé mikrooptimalizace snižují využití procesoru o přibližně 2,1%.
  • Opravy chyb:
  • Opravte chybný příkaz assert (), který OSSFuzz zjistil. Vstupenka cb91bf4290c211d
  • Opravte obtížný únik paměti v sqlite3_result_pointer (). Vstupenka 7486aa54b968e9b
  • Vyvarujte se možné chyby po použití bez odložení obnovení schématu až po ukončení spuštění plánovače dotazů. Vstupenka be436a7f4587ce5
  • Použijte indexy-na-výrazy pouze pro optimalizaci ORDER BY nebo GROUP BY, pokud je COLLATE správná. Vstupenka e20dd54ab0e4383
  • Opravte chybu tvrzení, která se objevuje, když je výraz v indexu na výrazy skutečně konstantní. Vstupenka aa98619ad08ddca
  • Opravte chybu tvrzení, která by mohla nastat po použití PRAGMA reverse_unordered_selects. Vstupenka cb91bf4290c211d
  • Opravte segfault, který může nastat při dotazech, které používají funkce v hodnotě tabulky v poddotazování IN nebo EXISTS. Vstupenka b899b6042f97f5
  • Při sestavování konkrétního hrozivého společného výrazu tabulky opravte potenciální celistvý problém. To byl další problém, který OSSFuzz zjistil. Check-in 6ee8cb6ae5.
  • Při dotazování na poškozený databázový soubor opravte potenciální chybějící čtení, což je problém, který zjistila Natalie Silvanovičová ze služby Google Project Zero. Přihlášení 04925dee41a21f.

Co je nového ve verzi 3.20.1:

  • Verze 3.20.1 opravy změní dva řádky kódu v rozhraní sqlite3_result_pointer (), aby se zajistilo vzácné úniky paměti.

Co je nového ve verzi 3.9.2:

  • SQLite verze 3.9.2 je verze opravy opravující dvě chybné chyby.

Co je nového ve verzi 3.8.9:

  • Nové funkce v této verzi zahrnují příkaz PRAGMA index_xinfo, rozhraní sqlite3_status64 () a příkaz ".dbinfo" shellu příkazového řádku.

Co je nového ve verzi 3.8.8.2:

  • Uvolnění opravy 3.8.8.2 opravuje jeden drobný problém: Zajišťuje, že operace sqlite3_wal_checkpoint (TRUNCATE) vždy zkrátí protokol před zápisem, i když již byl protokol resetován a neobsahoval žádný nový obsah. Není jasné, jestli se jedná o opravu chyby nebo novou funkci.
  • Něco takového by se normálně dostalo do dalšího pravidelně plánovaného vydání, ale prominentní uživatel SQLite potřeboval změnu ve spěchu, takže jsme se s touto opravou rádi rozběhli.
  • Neexistuje žádný důvod pro upgrade, pokud skutečně nepotřebujete zdokonalené chování sqlite3_wal_checkpoint (TRUNCATE).

Co je nového ve verzi 3.8.8.1:

  • Opravte chybu v logice třídění od verze 3.8.4, která může způsobit, že se výstup zobrazí v nesprávném pořadí na dotazy, které obsahují klauzuli ORDER BY, klauzuli LIMIT a která mají přibližně 60 nebo více sloupců sada výsledků. Vstupenka f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 pro sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Co je nového ve verzi 3.8.8:

  • Nové funkce:
  • Přidán příkaz PRAGMA data_version, který lze použít k určení, zda byl databázový soubor upraven jiným procesem.
  • Přidána možnost SQLITE_CHECKPOINT_TRUNCATE k rozhraní sqlite3_wal_checkpoint_v2 () s odpovídajícími vylepšeními pro PRAGMA wal_checkpoint.
  • Přidáno rozhraní sqlite3_stmt_scanstatus (), k dispozici pouze při kompilaci s SQLITE_ENABLE_STMT_SCANSTATUS.
  • Metoda sqlite3_table_column_metadata () je vylepšena, aby fungovala správně v tabulkách WITHOUT ROWID a ověřila existenci tabulky, pokud je parametr název sloupce NULL. Rozhraní je nyní ve výchozím nastavení také zahrnuto do sestavení, aniž by byla vyžadována volba kompilace SQLITE_ENABLE_COLUMN_METADATA.
  • Přidána možnost kompilace SQLITE_ENABLE_API_ARMOR.
  • Přidána možnost kompilace SQLITE_REVERSE_UNORDERED_SELECTS.
  • Přidána možnost kompilace SQLITE_SORTER_PMASZ a volba startu SQLITE_CONFIG_PMASZ.
  • Přidána volba SQLITE_CONFIG_PCACHE_HDRSZ na sqlite3_config (), která usnadňuje aplikacím určit správné množství paměti pro použití s ​​SQLITE_CONFIG_PAGECACHE.
  • Počet řádků v klauzuli VALUES již není omezen SQLITE_LIMIT_COMPOUND_SELECT.
  • Přidáno rozšíření načítání eval.c, které implementuje funkci eval () SQL, která bude rekurzivně vyhodnocovat SQL.
  • Vylepšení výkonu:
  • Zmenšete počet operací memcpy () při vyvažování b-stromu pro zvýšení celkové výkonnosti o 3,2%.
  • Zlepšení odhadu nákladů pro optimalizaci přeskočení skenování.
  • Optimalizace automatického indexování je nyní schopna generovat dílčí index, pokud je to vhodné.
  • Opravy chyb:
  • Zajistěte trvanlivost po výpadku napájení pomocí příkazu "PRAGMA journal_mode = TRUNCATE" voláním fsync () ihned po zkrácení souboru deníku.
  • Plánovač dotazů nyní rozpozná, že jakýkoli sloupec v pravém sloupci LEFT JOIN může být NULL, i když má tento sloupec omezení NOT NULL. Vyhněte se optimalizaci testů NULL v těchto případech. Oprava pro jízdenku 6f2222d550f5b0ee7ed.
  • Ujistěte se, že ORDER BY umisťuje řady vzestupně, i když je operátor DISTINCT implementován pomocí sestupného indexu. Opravit lístek c5ea805691bfc4204b1cb9e.
  • Opravte závody dat, které by se mohly vyskytnout při stresu při spouštění mnoha závitů v režimu sdílené mezipaměti, kde některé závitky otevírají a zavírají spojení.
  • Opravte nejasné havárie, které nalezla americká fuzzy lopata. Vstupenka a59ae93ee990a55.
  • Při kompilaci s -O3 vyřešte chybu optimalizátoru GCC (pro gcc 4.2.1 v systému MacOS 10.7), která způsobila, že přípona R-Tree vypočítá nesprávné výsledky.
  • Jiné změny:
  • Zakažte rutinu knihovny C-strchrnul (), pokud není specificky povolena pomocí volby -DHAVE_STRCHRNULL kompilace.
  • Zlepšení efektivity a přesnosti pravděpodobnosti (), pravděpodobné () a nepravděpodobné () funkce SQL tipů.
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 pro sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Co je nového ve verzi 3.8.7.4:

  • Tato oprava vydání přidává mutex, který je vyžadován změnami záplaty 3.8.7.3, ale byl náhodně vynechán. Mutex nebyl vyžadován žádným interním SQLite testy, ale Firefox se bez něj havaroval. Byly přidány zkušební případy, které zajistí, že mutex už nikdy nebude chybět.

Co je nového ve verzi 3.8.7.3:

  • Oprava chyb: Ujistěte se, že objekty typu KeyInfo uložené v mezipaměti (interní abstrakce, která není v aplikaci viditelná) se při provozu v režimu sdílené mezipaměti nezmění a často zavírají a znovu otevírají některá připojení k databázi, zatímco ostatní databázová připojení zůstávají ve stejné sdílené mezipaměti nepřetržitě. Vstupenka e4a18565a36884b00edf.
  • Oprava chyb: Rozpoznáte, že jakýkoli sloupec v pravém sloupci LEVÉHO JOINU může být NULL, i když sloupec má omezení NOT NULL. Nepoužívejte optimalizace, která předpokládají, že sloupec není nikdy NULL. Vstupenka 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 pro sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Co je nového ve verzi 3.8.7.2:

  • Primárním důvodem pro toto vydání je vylepšit příkaz ROLLBACK tak, aby umožňoval běžící dotazy na stejném připojení k databázi pokračovat v běhu, dokud ROLLBACK nezmění schéma. Ve všech předchozích verzích produktu SQLite by ROLLBACK způsobilo, že čekající dotazy okamžitě zastaví a vrátí SQLITE_ABORT nebo SQLITE_ABORT_ROLLBACK. Čekající dotazy stále přerušují, pokud ROLLBACK změní schéma databáze, ale od vydání této opravy budou dotazy povoleny pokračovat v provozu, pokud je schéma nemodifikované.
  • Kromě vylepšení ROLLBACK obsahuje tato verze patch také opravy pro tři obskurní chyby.

Co je nového ve verzi 3.8.7.1:

  • Primárním důvodem tohoto vydání opravy chyb je vyřešit problém s aktualizací hodnoty polí na konci tabulky, která byla přidána pomocí příkazu ALTER TABLE ADD COLUMN. Tento problém 1 se poprvé objevil v vydání 3.8.7.
  • Dalším nepatrným otřesem v vydání verze 3.8.7 byla skutečnost, že se sestava Android pokusila o použití funkce strchrnul () ze standardní knihovny C, ale tato funkce není v systému Android k dispozici. Aplikace Android build musí přidat problém -DHAVE_STRCHRNUL = 0. Tato opravná chyba opravuje tak, aby se systém Android stavěl nyní pracovat bez jakýchkoli změn.
  • Funkce časopisu PRAGMA journal_mode = TRUNCATE byla vylepšena tak, že vyvolá fsync () po zkrácení souboru deníku, když PRAGMA synchronní = FULL. To pomáhá zachovat trvanlivost transakcí v případě výpadku napájení, který nastane krátce po spáchání.
  • Konečně byly odstraněny některé dlouhotrvající a obskurní problémy spojené s aktualizací UPDATE a DELETE na VIEWs.

Co je nového ve verzi 3.8.7:

  • Většina změn oproti předchozímu vydání byla mikro-optimalizace navržená tak, aby pomohla SQLite spustit trochu rychleji. Každá individuální optimalizace má nezměrně malý dopad na výkon. Ale vylepšení se zvyšují. Naměřené na dobře definovaném pracovním zatížení (které vývojáři SQLite používají jako proxy pro běžné pracovní zatížení aplikací) pomocí cachegrind v Linuxu a kompilované s gcc 4.8.1 a -Os na x64 linuxu, aktuální verze dělá více než 20% více práce pro stejný počet cyklů procesoru v porovnání s předchozím vydáním. Cachegrind není skutečný CPU a pracovní zatížení použité pro měření je pouze proxy. Výkonnost se může lišit. Očekáváme zhruba polovinu naměřených a zaznamenaných zlepšení v reálných aplikacích. 10% je méně než 20%, ale je to docela dobré, myslíme si.
  • Toto vydání obsahuje novou sadu jazykových jazyků jazyka C, které mají namísto podepsaných parametrů délky 32 bitů neznačené 64bitové znaky. Nové rozhraní API neposkytuje žádné nové funkce. Ale usnadňují psaní aplikací, které jsou odolnější vůči celistvým problémům s přetečením.
  • Tato verze také obsahuje nový třídič, který je schopen používat více podprocesů pro pomoc při velkých operacích třídění. (Některé operace řazení se někdy vyžadují pro implementaci klauzule ORDER BY a / nebo GROUP BY a jsou téměř vždy vyžadovány pro CREATE INDEX.) Třídička s více vlákny je ve výchozím nastavení vypnuta a musí být povolena pomocí příkazu SQL PRAGMA threads. Všimněte si, že tříbodový třídič zajišťuje rychlejší výkon v reálném čase pro velké druhy, ale také využívá více cyklů procesoru a více energie.

Co je nového ve verzi 3.8.3.1:

  • SQLite verze 3.8.3.1 opravuje chybu obsaženou ve verzích 3.8.1, 3.8.2 a 3.8.3, které mohou způsobit, že dotazy vynechají platné řádky. Doporučuje se upgrade z těchto verzí.
  • Problém přichází pouze v případě, že je SQLite kompilován s volbami kompilace SQLITE_ENABLE_STAT3 nebo SQLITE_ENABLE_STAT4. V takovém případě má dotaz klauzule WHERE, která obsahuje následující výrazy:
  • KDE (expr1 OR expr2 nebo OR ... nebo exprN) A sloupec NENÍ NULL
  • Pokud jsou všechny výrazy expr1 přes exprN vhodné pro použití indexy, pak během plánování dotazů SQLite může chybně převést výraz "sloupec IS NOT NULL" do "column & gt; NULL". Druhý termín však nikdy není pravdivý a dotaz by nevrátil řádky.

Co je nového ve verzi 3.8.3:

  • Přidána podpora pro běžné výrazy tabulky a klauzule WITH.
  • Přidána funkce printf () SQL.
  • Přidáno SQLITE_DETERMINISTIC jako volitelný bit ve čtvrtém argumentu pro sqlite3_create_function () a související rozhraní, které poskytují aplikacím možnost vytvářet nové funkce, které mohou být vyvozeny z vnitřních smyček, když mají konstantní argumenty.
  • Přidejte kód chyby SQLITE_READONLY_DBMOVED vrácený na začátku transakce, který naznačuje, že podkladový soubor databáze byl přejmenován nebo přesunut z pod SQLite.
  • Povolte libovolné výrazy, včetně volání funkcí a poddotazů, v argumentu název_souboru, aby se připojil.
  • Povolit použití klauzule VALUES kamkoliv je platný příkaz SELECT
  • Vynulujte PRNG, který používá sqlite3_randomness (N, P) při vyvolání s N == 0. Automaticky se resekuje po vidlici () na unixu.
  • Vylepšete virtuální tabulku spellfix1 tak, aby mohla vyhledávat efektivně rowid.
  • Vylepšení výkonu.
  • Zlepšení komentářů v bajtovém kódu VDBE při spuštění příkazu EXPLAIN.
  • Přidejte směrnici "% token_class" k generátoru LEMON analyzátoru a použijte jej pro zjednodušení gramatiky.
  • Změňte zdrojový kód LEMON, abyste zabránili volání funkcí knihovny C, které OpenBSD považuje za nebezpečné. (Např. Sprintf).
  • Oprava chyb: Ve funkci importu CSV pro příkazový řádek nekončíte pole, pokud se na konci řádek CRLN vyskytne uvozená dvojitá citace.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 pro sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Podobný software

MongoDB
MongoDB

17 Aug 18

MUSCLE
MUSCLE

22 Jun 18

Emdros
Emdros

11 May 15

Komentáře k SQLite

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!