Ohjelmointi

Kuinka valita oikea tietokantatyyppi yrityksellesi

Siellä on satoja teknisesti raskasta tietokantakatsausta, mutta ne eivät aina anna selkeitä ohjeita tietokannan valinnan ensimmäisestä vaiheesta: parhaan yleisen tyypin valitseminen tietylle sovellukselle. Kaikki tietokannat eivät ole tasa-arvoisia. Jokaisella on erityisiä vahvuuksia ja heikkouksia. Vaikka on totta, että on olemassa kiertotavat, jotta suosikkitietokanta toimisi useimmissa projekteissa, näiden temppujen käyttö lisää tarpeetonta monimutkaisuutta.

Ennen kuin harkitset tietyn tietokannan käyttöä, ota jonkin aikaa ajatella, minkä tyyppinen projekti parhaiten tukee. Kysymys menee syvemmälle kuin "SQL vs. NoSQL". Seuraavassa on luettelo yleisimmistä tietokantatyypeistä, kunkin suhteellisista eduista ja siitä, miten voit selvittää, mikä sopii parhaiten.

Relaatiotietokantojen hallintajärjestelmät (Oracle, MySQL, MS Server, PostgreSQL)

Relaatiotietokannat kehitettiin 1970-luvulla kasvavan tuotetulon käsittelemiseksi. Heillä on vankka perustusteoria ja ne ovat vaikuttaneet lähes kaikkiin nykyisin käytössä oleviin tietokantajärjestelmiin.

Relaatiotietokannat tallentavat tietojoukkoja "suhteiksi": rivejä ja sarakkeita sisältävät taulukot, joihin kaikki tiedot tallennetaan tietyn solun arvona. RDBMS: n tietoja hallitaan SQL: n avulla. Vaikka toteutuksia on erilaisia, SQL on standardoitu ja tarjoaa ennustettavuuden ja hyödyllisyyden tason.

Varhaisen toimittajatulvan jälkeen, joka yritti hyödyntää järjestelmän suosiota ei-suhteellisissa tuotteissa, luoja E.F.Codd esitti joukon sääntöjä, joita kaikkien relaatiotietokantojen hallintajärjestelmien on noudatettava. Coddin 12 sääntöä pyörii tiukkojen sisäisten rakenneprotokollien asettamisesta, varmistaen, että haut palauttavat luotettavasti pyydetyt tiedot, ja estämällä rakenteelliset muutokset (ainakin käyttäjien tekemät). Kehys varmisti, että relaatiotietokannat ovat yhtenäisiä ja luotettavia tähän päivään saakka.

Vahvuudet

Relaatiotietokannat hoitavat erinomaisesti hyvin jäsenneltyä dataa ja tarjoavat tukea ACID-tapahtumille (atomisuus, johdonmukaisuus, eristäminen ja kestävyys). Tiedot tallennetaan ja haetaan helposti SQL-kyselyjen avulla. Rakennetta voidaan skaalata nopeasti, koska tietojen lisääminen muuttamatta olemassa olevaa tietoa on yksinkertaista.

Rajoitusten luominen sille, mitä tietyt käyttäjätyypit voivat käyttää tai muokata, on rakennettu RDBMS: n rakenteeseen. Tämän vuoksi relaatiotietokannat soveltuvat hyvin sovelluksiin, jotka edellyttävät porrastettua pääsyä. Esimerkiksi asiakkaat voivat tarkastella tilejä, kun taas agentit voivat sekä tarkastella että tehdä tarvittavia muutoksia.

Heikkoudet

Relaatiotietokantojen suurin heikkous on niiden suurimman vahvuuden peili. Niin hyvin kuin he käsittelevät jäsenneltyä dataa, heillä on vaikeuksia jäsentämättömän datan kanssa. Todellisen maailman kokonaisuuksien esittäminen kontekstissa on vaikeaa RDBMS: n rajoissa. "Viipaloidut" tiedot on koottava taulukoista uudelleen luettavammiksi, ja nopeuteen voi vaikuttaa negatiivisesti. Kiinteä skeema ei reagoi hyvin muutokseen.

Kustannukset on huomio relaatiotietokannoissa. Ne ovat yleensä kalliimpia perustaa ja kasvaa. Vaakasuuntainen skaalaus tai skaalaus lisäämällä lisää palvelimia on yleensä sekä nopeampaa että taloudellisempaa kuin pystysuuntainen skaalaus, johon liittyy enemmän resursseja palvelimelle. Relaatiotietokantojen rakenne vaikeuttaa prosessia. Jakaminen (missä tiedot on jaettu vaakasuunnassa ja jaettu koko koneiden kokoelmaan) on välttämätöntä relaatiotietokannan skaalaamiseksi. Relaatiotietokantojen jakaminen samalla kun ylläpidetään ACID-yhteensopivuutta, voi olla haaste.

Käytä relaatiotietokantaa:

  • Tilanteet, joissa tietojen eheys on ehdottoman ensiarvoisen tärkeää (esim. Taloudellisissa sovelluksissa, puolustuksessa ja turvallisuudessa sekä yksityisessä terveystiedossa)
  • Hyvin jäsennelty data
  • Sisäisten prosessien automatisointi

Asiakirjakauppa (MongoDB, Couchbase)

Asiakirjavarasto on ei-suhteellinen tietokanta, joka tallentaa tietoja JSON-, BSON- tai XML-asiakirjoihin. Niissä on joustava malli. Toisin kuin SQL-tietokannoissa, joissa käyttäjien on ilmoitettava taulukon malli ennen tietojen lisäämistä, asiakirjakaupat eivät pakota asiakirjarakennetta. Asiakirjat voivat sisältää mitä tahansa haluttua tietoa. Heillä on avainarvopareja, mutta he myös upottavat määritteen metatiedot kyselyn helpottamiseksi.

Vahvuudet

Asiakirjakaupat ovat erittäin joustavia. He käsittelevät puolistrukturoitua ja rakentamatonta tietoa hyvin. Käyttäjien ei tarvitse tietää asennuksen aikana, minkä tyyppisiä tietoja tallennetaan, joten tämä on hyvä valinta, kun etukäteen ei ole selvää, millaista dataa vastaanotetaan.

Käyttäjät voivat luoda halutun rakenteen tiettyyn asiakirjaan vaikuttamatta kaikkiin asiakirjoihin. Järjestelmää voidaan muokata aiheuttamatta seisokkeja, mikä johtaa korkeaan käytettävyyteen. Myös kirjoitusnopeus on nopea.

Joustavuuden lisäksi kehittäjät pitävät asiakirjakaupoista, koska niitä on helppo skaalata vaakasuunnassa. Vaakasuuntaisen skaalauksen edellyttämä sirpaloituminen on paljon intuitiivisempaa kuin relaatiotietokannoissa, joten dokumenttivarastot skaalautuvat nopeasti ja tehokkaasti.

Heikkoudet

Asiakirjatietokannat uhraavat ACID-yhteensopivuuden joustavuuden vuoksi. Vaikka kysely voidaan tehdä asiakirjassa, se ei ole mahdollista kaikissa asiakirjoissa.

Käytä asiakirjatietokantaa:

  • Rakentamattomat tai puolistrukturoidut tiedot
  • Sisällön hallinta
  • Tietojen perusteellinen analyysi
  • Nopea prototyyppien muodostus

Avainarvosäilö (Redis, Memcached)

Avainarvosäilö on eräänlainen ei-suhteellinen tietokanta, jossa kukin arvo liittyy tiettyyn avaimeen. Se tunnetaan myös nimellä assosiatiivinen taulukko.

"Avain" on yksilöllinen tunniste, joka liittyy vain arvoon. Avaimet voivat olla mitä tahansa DBMS: n sallimia. Esimerkiksi Redisissä avaimen mies voi olla mikä tahansa binäärisarja enintään 512 Mt asti.

"Arvot" tallennetaan blobeiksi, eivätkä ne tarvitse ennalta määritettyä mallia. Ne voivat olla melkein missä tahansa muodossa: numerot, merkkijonot, laskurit, JSON, XML, HTML, PHP, binäärit, kuvat, lyhyet videot, luettelot ja jopa toinen objektiin kapseloitu avain-arvo-pari. Jotkin DBMS: t sallivat tietotyypin määrittämisen, mutta se ei ole pakollista.

Vahvuudet

Tämän tyyppinen tietokanta on paljon positiivisia. Se on uskomattoman joustava ja pystyy käsittelemään helposti hyvin laajan joukon tietotyyppejä. Avaimia käytetään siirtymään suoraan arvoon ilman hakemistohakua tai liittymiä, joten suorituskyky on korkea. Siirrettävyys on toinen etu: avainarvovarastot voidaan siirtää järjestelmästä toiseen kirjoittamatta koodia uudelleen. Lopuksi, ne ovat erittäin vaakasuunnassa skaalautuvia ja niiden käyttökustannukset ovat alhaisemmat.

Heikkoudet

Joustavuudella on hinta. Arvojen kyseleminen on mahdotonta, koska ne on tallennettu möykkyinä ja ne voidaan palauttaa vain sellaisenaan. Tämän vuoksi on vaikea tehdä raportointia tai muokata osia arvoista. Kaikkia objekteja ei ole helppo mallintaa avainarvopareina.

Käytä avainarvosäilöä:

  • Suositukset
  • Käyttäjäprofiilit ja asetukset
  • Strukturoimattomat tiedot, kuten tuotearvostelut tai blogikommentit
  • Istunnonhallinta mittakaavassa
  • Tiedot, joita käytetään usein, mutta joita ei usein päivitetä

Laaja sarakekauppa (Cassandra, HBase)

Laajakolonniset myymälät, joita kutsutaan myös sarakemyymälöiksi tai laajennettavissa oleviksi tietovarastoiksi, ovat dynaamisia sarakekohtaisia ​​ei-suhteellisia tietokantoja. Niitä pidetään joskus eräänä avainarvosäilönä, mutta niillä on myös perinteisten relaatiotietokantojen määritteet.

Laajakolonnisissa myymälöissä käytetään avaintilan käsitettä skeemojen sijaan. Avaintila kattaa sarakeperheet (samanlaiset kuin taulukot, mutta rakenteeltaan joustavammat), joista kukin sisältää useita rivejä, joilla on erilliset sarakkeet. Jokaisella rivillä ei tarvitse olla sama numero tai saraketyyppi. Aikaleima määrittää datan viimeisimmän version.

Vahvuudet

Tämän tyyppisillä tietokannoilla on joitain etuja sekä suhteellisista että ei-suhteellisista tietokannoista. Se käsittelee paremmin sekä jäsenneltyjä että puolistrukturoituja tietoja kuin muut ei-suhteelliset tietokannat, ja sitä on helpompi päivittää. Relaatiotietokantoihin verrattuna se on vaakasuunnassa skaalautuva ja nopeampi mittakaavassa.

Saraketietokannat pakataan paremmin kuin rivipohjaiset järjestelmät. Suuria tietojoukkoja on myös helppo tutkia. Laaja sarakekaupat ovat erityisen hyviä esimerkiksi koontikyselyissä.

Heikkoudet

Kirjoitukset ovat kalliita pienissä. Vaikka päivittäminen on helppoa kerralla, yksittäisten tietueiden lataaminen ja päivittäminen on vaikeaa. Lisäksi laajapylväiset kaupat ovat hitaampia kuin relaatiotietokannat käsitellessään tapahtumia.

Käytä leveän sarakkeen myymälää:

  • Big data -analytiikka, missä nopeus on tärkeää
  • Tietovarastointi isoille tiedoille
  • Laajat projektit (tämä tietokantatyyli ei ole hyvä työkalu keskimääräisiin transaktiosovelluksiin)

Hakukone (Elasticsearch)

Voi tuntua oudolta sisällyttää hakukoneet artikkeliin tietokantatyypeistä. Elasticsearch on kuitenkin kasvanut suosiotaan tällä alalla, kun kehittäjät etsivät innovatiivisia tapoja vähentää hakuviiveitä. Elastisearch on ei-suhteellinen, asiakirjapohjainen tietojen tallennus- ja hakuratkaisu, joka on erityisesti järjestetty ja optimoitu tietojen tallentamiseen ja nopeaan hakemiseen.

Vahvuudet

Elastisearch on hyvin skaalautuva. Siinä on joustava malli ja nopea tietueiden haku, edistyneillä hakuvaihtoehdoilla, kuten kokotekstihaku, ehdotukset ja monimutkaiset hakulausekkeet.

Yksi mielenkiintoisimmista hakuominaisuuksista on. Stemming analysoi sanan juurimuodon löytääkseen asiaankuuluvat tietueet, vaikka toista muotoa käytetään. Esimerkiksi käyttäjä, joka etsii työllistämistietokannasta "maksavia työpaikkoja", löysi myös työpaikat, jotka on merkitty merkinnöillä "palkattu" ja "palkka".

Heikkoudet

Elastisearchia käytetään enemmän välittäjänä tai lisämyymälänä kuin ensisijaisena tietokantana. Sen kestävyys on heikko ja turvallisuus heikko. Ei ole luontaista todennusta tai kulunvalvontaa. Elastisearch ei myöskään tue tapahtumia.

Käytä hakukonetta kuten Elastisearch:

  • Paranna käyttökokemusta nopeammilla hakutuloksilla
  • Kirjaaminen

Loppuhuomioita

Jotkin sovellukset sopivat siististi tietyn tietokantatyypin vahvuuksiin, mutta useimmissa projekteissa on päällekkäisyyksiä kahden tai useamman välillä. Tällöin voi olla hyödyllistä tarkastella, mitkä tietyt tietokannat väitetyissä tyyleissä ovat hyviä ehdokkaita. Toimittajat tarjoavat laajan valikoiman ominaisuuksia tietokannan räätälöimiseksi yksittäisten standardien mukaan. Jotkut näistä voivat auttaa ratkaisemaan epävarmuutta tekijöistä, kuten turvallisuudesta, skaalautuvuudesta ja kustannuksista.

$config[zx-auto] not found$config[zx-overlay] not found