Ohjelmointi

NoSQL-erotuomarit: Parhaat avainarvotietokannat verrattuna

Useimmat sovellukset tarvitsevat jonkinlaista pysyvyyttä - tapaa tallentaa tiedot sovelluksen ulkopuolelle säilytystä varten. Alkeellisin tapa on kirjoittaa tietoja tiedostojärjestelmään, mutta siitä voi nopeasti tulla hidas ja raskas tapa ratkaista ongelma. Täysimittainen tietokanta tarjoaa tehokkaan tavan indeksoida ja noutaa tietoja, mutta se voi myös olla ylivoimainen. Joskus tarvitset vain nopean tavan ottaa vapaamuotoinen tieto, liittää se etikettiin, sijoittaa se jonnekin ja vetää se takaisin nopeasti.

Syötä avainarvosäilö. Se on pohjimmiltaan NoSQL-tietokanta, mutta tietokanta, jolla on hyvin erityinen tarkoitus ja tarkoituksella rajoitettu suunnittelu. Sen tehtävänä on antaa sinun ottaa tietoja (arvo), kiinnittää niihin tarra (avain) ja tallentaa ne joko muistiin tai johonkin muuhun nopeaan hakuun optimoituun tallennusjärjestelmään. Sovellukset käyttävät avainarvotietokantoja kaikkeen objektien välimuistiin tallentamisesta yleisesti käytettyjen tietojen jakamiseen sovellussolmujen välillä.

Monet relaatiotietokannat voivat toimia avainarvomyymälöinä, mutta se on vähän kuin traktoriperävaunun käyttö päivittäistavarakaupoissa. Se toimii, mutta se on dramaattisesti tehotonta, ja ongelman ratkaisemiseksi on paljon kevyempiä tapoja. Avainarvosäilö, kuten muutkin NoSQL-tietokannat, tarjoaa juuri tarpeeksi infrastruktuuria yksinkertaiseen arvon tallentamiseen ja hakemiseen, integroituu suoremmin sovelluksia käyttäviin sovelluksiin ja skaalautuu tarkemmin sovellusten työmäärän kanssa.

Avainarvoa NoSQL-tietokannan ominaisuuksia verrattiin

Viisi laajalti käytettyä tuotetta (mukaan lukien yksi pilvipalvelu) ovat harkitsemisen arvoisia; niitä laskutetaan nimenomaisesti avainarvotietokannoiksi tai ne tarjoavat avaimen arvon tallennuksen keskeisenä ominaisuutena. Heidän peruserot:

  • Hazelcast ja Memcached pyrkivät kohti minimalismia, eivätkä edes vaivaudu varmuuskopioimaan tiedot levylle.
  • Aerospike, Cosmos DB ja Redis ovat täydellisempiä, mutta kiertävät silti avaimen arvon metaforan ympärillä.

Taulukko: Avainarvoisten NoSQL-tietokantatuotteiden vertailu

Avain: L= Linux, W= Windows, M= MacOS, S= Solaris, Minä= iOS, A= Android, O= Muu.

*Kolmannen osapuolen toteuttamalla.

 AerospikeHazelcast IMDGMicrosoft Azure Cosmos DBMemcachedRedis
AlustatLWMOJavaVain pilviLWMOLWMO
Nykyinen versio3.14.1.13.9N / A1.5.14.0.1
Alkuperäinen julkaisu20122008201720032009
LisenssiAGPLApache 2OmaBSDBSD
LevytukiJoo Ei Joo Ei KylläBSD
RyhmittelyJooJooJoo Ei Joo
Sirpalointi / osiointiJooJooJoo Ei Joo
Natiivi komentosarjaJooJavaJoo Ei Joo
TapahtumatAvain kohtiJooJoo Ei Joo
UpotettavaJoo*

Joo Ei Joo*

Joo*

Aerospike-avaimen arvoinen NoSQL-tietokanta perusteellisesti

Jos Redis on Memcached steroideilla, Aerospike voidaan sanoa olevan Redis steroideilla. Kuten Redis, Aerospike on avainarvovarasto, joka voi toimia pysyvänä tietokantana tai datan välimuistina. Aerospike on suunniteltu helposti klusteroitavaksi ja helposti skaalattavaksi tukemaan paremmin yrityksen kuormitusta.

Ainutlaatuiset ominaisuudet Aerospikelle

Suuri osa Aerospike-kaiuttimista toistaa sekä muita avainarvomyymälöitä että muita NoSQL-tietokantoja. Tiedot tallennetaan ja haetaan avainten avulla, ja tiedot voidaan säilyttää useina perustietotyyppeinä, mukaan lukien 64-bittiset kokonaisluvut, merkkijonot, kaksoistarkkuussäästöt ja raakabinaaritiedot sarjallisina useista yleisistä ohjelmointikielistä.

Aerospike voi myös tallentaa tietoja monimutkainen tyypit - luettelot arvoista, avainarvoparien kokoelmat, joita kutsutaan kartoiksi, ja paikkatietotiedot GeoJSON-muodossa. Aerospike voi suorittaa natiivin käsittelyn paikkatietoihin - esimerkiksi selvittää, mitkä tietokantaan tallennetut sijainnit ovat lähinnä toisiaan vain suorittamalla kyselyn - mikä tekee siitä houkuttelevan vaihtoehdon sijaintiin luottavien sovellusten kehittäjille.

Aerospikeen tallennetut tiedot voidaan järjestää useisiin hierarkkisiin säiliöihin. Jotkut NoSQL-järjestelmät ovat dokumenttikeskeisiä, mikä tarkoittaa, että data on kapseloitu jonkinlaiseen objektiin, tyypillisesti JSON: iin. Aerospike-säiliöt ovat suunnilleen asiakirjojen kaltaisia, mutta niillä on Aerospikelle ominaisia ​​toimintoja ja käyttäytymistä. Jokaisen säilölajin avulla voit asettaa erilaiset käyttäytymisominaisuudet sen sisällä oleviin tietoihin.

Esimerkiksi konttien ylin taso, nimitilat, määrittää, onko data tallennettu levylle, RAM-muistille vai molemmille; replikoidaanko tiedot klusterissa vai klustereiden välillä; ja milloin tai miten tiedot vanhenevat tai häädetään. Nimitilojen avulla Aerospike antaa kehittäjille mahdollisuuden pitää useimmin käytetyt tiedot muistissa mahdollisimman nopeasti.

Kuinka Aerospike käsittelee varastointia ja klustereita

Aerospike voi pitää tietonsa melkein missä tahansa tiedostojärjestelmässä, mutta se on kirjoitettu nimenomaan SSD-levyjen hyödyntämiseksi. Älä kuitenkaan odota pudottavan Aerospikea mihinkään vanhaan SSD-asemaan ja odota hyviä tuloksia. Aerospiken kehittäjät ylläpitävät luetteloa hyväksytyistä SSD-laitteista, ja he ovat luoneet ACT-työkalun SSD-tallennuslaitteiden suorituskyvyn arvioimiseksi Aerospike-kuormitusten alla.

Aerospike, kuten useimmat NoSQL-järjestelmät, käyttää jaettua mitään -arkkitehtuuria replikoinnin ja klusteroitumisen vuoksi. Aerospikellä ei ole pääsolmuja eikä manuaalista sirpaloitumista. Jokainen solmu on identtinen. Tiedot jaetaan satunnaisesti solmuille ja tasapainotetaan automaattisesti, jotta pullonkaulat eivät muodostu. Halutessasi voit asettaa säännöt siitä, kuinka aggressiivisesti tiedot tasapainotetaan. Voit määrittää useita klustereita, jotka toimivat eri verkkosegmenteissä tai jopa eri datakeskuksissa, synkronoitavaksi keskenään.

Komentosarjat Aerospikessa

Kuten Redis, Aerospike antaa kehittäjille mahdollisuuden kirjoittaa Lua-komentosarjoja tai UDF: itä (käyttäjän määrittelemät toiminnot), jotka toimivat Aerospike-moottorin sisällä. Voit käyttää UDF-tiedostoja tietueiden lukemiseen tai muuttamiseen, mutta on parasta käyttää niitä nopeaan, vain luku -tilaan, kartan pienentämiseen koko kokoelmissa tai tietueiden "suoratoistoon" useissa solmuissa.

Mistä saada Aerospike

Aerospiken yhteisöversio voidaan ladata suoraan Aerospiken verkkosivustolta. Tämä sisältää palvelinversiot Linuxille, työpöytäversiot Applen MacOS: lle ja Microsoftin Windowsille, pilviversiot Amazon EC2: lle, Azure ja Google Compute Engine sekä Docker-säilöt. Aerospike-yritysversio on saatavana Aerospike's Quick Start -ohjelman kautta, joka tarjoaa rajoittamattoman 90 päivän kokeiluversion.

Lähdekoodi on saatavilla GitHubissa.

Hazelcast IMDG -avaimen arvoinen NoSQL-tietokanta perusteellisesti

Hazelcastia laskutetaan "muistin sisäisenä tietoruudukko", joka on lähinnä tapa yhdistää RAM- ja CPU-resurssit useille koneille, jotta tietojoukot voidaan jakaa näiden koneiden välillä ja manipuloida muistissa.

NoSQL-tietokannat tarjoavat avainarvo-, kaavio- tai asiakirjaominaisuuksia. Hazelcast keskittyy avaimen arvon toiminnallisuuteen ja korostaa nopean pääsyn hajautettuihin tietoihin. Valmistajiensa mukaan sitä voidaan käyttää myös vaihtoehtona tuotteille, kuten Pivotal Gemfire, Software Terracotta ja Oracle Coherence.

Hazelcast voidaan suorittaa hajautettuna palveluna tai upottaa suoraan Java-sovellukseen. Asiakkaita on saatavana Java-, Scala-, .Net-, C / C ++ -, Python- ja Node.js-tiedostoille, ja yksi Go-palvelusta on parhaillaan töissä.

Ainutlaatuiset ominaisuudet Hazelcastille

Hazelcast on rakennettu Java-sovelluksella ja sillä on Java-keskitetty ekosysteemi. Jokaisella Hazelcast-klusterin solmulla on Hazelcastin ydinkirjaston, IMDG, esiintymä JVM: llä. Kuinka Hazelcast toimii tietojen kanssa, on myös tarkasti määritelty Java-kielirakenteisiin. Esimerkiksi Java's Map -käyttöliittymää Hazelcast käyttää avainarvojen tallentamiseen. Kuten Memcachedissa, mitään ei kirjoiteta levylle; kaikki pidetään muistissa koko ajan.

Yksi etu, jonka Hazelcast voi tarjota hajautetussa ympäristössä, on "välimuisti", jossa yleisesti pyydetyt objektit siirretään palvelimelle, joka tekee pyynnöt. Tällä tavalla pyynnöt voidaan suorittaa suoraan muistissa samassa järjestelmässä ilman edestakaista matkaa verkon yli.

Avainarvoparien lisäksi voit tallentaa ja jakaa monia muita tietorakenteita Hazelcastin kautta. Jotkut ovat yksinkertaisia ​​Java-objektien toteutuksia, kuten Map. Muut ovat erityisiä Hazelcastille. Esimerkiksi MultiMap on avainarvotallennuksen muunnos, joka voi tallentaa useita arvoja samaan avaimeen. Nämä ominaisuudet mahdollistavat joidenkin muiden NoSQL-järjestelmien käyttäytymisen, kuten tietojen järjestämisen asiakirjoiksi, mutta empaasi on rakenteilla, jotka mahdollistavat tietojen jakamisen ja käyttämisen nopeasti.

Kuinka Hazelcast käsittelee klustereita

Hazelcast-klustereilla ei ole isäntä / orja-asetuksia; kaikki on peer-to-peer. Tiedot sirpotaan ja jaetaan automaattisesti klusterin kaikille jäsenille. Voit myös nimetä tietyt klusterin jäsenet "lite-jäseniksi", joilla ei ole aluksi tietoja, mutta jotka voidaan myöhemmin ylentää täysjäseniksi. Tämä antaa joitain solmuja käyttää tiukasti laskentaan tai tietojen jakamiseen asteittain klusterin kautta, kun se tuodaan verkkoon.

Hazelcast voi myös varmistaa, että toiminnot etenevät vain, jos ainakin tietty määrä solmuja on verkossa. Tämä toiminto on kuitenkin määritettävä manuaalisesti, ja se toimii vain tietyissä tietorakenteissa. Hazelcast-versiosta 3.9 alkaen voit määrittää tietorakenteet uudelleen klusterissa ilman, että sinun tarvitsee ensin ottaa sitä offline-tilaan.

Mistä saada Hazelcast

Hazelcast on ladattavissa suoraan Hazelcast-sivustolta. Se on tyypillisesti otettu käyttöön Java .JAR-tiedostojen kokoelmana. Docker-kuvat ovat saatavana myös virallisessa Docker-rekisterissä.

Voit ladata yrityksen Hazelcast-version suoraan Hazelcastista. Voit myös hankkia 30 päivän ilmaisen kokeilun avaimen Hazelcastille.

Memcached avaimen arvo NoSQL-tietokanta perusteellisesti

Memcached on suunnilleen yhtä yksinkertainen ja nopea kuin avainarvotallennus saa. Alun perin kirjoitettu kiihdytyskerrokseksi LiveJournal -blogialustalle, Memcachedista on sittemmin tullut läsnä kaikkialla verkkotekniikkapinoissa. Jos sinulla on monia pieniä fragmentteja tiedoista, jotka voidaan liittää yksinkertaiseen avaimeen eikä sinun tarvitse kopioida välimuistitiedostojen välillä, Memcached on oikea työkalu.

Memcachedille ominaiset ominaisuudet

Memcachedia käytetään yleisimmin kyselyjen tallentamiseen tietokannasta ja tulosten pitämiseen yksinomaan muistissa. Tässä suhteessa se on toisin kuin monet muut NoSQL-tietokannat, avainarvo tai muuten, koska ne tallentavat tietoja jossakin pysyvässä muodossa.

Memcached ei tue tietovarastoa mihinkään. Kaikki avaimet ovat vain muistissa, joten ne haihtuvat aina, kun Memcached-ilmentymä tai sitä isännöivä palvelin nollataan. Memcachedia ei siis voida käyttää korvaamaan NoSQL-tietokantaa.

Mihin sitä voidaan kuitenkin käyttää, on nopea tapa piilottaa yleisesti käytetty data, joka saattaa viedä suuruusluokkaa enemmän aikaa kyselyyn lähteestä.

Kaikki tiedot, jotka voidaan sarjoittaa binäärivirraksi, voidaan sijoittaa Memcachediin. Arvot voidaan asettaa vanhentumaan tietyn ajan kuluttua tai pyynnöstä viittaamalla avaimet sovelluksen arvoihin. Mille tahansa Memcached-esiintymälle omistamasi muistimäärä on täysin sinun tehtäväsi, ja useat palvelimet voivat käyttää Memcachediä vierekkäin levittääksesi kuorman. Lisäksi Memcached skaalaa lineaarisesti järjestelmässä käytettävissä olevien ytimien määrän kanssa, koska se on monisäikeinen sovellus.

Suosituimmilla ohjelmointikielillä on asiakaskirjastoja Memcachedille. Esimerkiksi, libmemcached sallii C- ja C ++ -ohjelmien toimia suoraan Memcached-ilmentymien kanssa. Se antaa myös Memcachedin upottaa C-ohjelmiin.

Kuinka Memcached käsittelee klustereita

Vaikka voit käyttää useita Memcached-esiintymiä, olipa kyse samalla palvelimella tai useissa solmuissa verkon yli, esiintymien välillä ei ole automaattista yhdistämistä tai tietojen synkronointia. Memcached-ilmentymään lisätyt tiedot ovat käytettävissä vain kyseisestä instanssista, ajanjaksolta.

Mistä saada Memcached

Memcachedin lähdekoodi on ladattavissa GitHubista ja viralliselta Memcached-sivustolta. Linux-binäärit ovat käytettävissä useimpien Linux-jakelujen arkistoissa. Windows-käyttäjät voivat rakentaa sen suoraan lähteestä; joitain epävirallisia binäärejä on rakennettu aiemmin, mutta ne eivät näytä olevan luotettavasti saatavilla.

Microsoft Azure Cosmos DB: n avainarvoinen NoSQL-tietokanta perusteellisesti

Suurimmalla osalla tietokannoista on yksi kattava paradigma: asiakirjavarasto, avainarvosäilö, laaja sarakemyymälä, kaaviotietokanta ja niin edelleen. Ei niin Azure Cosmos DB. Johtettu Microsoftin NoSQL-tietokannasta palveluna, DocumentDB, Cosmos DB on Microsoftin yritys luoda yksi tietokanta, joka voi käyttää useita paradigmoja.

Ainutlaatuiset ominaisuudet Azure Cosmos DB: lle

Cosmos DB käyttää ns. Atomitallennussarjan tallennusjärjestelmää eri tietomallien tukemiseen. Atomit ovat primitiivisiä tyyppejä, kuten merkkijonot, kokonaisluvut ja Boolen arvot. Tietueet ovat atomikokoelmia, kuten C.: n rakenteet. Sekvenssit ovat joko atomien tai tietueiden taulukoita.

Cosmos DB käyttää näitä rakennuspalikoita toistamaan useiden tietokantatyyppien käyttäytymistä. Se voi toistaa perinteisten relaatiotietokantojen taulukoiden käyttäytymistä. Mutta se voi myös toistaa NoSQL-järjestelmissä olevien tietotyyppien toiminnot - skeemattomat JSON-asiakirjat (DocumentDB ja MongoDB) ja kaaviot (Gremlin, Apache TinkerPop).

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