SQLite | |
---|---|
Tip de | sistem de gestionare a bazelor de date relaționale fără server [d] |
Dezvoltator | Richard Hipp [d] |
Scris in | C [2] |
Sistem de operare | multiplatformă |
Prima editie | august 2000 |
ultima versiune |
|
Formate de fișiere care pot fi citite | Formatul de fișier al bazei de date SQLite [d] , baza de date SQLite 3.x [d] și jurnalul SQLite rollbak [d] |
Formate de fișiere generate | Formatul de fișier al bazei de date SQLite [d] , baza de date SQLite 3.x [d] , baza de date comprimată SQLite Zipvfs [d] și jurnalul SQLite rollbak [d] |
Licență | 🅮 [d] [3] |
Site-ul web | sqlite.org _ |
Fișiere media la Wikimedia Commons |
SQLite ( / ˌ ɛ s ˌ k juː ˌ ɛ l ˈ aɪ t / , [4] [5] / ˈ s iː k w ə ˌ la aɪ t / [6] ) este un SGBD compact încorporat . Codul sursă al bibliotecii a fost eliberat în domeniul public . În 2005, proiectul a primit premiile Google-O'Reilly Open Source [7] .
Cuvântul „embedded” ( ing. embedded ) înseamnă că SQLite nu folosește paradigma client-server , adică motorul SQLite nu este un proces de lucru separat cu care programul interacționează, ci este o bibliotecă cu care programul este legat. , iar motorul devine parte integrantă a programelor. Astfel, apelurile de funcții ( API ) ale bibliotecii SQLite sunt utilizate ca protocol de schimb. Această abordare reduce cheltuielile generale, timpul de răspuns și simplifică programul. SQLite stochează întreaga bază de date (inclusiv definiții, tabele, indecși și date) într-un singur fișier standard pe mașina pe care rulează programul. Ușurința de implementare se realizează datorită faptului că înainte de începerea execuției tranzacției de scriere, întregul fișier care stochează baza de date este blocat; Funcțiile ACID sunt realizate, printre altele, prin crearea unui fișier jurnal.
Mai multe procese sau fire pot citi simultan date din aceeași bază de date fără probleme. Scrierea în baza de date se poate face numai dacă nu există alte solicitări în curs de deservire; în caz contrar, încercarea de scriere eșuează și un cod de eroare este returnat programului. O altă opțiune pentru dezvoltarea evenimentelor este repetarea automată a încercărilor de înregistrare într-un interval de timp specificat.
Pachetul include și o parte funcțională client sub forma unui fișier executabil sqlite3 , care demonstrează implementarea funcțiilor bibliotecii principale. Partea client este un utilitar de linie de comandă multiplatformă .
SQLite poate fi folosit atât pe sisteme încorporate, cât și pe mașini dedicate cu matrice de date gigabyte.
SQLite acceptă tastarea dinamică a datelor. Tipurile de valori posibile sunt INTEGER, REALși TEXT. BLOBValoarea specială este de asemenea susținută NULL. [opt]
Dimensiunile valorilor TEXT și BLOB nu sunt limitate de nimic, cu excepția unei constante SQLITE_MAX_LENGTHîn sursele SQLite egală cu un miliard (10 9 ) [9] .
Fiecare valoare din orice câmp din orice înregistrare poate fi de oricare dintre aceste tipuri, indiferent de tipul specificat la declararea câmpurilor tabelului. Tipul specificat atunci când un câmp este declarat este stocat pentru referință în ortografia sa originală și este folosit ca bază pentru alegerea preferințelor (așa-numita „afinitate de tip”: aceasta este o abordare rar întâlnită în alte SGBD) atunci când se efectuează conversii implicite de tip pe baza asemănării acestui nume de tip cu orice familiarizat cu SQLite. Acest algoritm are o listă extinsă de variante ale numelor tipurilor de date practicate în alte SGBD. Dacă o valoare de scriere nu poate fi convertită în siguranță în tipul ei preferat, SQLite scrie valoarea în forma sa originală. Pentru a obține valori din baza de date, există un număr de funcții pentru fiecare dintre tipuri, iar dacă tipul valorii stocate nu se potrivește cu cel solicitat, aceasta este, de asemenea, convertită, dacă este posibil. [zece]
Versiunile vechi de SQLite au fost proiectate fără restricții, singura condiție era ca baza de date să se încadreze în memorie, în care toate calculele au fost efectuate folosind numere întregi de 32 de biți. Acest lucru a creat anumite probleme. Deoarece limitele superioare nu au fost definite și testate corespunzător, au fost adesea găsite erori atunci când se folosește SQLite în condiții destul de extreme. Prin urmare, versiunile mai noi de SQLite au introdus limite care sunt acum verificate împreună cu suita generală de teste.
În timpul compilării bibliotecii SQLite, sunt stabilite următoarele limite, care pot fi mărite dacă este necesar:
Descriere | Sens | Constant în codul sursă |
---|---|---|
Lungimea maximă a unui șir sau a unui câmp BLOB | 1.000.000.000 | SQLITE_MAX_LENGTH |
Numărul maxim de coloane | 2000 | SQLITE_MAX_COLUMN |
Lungimea maximă a unei instrucțiuni SQL | 1.000.000.000 | SQLITE_MAX_SQL_LENGTH |
Numărul maxim de tabele în expresiile cu JOIN | 64 | |
Adâncimea maximă a arborelui de expresie | 1000 | SQLITE_MAX_EXPR_DEPTH |
Numărul maxim de argumente ale funcției | 127 | SQLITE_MAX_FUNCTION_ARG |
Număr maxim de termeni într-o expresie combinată cu SELECT | 500 | SQLITE_MAX_COMPOUND_SELECT |
Lungimea maximă a unui model ca argument pentru operatorii LIKE sau GLOB | 50.000 | SQLITE_MAX_LIKE_PATTERN_LENGTH |
Numărul maxim de caractere substituent într-o instrucțiune SQL | 999 | SQLITE_MAX_VARIABLE_NUMBER |
Adâncimea maximă a recursiunii declanșatorului | 1000 | SQLITE_MAX_TRIGGER_DEPTH |
Numărul maxim de baze atașate | zece | SQLITE_MAX_ATTACHED |
Dimensiunea maximă a paginii bazei de date | 65 536 | SQLITE_MAX_PAGE_SIZE |
Numărul maxim de pagini dintr-un fișier de bază de date | 1 073 741 823 | SQLITE_MAX_PAGE_COUNT |
Începând cu versiunea 3.37.0, valoarea SQLITE_MAX_PAGE_SIZE nu poate fi mai mare decât valoarea implicită, care este specificată în mod explicit în codul sursă. Numărul maxim de pagini din baza de date este 4294967294. Astfel, dimensiunea maximă a bazei de date este de 1,4e+14 octeți (281 terabytes zecimal sau 256 TiB ). [unsprezece]
Unele limite pot fi modificate în jos în timpul execuției prin specificarea unei categorii și a valorii corespunzătoare a funcției sqlite3_limit() :
int sqlite3_limit ( sqlite3 * , int id , int newVal )Categorie | Descriere |
---|---|
SQLITE_LIMIT_LENGTH | Lungimea maximă a oricărui șir sau câmp sau rând BLOB |
SQLITE_LIMIT_SQL_LENGTH | Lungimea maximă a instrucțiunii SQL |
SQLITE_LIMIT_COLUMN | Numărul maxim de coloane într-o definiție de tabel sau selectați rezultat sau index sau expresii cu clauze ORDER BY sau GROUP BY |
SQLITE_LIMIT_EXPR_DEPTH | Adâncimea maximă a arborelui analizat al oricărei expresii |
SQLITE_LIMIT_COMPOUND_SELECT | Număr maxim de termeni într-o expresie combinată cu SELECT |
SQLITE_LIMIT_VDBE_OP | Numărul maxim de instrucțiuni de program de mașină virtuală ale unei instrucțiuni SQL executabile |
SQLITE_LIMIT_FUNCTION_ARG | Numărul maxim de argumente ale funcției |
SQLITE_LIMIT_ATTACHED | Numărul maxim de baze atașate |
SQLITE_LIMIT_LIKE_PATTERN_LENGTH | Lungimea maximă a unui model ca argument pentru operatorii LIKE sau GLOB |
SQLITE_LIMIT_VARIABLE_NUMBER | Numărul maxim de variabile dintr-o instrucțiune SQL care pot fi legate |
SQLITE_LIMIT_TRIGGER_DEPTH | Adâncimea maximă a recursiunii declanșatorului |
Acest lucru poate fi util dacă SQLite este utilizat în aplicații web , deoarece limitele reduse pot preveni atacurile DoS de la clienți externi neîncrezători.
Biblioteca SQLite în sine este scrisă în C ; există multe legături la alte limbaje de programare, inclusiv Apple Swift, Delphi , C++ , Java , C# , VB.NET , Python , Perl , Node.js , PHP , PureBasic [12] , Tcl (instrumentele pentru lucrul cu Tcl sunt incluse incluse cu SQLite), Ruby , Haskell , Scheme , Smalltalk , Lua și Parser și multe altele. O listă completă a instrumentelor existente este disponibilă pe pagina proiectului [13] .
Ușurința și comoditatea încorporării SQLite a dus la utilizarea bibliotecii în browsere , playere muzicale și multe alte programe.
În special, SQLite este utilizat în:
Multe programe acceptă SQLite ca format de stocare a datelor (în special pe Mac OS și iOS , Android ), inclusiv:
Sisteme de management al bazelor de date (DBMS) | |
---|---|
Client server | |
Motoare | |
Server de fișiere |
Bază de date | |
---|---|
Concepte |
|
Obiecte |
|
Chei | |
SQL |
|
Componente |