SQLite | |
---|---|
Tyyppi | palvelimeton relaatiotietokannan hallintajärjestelmä [d] |
Kehittäjä | Richard Hipp [d] |
Sisään kirjoitettu | C [2] |
Käyttöjärjestelmä | cross-platform |
Ensimmäinen painos | elokuuta 2000 |
uusin versio |
|
Luettavat tiedostomuodot | SQLite-tietokantatiedostomuoto [d] , SQLite 3.x -tietokanta [d] ja SQLite rollbak -lokikirja [d] |
Luodut tiedostomuodot | SQLite-tietokantatiedostomuoto [d] , SQLite 3.x -tietokanta [d] , SQLite Zipvfs -pakattu tietokanta [d] ja SQLite rollbak -päiväkirja [d] |
Lisenssi | 🅮 [d] [3] |
Verkkosivusto | sqlite.org _ |
Mediatiedostot Wikimedia Commonsissa |
SQLite ( / ˌ ɛ s ˌ k juː ˌ ɛ l ˈ aɪ t / , [4] [5] / ˈ s iː k w ə ˌ la aɪ t / [6] ) on kompakti sulautettu DBMS . Kirjaston lähdekoodi on julkaistu public domainiin . Vuonna 2005 projekti sai Google-O'Reilly Open Source Awards -palkinnon [7] .
Sana "embedded" ( eng. embedded ) tarkoittaa, että SQLite ei käytä asiakas-palvelin -paradigmaa , eli SQLite- moottori ei ole erillinen työprosessi, jonka kanssa ohjelma on vuorovaikutuksessa, vaan kirjasto , johon ohjelma on linkitetty , ja moottorista tulee olennainen osa ohjelmia. Siten SQLite-kirjaston funktiokutsuja ( API ) käytetään vaihtoprotokollana. Tämä lähestymistapa vähentää yleiskustannuksia, vasteaikaa ja yksinkertaistaa ohjelmaa. SQLite tallentaa koko tietokannan (mukaan lukien määritelmät, taulukot, indeksit ja tiedot) yhteen standarditiedostoon koneessa, jossa ohjelma on käynnissä. Toteutuksen helppous saavutetaan johtuen siitä, että ennen kirjoitustapahtuman suorittamisen aloittamista koko tietokannan tallentava tiedosto estetään; ACID -toiminnot saavutetaan muun muassa luomalla lokitiedosto.
Useat prosessit tai säikeet voivat samanaikaisesti lukea tietoja samasta tietokannasta ilman ongelmia. Tietokantaan voidaan kirjoittaa vain, jos muita pyyntöjä ei tällä hetkellä palvella; muuten kirjoitusyritys epäonnistuu ja ohjelmalle palautetaan virhekoodi. Toinen vaihtoehto tapahtumien kehittämiseen on tallennusyritysten automaattinen toistaminen tietyn aikavälin sisällä.
Paketti sisältää myös toimivan asiakasohjelman suoritettavan sqlite3 -tiedoston muodossa , joka esittelee pääkirjaston toimintojen toteutusta. Asiakasosa on monikäyttöinen komentorivityökalu .
SQLitea voidaan käyttää sekä sulautetuissa järjestelmissä että omistetuissa koneissa, joissa on gigatavuinen tietotaulukko.
SQLite tukee dynaamista tietojen kirjoittamista. Mahdolliset arvotyypit ovat INTEGER, REAL, TEXTja BLOB. Erityisarvoa tuetaan myös NULL. [kahdeksan]
TEXT- ja BLOB-arvojen kokoa ei rajoita mikään, paitsi SQLITE_MAX_LENGTHSQLite-lähteiden vakio, joka on miljardi (10 9 ) [9] .
Jokainen tietueen minkä tahansa kentän arvo voi olla mitä tahansa näistä tyypeistä riippumatta taulukon kenttiä määritettäessä määritetystä tyypistä. Kentän ilmoittamisen yhteydessä määritetty tyyppi tallennetaan viittaukseksi sen alkuperäisessä kirjoituksessa, ja sitä käytetään asetusten valinnan perustana (ns. "tyyppiaffiniteetti": tämä on harvoin muissa DBMS-järjestelmissä esiintyvä lähestymistapa) suoritettaessa implisiittisiä tyyppimuunnoksia. perustuu tämän tyypin nimen samankaltaisuuteen minkä tahansa SQLiten tutun kanssa. Tällä algoritmilla on laaja luettelo tietotyyppien nimien muunnelmista, joita käytetään muissa DBMS-järjestelmissä. Jos kirjoitusarvoa ei voida turvallisesti muuntaa sen ensisijaiseen tyyppiin, SQLite kirjoittaa arvon alkuperäisessä muodossaan. Arvojen saamiseksi tietokannasta kullekin tyypille on useita toimintoja, ja jos tallennetun arvon tyyppi ei vastaa pyydettyä, se myös mahdollisuuksien mukaan muunnetaan. [kymmenen]
SQLiten vanhat versiot suunniteltiin ilman rajoituksia, ainoa ehto oli, että tietokanta mahtui muistiin, jossa kaikki laskelmat tehtiin 32-bittisten kokonaislukujen avulla. Tämä aiheutti tiettyjä ongelmia. Koska ylärajoja ei ole määritelty ja kunnolla testattu, vikoja on usein löydetty käytettäessä SQLitea melko äärimmäisissä olosuhteissa. Siksi uudemmat SQLiten versiot ottivat käyttöön rajoituksia, jotka nyt tarkistetaan yleisen testipaketin kanssa.
SQLite-kirjastoa käännettäessä asetetaan seuraavat rajat, joita voidaan tarvittaessa nostaa:
Kuvaus | Merkitys | Jatkuva lähdekoodissa |
---|---|---|
Merkkijonon tai BLOB - kentän enimmäispituus | 1 000 000 000 | SQLITE_MAX_LENGTH |
Sarakkeiden enimmäismäärä | 2000 | SQLITE_MAX_COLUMN |
SQL - lauseen enimmäispituus | 1 000 000 000 | SQLITE_MAX_SQL_LENGTH |
Taulukoiden enimmäismäärä lausekkeissa, joissa on JOIN | 64 | |
Expression Tree Suurin syvyys | 1000 | SQLITE_MAX_EXPR_DEPTH |
Funktioargumenttien enimmäismäärä | 127 | SQLITE_MAX_FUNCTION_ARG |
Termien enimmäismäärä yhdistetyssä lausekkeessa, jossa on SELECT | 500 | SQLITE_MAX_COMPOUND_SELECT |
Mallin enimmäispituus argumenttina LIKE- tai GLOB-operaattoreille | 50 000 | SQLITE_MAX_LIKE_PATTERN_LENGTH |
Paikkamerkkien enimmäismäärä yhdessä SQL-käskyssä | 999 | SQLITE_MAX_VARIABLE_NUMBER |
Liipaisimen rekursion suurin syvyys | 1000 | SQLITE_MAX_TRIGGER_DEPTH |
Kiinnitettyjen alustojen enimmäismäärä | kymmenen | SQLITE_MAX_ATTACHED |
Tietokannan sivun enimmäiskoko | 65 536 | SQLITE_MAX_PAGE_SIZE |
Tietokantatiedoston sivujen enimmäismäärä | 1 073 741 823 | SQLITE_MAX_PAGE_COUNT |
Versiosta 3.37.0 lähtien SQLITE_MAX_PAGE_SIZE-arvo ei voi olla suurempi kuin oletusarvo, joka on nimenomaisesti ilmoitettu lähdekoodissa. Sivujen enimmäismäärä tietokannassa on 4294967294. Tietokannan enimmäiskoko on siis 1,4e+14 tavua (281 desimaalin teratavua tai 256 TiB ). [yksitoista]
Joitakin rajoja voidaan muuttaa alaspäin ajon aikana määrittämällä luokka ja vastaava arvo sqlite3_limit() -funktiolle :
int sqlite3_limit ( sqlite3 * , int id , int newVal )Kategoria | Kuvaus |
---|---|
SQLITE_LIMIT_LENGTH | Minkä tahansa merkkijonon tai BLOB-kentän tai rivin enimmäispituus |
SQLITE_LIMIT_SQL_LENGTH | SQL-lausekkeen enimmäispituus |
SQLITE_LIMIT_COLUMN | Sarakkeiden enimmäismäärä taulukon määrittelyssä tai valitse tulos tai indeksi tai lausekkeet ORDER BY- tai GROUP BY -lauseilla |
SQLITE_LIMIT_EXPR_DEPTH | Minkä tahansa lausekkeen jäsennetyn puun enimmäissyvyys |
SQLITE_LIMIT_COMPOUND_SELECT | Termien enimmäismäärä yhdistetyssä lausekkeessa, jossa on SELECT |
SQLITE_LIMIT_VDBE_OP | Suoritettavan SQL-käskyn virtuaalikoneen ohjelmakäskyjen enimmäismäärä |
SQLITE_LIMIT_FUNCTION_ARG | Funktioargumenttien enimmäismäärä |
SQLITE_LIMIT_ATTACHED | Kiinnitettyjen alustojen enimmäismäärä |
SQLITE_LIMIT_LIKE_PATTERN_LENGTH | Mallin enimmäispituus argumenttina LIKE- tai GLOB-operaattoreille |
SQLITE_LIMIT_VARIABLE_NUMBER | SQL-käskyn muuttujien enimmäismäärä, joka voidaan sitoa |
SQLITE_LIMIT_TRIGGER_DEPTH | Liipaisimen rekursion suurin syvyys |
Tämä voi olla hyödyllistä, jos SQLitea käytetään verkkosovelluksissa , koska pienemmät rajat voivat estää DoS-hyökkäykset epäluotettavilta ulkoisilta asiakkailta.
Itse SQLite-kirjasto on kirjoitettu C -kielellä ; on monia sidoksia muihin ohjelmointikieliin, mukaan lukien Apple Swift , Delphi , C++ , Java , C# , VB.NET , Python , Perl , Node.js , PHP , PureBasic [12] , Tcl (työkalut Tcl:n kanssa työskentelyyn sisältyvät mukana SQLiten kanssa), Ruby , Haskell , Scheme , Smalltalk , Lua ja Parser ja monet muut. Täydellinen luettelo olemassa olevista työkaluista on saatavilla projektin sivulla [13] .
SQLiten upotuksen helppous ja helppokäyttöisyys on johtanut siihen, että kirjastoa käytetään selaimissa , musiikkisoittimissa ja monissa muissa ohjelmissa.
Erityisesti SQLitea käytetään:
Monet ohjelmat tukevat SQLitea tietojen tallennusmuotona (erityisesti Mac OS :ssä ja iOS :ssä , Androidissa ), mukaan lukien:
Tietokannan hallintajärjestelmät (DBMS) | |
---|---|
Asiakas-palvelin | |
Moottorit | |
Tiedosto palvelin |
Tietokanta | |
---|---|
Käsitteet |
|
Objektit |
|
Avaimet | |
SQL | |
Komponentit |