SQLite

Screenshot Software:
SQLite
Detalii soft:
Versiune: 3.24.0 Actualizat
Incarca data: 22 Jun 18
Producător: D. Richard Hipp
Licenţă: Gratuit
Popularitate: 21

Rating: 5.0/5 (Total Votes: 1)

SQLite este o bibliotecă open source, multiplatformă, gratuită și mică, care implementează un motor de baze de date SQL bazat pe SQL. Este cel mai folosit motor de baze de date SQL din lume.


Caracteristici dintr-o privire

Caracteristicile cheie includ suport pentru tranzacții izolate, atomice, durabile și consecvente, implementarea SQL92, fișierele bazei de date pot fi partajate în mod liber între computere, suportă baze de date de până la 2 terabytes, suport pentru blob-uri și șiruri de dimensiuni gigabyte, precum și un ușor de utilizat și foarte simplu API (Application Programming Interface).

În plus, SQLite nu necesită configurare inițială sau administrare ulterioară, permite dezvoltatorilor să stocheze o bază de date completă într-un singur fișier disc pe platformă, care este perfect pentru utilizarea formatelor de fișiere de aplicații, nu are dependențe externe, în limbajul TCL (Command Language Command) și în documentația completă.

Legăturile pentru numeroase alte limbi de programare sunt disponibile separat. Codul său sursă este bine comentat și vine cu un client stand-alone CLI (Command-Line Interface) care a fost proiectat din offset pentru a fi utilizat pentru administrarea bazelor de date SQLite.


Pentru ce să-l folosesc?

Motorul de baze de date SQLite poate fi folosit pentru orice scop, personal sau comercial. Utilizările sugerate pentru SQLite includ baza de date pentru gadget-uri, baza de date a site-urilor web, stand-in pentru o întreprindere RDBMS (Sistem de gestionare a bazelor de date relaționale), precum și formatul de fișier aplicație.


Sub capota și OS suportate

Distribuția SQLite vine cu un program de acces independent de linie de comandă (sqlite) care poate fi folosit pentru administrarea unei baze de date SQLite și care servește ca exemplu de utilizare a bibliotecii SQLite. Este scris în întregime în limbajul de programare ANSI-C.

Sistemele de operare desktop compatibile includ GNU / Linux, Mac OS X și Microsoft Windows. Sistemele de operare mobile incluse includ Android și iOS. Acesta a fost testat cu succes atât pe platforme hardware pe 32 de biți, cât și pe 64 de biți, și este ușor de portabil la alte sisteme de operare.

Ce este nou p>

  • Repere ale acestei versiuni includ suport pentru UPSERT în stil PostgreSQL și performanță îmbunătățită, în special pentru interogările ORDER BY LIMIT.

Ce este nou în versiune:

  • Beneficiați de capabilitățile de scriere atomică din sistemul de fișiere F2FS atunci când sunt disponibile, pentru reducerea semnificativă a cheltuielilor de tranzacționare. În prezent, aceasta necesită opțiunea de compilare-timp SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Permiteți comenzilor ATTACH și DETACH să lucreze în interiorul unei tranzacții.
  • Permiteți scrierea tabelelor virtuale WITHOUT ROWID în cazul în care KEY PRIMARY conține exact o coloană.
  • "fsync ()" care apare după ce antetul este scris într-o resetare WAL, utilizează acum setările de sincronizare pentru punctele de control. Aceasta înseamnă că va folosi o expresie "fullfsync" pe mac, dacă PRAGMA checkpoint_fullfsync este setat.
  • Funcția sqlite3_sourceid () încearcă să detecteze dacă codul sursă a fost modificat din ceea ce este bifat în controlul versiunii și dacă există modificări, ultimele patru caractere ale versiunii hash sunt afișate ca "alt1" sau "alt2". Obiectivul este de a detecta modificări accidentale și / sau neatente. Un falsificator poate submina această caracteristică.
  • Îmbunătățirea decontaminării numelor coloanelor pentru instrucțiunile CREATE TABLE AS cu o interogare agregată în partea dreaptă.
  • Mai puțin "stat ()" apeluri de sistem emise de unfix VFS.
  • Îmbunătățește optimizarea LIKE astfel încât să funcționeze cu o clauză ESCAPE.
  • Îmbunătățirea PRAGMA integrity_check și PRAGMA quick_check pentru a detecta corupția din rândul obscur pe care le lipseau anterior. De asemenea, actualizați ambele pragmas astfel încât acestea să returneze textul de eroare mai degrabă decât SQLITE_CORRUPT atunci când se confruntă cu corupție în înregistrări.
  • Planificatorul de interogări preferă acum să implementeze sub-cerințe FROM-clause folosind co-rutine folosind mai degrabă optimizarea de interacțiune a interogării. Sprijinul utilizării co-rutinelor pentru subcheiere nu mai poate fi dezactivat.
  • Transmite constrângeri în metoda xBestIndex a tabelelor virtuale.
  • Îmbunătățește tabela virtuală CSV astfel încât să accepte ultimul rând de intrare dacă lipsește caracterul final de linie nouă
  • Îndepărtați "zgârierea" rar utilizată; memorie alocator. Înlocuiți-l cu setarea de configurare SQLITE_CONFIG_SMALL_MALLOC care oferă SQLite un indiciu că alocările de memorie mari ar trebui să fie evitate atunci când este posibil.
  • A fost adăugată o tabelă virtuală a coloanei în extensia tabelă virtuală a uniunii.
  • A fost adăugată tabela virtuală sqlite_dbpage pentru furnizarea accesului direct la paginile din fișierul bazei de date. Codul sursă este integrat în amalgamare și este activat utilizând opțiunea-compilație -DSQLITE_ENABLE_DBPAGE_VTAB.
  • Adăugați un nou tip de tabel virtual fts5vocab - "instanță" - care oferă acces direct la un index FTS5 fulltext la cel mai mic nivel posibil.
  • Eliminați un apel la rand_s () în Windows VFS deoarece provoca probleme în Firefox pe unele laptopuri mai vechi.
  • Codul sursă src / shell.c la shell-ul liniei de comandă nu mai este sub controlul versiunii. Acest fișier este acum generat ca parte a procesului de construire.
  • Diversele microoptimizări reduc utilizarea procesorului cu aproximativ 2,1%.
  • Remedierea erorilor:
  • Remediați o declarație defectă assert () descoperită de OSSFuzz. Bilet cb91bf4290c211d
  • Remediați o scurgere de memorie obscură în sqlite3_result_pointer (). Biletul 7486aa54b968e9b
  • Evitați o eroare posibilă după utilizare prin amânarea resetărilor schemelor până când planificatorul de interogări a încetat. Bilet be436a7f4587ce5
  • Utilizați numai indicii pe expresii pentru a optimiza ORDER BY sau GROUP BY dacă COLLATE este corect. Bilet e20dd54ab0e4383
  • Remediați o greșeală de afirmație care apare atunci când expresia într-un index pe expresii este într-adevăr o constantă. Bilet aa98619ad08ddca
  • Remediați o eroare de afirmație care ar putea apărea în urma PRAGMA reverse_unordered_selects. Bilet cb91bf4290c211d
  • Remediați o segfault care poate apărea pentru interogările care utilizează funcții valoroase într-o subchetare IN sau EXISTS. Bilet b899b6042f97f5
  • Fixați o problemă de depășire a întregului potențial atunci când compilați o anumită expresie de masă oribilă. Aceasta a fost o altă problemă descoperită de OSSFuzz. Check-in 6ee8cb6ae5.
  • Fixați o potențială citire în afara legăturii când interogați un fișier de bază de date corupt, o problemă detectată de Natalie Silvanovich de la Google Project Zero. Check-in 04925dee41a21f.

Ce este nou în versiunea 3.20.1:

  • Versiunea 3.20.1 a patch-urilor schimbă două linii de cod în interfața sqlite3_result_pointer () pentru a rezolva o scurgere de memorie rară.

Ce este nou în versiunea 3.9.2:

  • SQLite versiunea 3.9.2 este o versiune de patch-uri care fixează două bug-uri obscure.

Ce este nou în versiunea 3.8.9:

  • Funcțiile noi din această versiune includ comanda PRAGMA index_xinfo, interfața sqlite3_status64 () și comanda ".dbinfo" a coajăi de linie de comandă.

Ce este nou în versiunea 3.8.8.2:

  • Eliberarea patch-urilor 3.8.8.2 rezolvă o singură problemă minoră: Se asigură că operația sqlite3_wal_checkpoint (TRUNCATE) va trunchia întotdeauna jurnalul de scriere înainte chiar dacă jurnalul ar fi fost deja resetat și nu conținea conținut nou. Nu este clar dacă aceasta este o remediere a unei erori sau o funcție nouă.
  • Ceva de genul asta ar merge în mod normal în următoarea versiune programată regulat, dar un utilizator SQLite proeminent avea nevoie de schimbare într-o grabă, așa că am fost fericiți să-l grăbim prin acest patch.
  • Nu există niciun motiv pentru a face upgrade dacă nu aveți nevoie de comportamentul îmbunătățit al sqlite3_wal_checkpoint (TRUNCATE).

Ce este nou în versiunea 3.8.8.1:

  • Remediați o eroare în logica de sortare, prezentă de la versiunea 3.8.4, care poate determina ieșirea să apară într-o ordine greșită în interogări care conțin o clauză ORDER BY, o clauză LIMIT și care au aproximativ 60 sau mai multe coloane în setul de rezultate. Bilet f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 pentru sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Ce este nou în versiunea 3.8.8:

  • Caracteristici noi:
  • A fost adăugată comanda PRAGMA data_version care poate fi utilizată pentru a determina dacă un fișier de bază de date a fost modificat printr-un alt proces.
  • A fost adăugată opțiunea SQLITE_CHECKPOINT_TRUNCATE la interfața sqlite3_wal_checkpoint_v2 (), cu îmbunătățiri corespunzătoare pentru PRAGMA wal_checkpoint.
  • A fost adăugată interfața sqlite3_stmt_scanstatus (), disponibilă numai atunci când este compilată cu SQLITE_ENABLE_STMT_SCANSTATUS.
  • Metoda sqlite3_table_column_metadata () este îmbunătățită pentru a funcționa corect pe tabele WITHOUT ROWID și pentru a verifica existența unui tabel dacă parametrul nume de coloană este NULL. Interfața este acum inclusă și în construcție în mod implicit, fără a necesita opțiunea de compilare-time SQLITE_ENABLE_COLUMN_METADATA.
  • A fost adăugată opțiunea de compilare-timp SQLITE_ENABLE_API_ARMOR.
  • A fost adăugată opțiunea de compilare-timp SQLITE_REVERSE_UNORDERED_SELECTS.
  • A fost adăugată opțiunea de timp de compilare SQLITE_SORTER_PMASZ și opțiunea de pornire SQLITE_CONFIG_PMASZ.
  • A fost adăugată opțiunea SQLITE_CONFIG_PCACHE_HDRSZ la sqlite3_config (), ceea ce face mai ușor pentru aplicații să determine cantitatea corespunzătoare de memorie pentru utilizarea cu SQLITE_CONFIG_PAGECACHE.
  • Numărul de rânduri dintr-o clauză VALUES nu mai este limitat de SQLITE_LIMIT_COMPOUND_SELECT.
  • A fost adăugată extensia încărcată eval.c care implementează o funcție SQL () care va evalua recursiv SQL.
  • Îmbunătățiri de performanță:
  • Reduceți numărul operațiilor memcpy () implicate în echilibrarea unui b-tree, pentru o creștere a performanței globale de 3,2%.
  • Îmbunătățiri ale estimărilor costurilor pentru optimizarea scanării.
  • Optimizarea automată a indexării este acum capabilă să genereze un index parțial dacă este potrivit.
  • Remedierea erorilor:
  • Asigurați-vă durabilitatea după o pierdere de putere cu "PRAGMA journal_mode = TRUNCATE" apelând fsync () imediat după trunchierea fișierului jurnal.
  • Planificatorul de interogări recunoaște acum că orice coloană din tabelul din partea dreaptă a unei JOINTE STÂNGA poate fi NULL, chiar dacă respectiva coloană are o constrângere NOT NULL. Evitați încercarea de a optimiza testele NULL în acele cazuri. Fixați pentru biletul 6f2222d550f5b0ee7ed.
  • Asigurați-vă că ORDER BY pune rânduri în ordine crescătoare, chiar dacă operatorul DISTINCT este implementat utilizând un index descendent. Fixați pentru biletul de avion c5ea805691bfc4204b1cb9e.
  • Fixați cursele de date care ar putea apărea sub stres atunci când rulează cu mai multe fire în modul cache partajat, unde unele fire deschid și închid conexiuni.
  • Remediați bug-uri obscure care au fost găsite de lopul fuzzy american. Bilet a59ae93ee990a55.
  • Lucrați în jurul unui bug GCC optimizer (pentru gcc 4.2.1 pe MacOS 10.7) care a cauzat extinderii R-Tree pentru a calcula rezultate incorecte când a fost compilat cu -O3.
  • Alte modificări:
  • Dezactivați folosirea rutinei bibliotecii C de la strchrnul () dacă nu este activată în mod specific folosind opțiunea -DHAVE_STRCHRNULL de compilare.
  • Îmbunătățiri ale eficacității și acurateței probabilităților (), probabil () și funcțiilor de sugestie SQL (<)
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 pentru sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Ce este nou în versiunea 3.8.7.4:

  • Această remediere a lansării adaugă un mutex necesar modificărilor de la patch-ul 3.8.7.3 dar a fost omorât accidental. Mutexul nu a fost solicitat de niciunul dintre testele SQLite interne, dar Firefox se blochează fără ea. Au fost adăugate cazuri de testare pentru a vă asigura că mutexul nu este ratat niciodată.

Ce este nou în versiunea 3.8.7.3:

  • Corectarea erorilor: Asigurați-vă că obiectele KeyInfo stocate în memoria cache (o abstracție internă care nu este vizibilă pentru aplicație) nu se estompează atunci când operează în modul cache partajat și în mod frecvent închide și redeschide unele conexiuni la bază de date, continuu. Biletul e4a18565a36884b00edf.
  • Remedierea erorilor: Recunoașteți că orice coloană din tabelul din partea dreaptă a unei JOINTE STÂNGA poate fi NULL chiar dacă coloana are o constrângere NOT NULL. Nu aplicați optimizări care presupun că coloana nu este niciodată NULL. Biletul 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 pentru sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Ce este nou în versiunea 3.8.7.2:

  • Motivul principal al acestei versiuni este de a spori comanda ROLLBACK astfel încât să permită executarea interogărilor în aceeași conexiune de bază de date să continue să ruleze atât timp cât ROLLBACK nu modifică schema. În toate versiunile anterioare ale SQLite, un ROLLBACK ar cauza interogări în așteptare pentru a se opri imediat și pentru a reveni la SQLITE_ABORT sau SQLITE_ABORT_ROLLBACK. Interogările în așteptare rămân abrogate dacă ROLLBACK modifică schema bazei de date, dar din momentul lansării patch-ului, interogările pot continua să fie difuzate dacă schema nu este modificată.
  • În plus față de accesoriul ROLLBACK, această versiune de patch-uri include, de asemenea, soluții pentru trei bug-uri obscure.

Ce este nou în versiunea 3.8.7.1:

  • Motivul principal al acestei versiuni de remediere a erorilor este de a rezolva o problemă cu actualizarea valorii câmpurilor de la sfârșitul unui tabel care a fost adăugată folosind ALTER TABLE ADD COLUMN. Această problemă a apărut pentru prima dată în versiunea 3.8.7.
  • O altă neliniște minoră în versiunea 3.8.7 a fost faptul că platforma Android a încercat să folosească funcția strchrnul () din biblioteca standard C, dar această funcție nu este disponibilă pe Android. Platformele Android au fost nevoite să adauge -DHAVE_STRCHRNUL = 0 pentru a rezolva problema. Acest patch se fixează astfel încât sistemul de editare Android ar trebui să funcționeze acum fără modificări.
  • Funcționarea PRAGMA journal_mode = TRUNCATE a fost îmbunătățită astfel încât să invocă fsync () după trunchierea fișierului jurnal atunci când PRAGMA synchronous = FULL. Acest lucru ajută la menținerea durabilității tranzacțiilor în cazul unei pierderi de putere care apare la scurt timp după efectuarea comiterii.
  • În cele din urmă, au fost rezolvate câteva probleme îndelungate și obscure asociate cu rularea UPDATE și DELETE pe VIEWs.

Ce este nou în versiunea 3.8.7:

  • Cele mai multe dintre modificările de la versiunea anterioară au fost micro-optimizări menite să ajute SQLite să ruleze puțin mai repede. Fiecare optimizare individuală are un impact de performanță incomparabil mic. Dar îmbunătățirile se adaugă. Măsurată pe un volum de lucru bine definit (pe care dezvoltatorii SQLite îl folosesc ca proxy pentru o încărcare tipică a aplicațiilor) folosind cachegrind pe Linux și compilat cu gcc 4.8.1 și -Os pe x64 linux, versiunea curentă are peste 20% același număr de cicluri CPU comparativ cu versiunea anterioară. Cachegrind nu este un CPU real, iar volumul de lucru folosit pentru măsurare este doar un proxy. Deci performanța dvs. poate varia. Ne așteptăm să vedem aproximativ jumătate din îmbunătățirea măsurată și raportată în aplicațiile din lumea reală. 10% este mai mică de 20%, dar este încă destul de bună, credem noi.
  • Această versiune include un nou set de interfețe în limbaj C care au nesemnate 64 de biți în loc de parametri de lungime 32 biți. Noile API-uri nu oferă noi capabilități. Dar ei fac mai usor sa scrie aplicatii care sunt mai rezistente la vulnerabilitatile de overflow intreg.
  • Această versiune include, de asemenea, un nou sortare care poate folosi mai multe fire pentru a ajuta la operațiuni mari de sortare. (Operațiile de sortare sunt uneori necesare pentru a pune în aplicare clauzele ORDER BY și / sau GROUP BY și sunt aproape întotdeauna necesare pentru CREATE INDEX.) Sorterul cu mai multe fire este dezactivat în mod implicit și trebuie să fie activat folosind comanda SQL a firelor PRAGMA. Rețineți că sortarea multi-filetă oferă o performanță mai rapidă în timp real pentru tipuri mari, dar utilizează, de asemenea, mai multe cicluri de procesor și mai multă energie.

Ce este nou în versiunea 3.8.3.1:

  • SQLite versiunea 3.8.3.1 remediază o eroare prezentă în versiunile 3.8.1, 3.8.2 și 3.8.3 care pot cauza interogări să omiteți rânduri valide. Este recomandată actualizarea de la versiunile respective.
  • Problema apare numai dacă SQLite este compilată fie cu opțiunile de compilare-SQLITE_ENABLE_STAT3, fie cu SQLITE_ENABLE_STAT4. În acest caz, dacă o interogare are o clauză WHERE care conține expresii ca aceasta:
  • WHERE (expr1 OR expr2 OR ... SAU exprN) ȘI coloana NU ESTE NULL
  • În cazul în care toate expr1 prin exprN sunt potrivite pentru utilizarea de către indexuri, atunci în timpul planificării interogărilor, SQLite ar putea transforma în mod eronat termenul "column NOT NULL" în "column & gt; NULL". Dar ultimul termen nu este niciodată adevărat și, astfel, interogarea nu va returna rânduri.

Ce este nou în versiunea 3.8.3:

  • A fost adăugat suport pentru expresii comune de tabelă și clauza WITH.
  • A fost adăugată funcția SQL printf ().
  • Adăugat SQLITE_DETERMINISTIC ca un bit opțional în argumentul al patrulea pentru sqlite3_create_function () și interfețele conexe, oferind aplicațiilor posibilitatea de a crea noi funcții care pot fi facturate din buclele interioare atunci când au argumente constante.
  • Adăugați codul de eroare SQLITE_READONLY_DBMOVED, returnat la începutul unei tranzacții, pentru a indica faptul că fișierul bază de date de bază a fost redenumit sau mutat din sub SQLite.
  • Permiteți expresii arbitrare, inclusiv apeluri de funcții și subdotări, în argumentul filename pentru ATTACH.
  • Permiteți folosirea unei clauze VALUES oriunde este valabilă o instrucțiune SELECT.
  • Resetați PRNG-ul utilizat de sqlite3_randomness (N, P) când este invocat cu N == 0. Se resetează automat după o furcă () pe unix.
  • Îmbunătățiți tabela virtuală spellfix1 astfel încât să poată căuta în mod eficient prin rowid.
  • Îmbunătățirile de performanță.
  • Îmbunătățirile aduse comentariilor din afișarea codului de cod VDBE la executarea EXPLAIN.
  • Adăugați directiva "% token_class" la generatorul LEMON parser și folosiți-l pentru a simplifica gramatica.
  • Schimbați codul sursă LEMON pentru a evita să apelați funcțiile bibliotecii C pe care OpenBSD le consideră periculoase. (Ex: sprintf).
  • Remedierea erorilor: În funcția de import de caractere CSV de linie de comandă, nu terminați un câmp atunci când apare o dublă cotare eschivată la sfârșitul unei linii CRLN.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 pentru sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Software similare

MySQL-Connector
MySQL-Connector

11 May 15

Berkeley DB
Berkeley DB

27 Apr 17

MongoDB
MongoDB

17 Aug 18

Comentarii la SQLite

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!