Ohjelmointi

Miksi sinun pitäisi käyttää SQLitea

Nosta huppu useimmissa yrityssovelluksissa ja paljastaa jonkin tavan tallentaa ja käyttää jäsenneltyjä tietoja. Olipa kyseessä asiakaspuolen sovellus, web-käyttöliittymällä varustettu sovellus tai reuna-laitteen sovellus, on todennäköistä, että se tarvitsee jonkinlaisen upotetun tietokannan.

SQLite on upotettava avoimen lähdekoodin tietokanta, kirjoitettu C-muodossa ja haettavissa tavanomaisen SQL: n kanssa, joka on suunniteltu kattamaan nämä käyttötapaukset ja paljon muuta. SQLite on suunniteltu nopeaksi, kannettavaksi ja luotettavaksi riippumatta siitä, tallennatko vain kilotavua dataa tai usean gigatavun blobeja.

Missä voit käyttää SQLitea

Yksi SQLiten suurimmista eduista on, että se toimii lähes missä tahansa. SQLite on siirretty monille eri alustoille: Windows, MacOS, Linux, iOS, Android ja muille. Erityisesti Windows-käyttäjät voivat käyttää valmiiksi käännettyjä binäärejä tavallisille Win32-, UWP-, WinRT- ja .Net-tiedostoille. Riippumatta siitä, mikä sovelluksesi käyttöönottotavoite on, kertoimet ovatko sille saatavilla SQLite-versio tai tapa siirtää C-lähdekoodi kyseiseen kohteeseen.

SQLite-sovelluksia käyttävien sovellusten ei tarvitse olla kirjoitettuja millä tahansa tietyllä kielellä, kunhan on olemassa jokin tapa sitoa ja työskennellä C-kirjaimella kirjoitettujen ulkoisten kirjastojen kanssa. SQLiten binääritiedostot ovat itsenäisiä, joten niiden käyttöönotto ei vaadi erityistä taikuutta - ne voidaan yksinkertaisesti pudottaa samaan hakemistoon kuin sovellus.

Monilla kielillä on korkeatasoiset sidokset SQLite-sovellukselle kirjastona, ja niitä voidaan käyttää yhdessä muiden kielen tietokantakäyttökerrosten kanssa. Esimerkiksi Python niputtaa SQLite-kirjaston vakioasiakirjaelementtinä Python-tulkin varastossa olevan version kanssa. Lisäksi kolmannet osapuolet ovat kirjoittaneet laajan valikoiman ORMeja ja tietokerroksia, jotka käyttävät SQLitea, joten et ole juuttunut SQLiten käyttämiseen raakojen SQL-merkkijonojen kautta (mikä ei ole vain kömpelö, mutta myös mahdollisesti vaarallinen).

Lopuksi SQLiten lähdekoodi on julkinen, joten sitä voidaan käyttää uudelleen muissa ohjelmissa ilman käytännön rajoituksia.

SQLite-edut

SQLiten yleisin ja ilmeisin käyttötapaus on tavanomainen, taulukoihin suuntautunut relaatiotietokanta. SQLite tukee tapahtumia ja atomikäyttäytymistä, joten ohjelman kaatuminen tai edes sähkökatko ei jätä vioittunutta tietokantaa.

SQLite sisältää ominaisuuksia korkeamman tason tietokannoista, kuten kokotekstihakemisto ja tuki JSON-tiedoille. Sovellustiedot, jotka on tyypillisesti täytetty puolirakenteisiin muotoihin, kuten YAML tai XML, voidaan tallentaa SQLite-taulukoiksi, mikä mahdollistaa tietojen helpomman käytön ja nopeamman käsittelyn.

SQLite tarjoaa myös nopean ja tehokkaan tavan tallentaa ohjelman määritystiedot. YAML: n kaltaisen tiedostomuodon jäsentämisen sijaan kehittäjä voi käyttää SQLiteä näiden tiedostojen käyttöliittymänä - usein paljon nopeammin kuin käyttää niitä manuaalisesti. SQLite voi toimia muistin sisäisten tietojen tai ulkoisten tiedostojen (esim. CSV-tiedostojen) kanssa ikään kuin ne olisivat alkuperäisiä tietokantataulukoita, tarjoten kätevän tavan kysellä kyseisiä tietoja.

Koska SQLite on yksi erillinen binaarinen, se on helppo ottaa käyttöön sovelluksen kanssa ja siirtää sitä sovelluksen kanssa tarpeen mukaan. Jokainen SQLiten luoma tietokanta sisältää myös yhden tiedoston, joka voidaan tiivistää tai optimoida SQL-komentojen avulla.

Kolmannen osapuolen binaariset SQLite-laajennukset lisäävät vielä enemmän toimintoja. SQLCipher lisää 256-bittisen AES-salauksen SQLite-tietokantatiedostoihin. Toinen, SQLite-Bloomfilter, antaa sinun luoda kukintasuodattimia tietyn kentän tiedoista.

Monet muut kolmansien osapuolten projektit tarjoavat lisätyökaluja SQLite-sivustolle, kuten Visual Studio Code -laajennus, joka sallii tietokantojen selaamisen Visual Studio Code -sovelluksesta, tai LiteCLI-vuorovaikutteinen komentorivi SQLitelle. Kuratoitu luettelo SQLite-resursseista GitHubissa sisältää paljon muuta.

SQLite vs. MySQL

SQLiteä verrataan yleisimmin MySQL: ään (tai MariaDB) - yleisesti käytettyyn avoimen lähdekoodin tietokantatuotteeseen, joka on katsaus nykypäivän sovelluspinoihin. Niin paljon kuin SQLite saattaa muistuttaa MySQL: ää, näiden kahden tietokannan erottaminen on paljon - ja hyvät syyt suosia toisiaan käyttötapauksesta riippuen.

Tietotyypit

SQLite-sivustolla on suhteellisen vähän tietotyyppejä - BLOB, NULL, INTEGER ja TEXT. MySQL: llä (tai MariaDB) on toisaalta omistettu tietotyyppejä päivämäärille ja ajoille, erilaisia ​​kokonaislukujen ja kelluvien tarkkuuksia ja paljon muuta.

Jos tallennat suhteellisen vähän tietotyyppejä tai haluat käyttää tietokerrosta tietojen vahvistamiseen, SQLite on hyödyllinen. Jos kuitenkin haluat, että tietokerroksesi tarjoaa oman varmennuksen ja normalisoinnin, siirry MySQL: n (tai MariaDB: n) kanssa.

Konfigurointi ja viritys

SQLiten määritys- ja viritysvaihtoehdot ovat vähäiset. Suurin osa SQLiten sisäisistä tai komentorivilipuista käsittelee reunatapauksia tai taaksepäin yhteensopivuutta. Tämä sopii SQLiten yleisen yksinkertaisuusfilosofian kanssa: Tee oletusasetuksista sopiva hyvin yleisimpiin käyttötapauksiin.

MySQL: llä (tai MariaDB: llä) on todellinen metsä tietokanta- ja asennuskohtaisista määritysvaihtoehdoista - lajittelu, indeksointi, suorituskyvyn säätäminen jne. Tämä runsaasti vaihtoehtoja on seurausta siitä, että MySQL tarjoaa paljon enemmän ominaisuuksia. Saatat joutua säätämään MySQL: ää enemmän, mutta se johtuu todennäköisesti siitä, että yrität tehdä enemmän.

Yhden käyttäjän vs. monen käyttäjän tietokanta

SQLite soveltuu parhaiten sovelluksiin, joilla on yksi samanaikainen käyttäjä, kuten työpöydälle tai mobiilisovellukselle. MySQL ja MariaDB on suunniteltu käsittelemään useita samanaikaisia ​​käyttäjiä. MySQL ja MariaDB voivat myös tarjota klusteroituja ja laajennettavia ratkaisuja, kun taas SQLite ei.

SQLite vs. upotetut tietokannat

SQLite ei ole kaukana ainoasta upotettavasta tietokannasta. Monet muut tarjoavat samanlaisia ​​ominaisuuksia, mutta korostavat erilaisia ​​käyttötapauksia tai käyttöönottomalleja.

  • Apache Derby: Upotettava SQL-moottori, jonka Oracle on myös pakannut uudelleen Java DB: ksi. Koska Derby on kirjoitettu Java-kielellä ja vaatii JVM: n, se on tarkoitettu pääasiassa upottamiseen Java-sovelluksiin.
  • Firebird upotettu: Firebird-tietokanta, joka käyttää useita alustoja ja käyttää monia huippuluokan ominaisuuksia, on saatavana kirjastona, joka voidaan upottaa asiakassovellukseen. Sen ominaisuusjoukko vertaa hyvin SQLiteen, mutta SQLiteellä on paljon suurempi käyttäjäyhteisö ja tukikanta.
  • Valtakunta: Suorituskykyinen relaatiotietokanta, joka on suunniteltu mobiiliympäristöihin, lähinnä Androidiin, mutta tukee myös työpöytäympäristöjä, kuten Windows. Realm on kuitenkin objektipohjainen eikä käytä SQL-kyselyjä - hyvä, jos et halua käyttää SQL: ää, mutta huono, jos SQL on tuttu ja mukava.
  • VistaDB: Upotettu tietokanta .Net-ajon ajaksi. VistaDB on saatavana erityisversioina .Netin eri makuja ja inkarnaatioita varten, ja siinä on monia yritysominaisuuksia, kuten täyden tietokannan salaus. Se on kuitenkin kaupallinen tuote, ei avoimen lähdekoodin.
  • Berkeley DB: Oracle-projekti, nimellisesti avain- / arvosäilö, mutta sellainen, joka käyttää SQLiteä viimeisimmissä versioissa tapana käsitellä SQL-kyselyjä. Berkeley DB: n taustalla olevassa tietokantamoottorissa on suorituskyvyn parannuksia, joita SQLite ei voi sovittaa yhteen, kuten pystyy käsittelemään useita samanaikaisia ​​kirjoitusoperaatioita.

Milloin ei pidä käyttää SQLitea

SQLiten suunnitteluvaihtoehdot tekevät siitä sopivan joihinkin tilanteisiin, mutta huonosti muihin. Tässä on joitain paikkoja, joissa SQLite ei toimi hyvin:

  • SQLite-ominaisuuksia käyttävät sovellukset eivät tue. SQLite ei tue, eikä monissa tapauksissa yritä tukea useita relaatiotietokannan ominaisuuksia. Monet ovat kulmatapauksia, mutta jopa yksi niistä voi rikkoa sopimuksen.
  • Sovellukset, jotka vaativat laajennettavaa mallia. SQLite-esiintymät ovat yksittäisiä ja itsenäisiä, eikä niiden välillä ole natiivisynkronointia. Niitä ei voida yhdistää yhdessä tai tehdä niistä klustereita. Ohjelmistosovellukset, jotka käyttävät laajennussuunnittelua, eivät voi käyttää SQLitea.
  • Sovellukset, joissa on samanaikainen kirjoitusoperaatio useista yhteyksistä. SQLite lukitsee tietokannan kirjoitusoperaatioita varten, joten kaikki, jotka sisältävät useita samanaikaisia ​​kirjoitusoperaatioita, voivat aiheuttaa suorituskykyongelmia. Sovellukset, joissa on useita samanaikaisia ​​lukuja, ovat kuitenkin yleensä nopeita. SQLite 3.7.0 ja uudemmat tarjoavat kirjoitus eteenpäin -lokitilan, jotta useat kirjoitukset toimisivat nopeammin, mutta siihen liittyy joitain rajoituksia. Vaihtoehtona pidetään yllä mainittua Berkeley DB: tä.
  • Vahvaa tietojen kirjoittamista tarvitsevat sovellukset. SQLite-sivustolla on suhteellisen vähän tietotyyppejä - esimerkiksi ei natiivia datetime-tyyppiä. Tämä tarkoittaa, että sovellusten on käsiteltävä näiden tyyppien noudattamista. Jos haluat, että tietokanta, toisin kuin sovellus, normalisoi ja rajoittaa päivämäärän arvojen syötteitä, SQLite ei välttämättä toimi sinulle.
$config[zx-auto] not found$config[zx-overlay] not found