Programavimas

„NoSQL“ išskirtiniai: geriausios raktų vertės duomenų bazės, palyginti

Daugumai programų reikalingas tam tikras atkaklumas - būdas saugoti duomenis už programos ribų, kad jie būtų saugomi. Pats paprasčiausias būdas yra įrašyti duomenis į failų sistemą, tačiau tai greitai gali tapti ltu ir nepatogiu problemos sprendimo būdu. Visiška duomenų bazė yra galingas būdas indeksuoti ir gauti duomenis, tačiau tai taip pat gali būti per daug. Kartais viskas, ko jums reikia, yra greitas būdas paimti laisvos formos informaciją, susieti ją su etikete, padėti kur nors ir vėl ištraukti.

Įveskite rakto vertės saugyklą. Iš esmės tai yra „NoSQL“ duomenų bazė, tačiau turinti labai konkretų tikslą ir sąmoningai suvaržytą dizainą. Jo užduotis yra leisti jums paimti duomenis (vertę), užklijuoti jiems etiketę (raktą) ir laikyti juos atmintyje arba kitoje atminties sistemoje, kuri yra optimizuota greitai gauti. Programos naudoja raktų vertės duomenų bazes viskam, nuo objektų talpyklos iki bendrai naudojamų duomenų bendrinimo tarp programų mazgų.

Daugybė reliacinių duomenų bazių gali veikti kaip pagrindinės vertės saugyklos, tačiau tai šiek tiek panašu į vilkiko naudojimąsi maisto prekių parduotuvėmis. Tai veikia, bet tai dramatiškai neefektyvu, ir yra kur kas lengvesnių būdų išspręsti problemą. Raktinių verčių saugykla, kaip ir kitos „NoSQL“ duomenų bazės, suteikia tik pakankamai infrastruktūros paprastam vertės saugojimui ir paieškai, tiesiogiai integruojama su ją naudojančiomis programomis ir masteliais nuodugniau su programų darbo krūviu.

Palygintos pagrindinės vertės „NoSQL“ duomenų bazės funkcijos

Penki plačiai naudojami produktai (įskaitant vieną debesų paslaugą) yra verti jūsų dėmesio; jie yra aiškiai apmokestinami kaip pagrindinės vertės duomenų bazės arba siūlo pagrindinės vertės raktinės vertės saugojimą. Jų pagrindiniai skirtumai:

  • „Hazelcast“ ir „Memcached“ linkę į minimalizmą ir net nesivargina disko atsarginių kopijų.
  • „Aerospike“, „Cosmos DB“ ir „Redis“ yra visapusiškesnių funkcijų, tačiau vis tiek sukasi apie pagrindinės vertės metaforą.

Lentelė: Palyginti pagrindinės vertės „NoSQL“ duomenų bazės produktai

Raktas: L= „Linux“, W= „Windows“, M= „MacOS“, S= „Solaris“, = „iOS“, A= „Android“, O= Kita.

*Per trečiųjų šalių įgyvendinimą.

 AerospikeHazelcast IMDG„Microsoft Azure Cosmos“ DBMemcachedRedis
PlatformosLWMO„Java“Tik debesysLWMOLWMO
Dabartinė versija3.14.1.13.9Nėra1.5.14.0.1
Pirminis leidimas20122008201720032009
LicencijaAGPLApache 2NuosavybėBSDBSD
DiskinisTaip Ne Taip Ne TaipBSD
GrupavimasTaipTaipTaip Ne Taip
Dalijimas / skaidymasTaipTaipTaip Ne Taip
Savieji scenarijaiTaip„Java“Taip Ne Taip
SandoriaiUž raktąTaipTaip Ne Taip
ĮterpiamaTaip *

Taip Ne Taip *

Taip *

„Aerospike“ pagrindinės vertės „NoSQL“ duomenų bazė

Jei Redis yra prisiminęs steroidų, galima sakyti, kad „Aerospike“ yra Redis dėl steroidų. Kaip ir Redis, „Aerospike“ yra pagrindinės vertės saugykla, kuri gali veikti kaip nuolatinė duomenų bazė arba duomenų talpykla. „Aerospike“ sukurtas taip, kad jį būtų lengva sugrupuoti ir lengvai keisti, kad būtų lengviau palaikyti įmonės darbo krūvį.

Unikalios „Aerospike“ savybės

Daug „Aerospike“ atkartoja ir kitas pagrindinės vertės saugyklas, ir kitas „NoSQL“ duomenų bazes. Duomenys saugomi ir gaunami naudojant raktus, o duomenys gali būti saugomi keliais pagrindiniais duomenų tipais, įskaitant 64 bitų sveikuosius skaičius, eilutes, dvigubo tikslumo plūdurius ir neapdorotus dvejetainius duomenis, serijinius iš daugelio įprastų programavimo kalbų.

Aerospike taip pat gali saugoti duomenis kompleksas tipai - reikšmių sąrašai, pagrindinių reikšmių porų, vadinamų žemėlapiais, rinkiniai ir geoerdviniai duomenys „GeoJSON“ formatu. „Aerospike“ gali atlikti vietinį geoerdvinių duomenų apdorojimą - pavyzdžiui, nustatyti, kurios duomenų bazėje saugomos vietos yra arčiausiai viena kitos, tiesiog atlikdamos užklausą, todėl tai yra patraukli galimybė vietove besiremiančių programų kūrėjams.

„Aerospike“ saugomus duomenis galima suskirstyti į kelis hierarchinius konteinerius. Kai kurios „NoSQL“ sistemos yra orientuotos į dokumentus, o tai reiškia, kad duomenys yra sutalpinti į kokį nors objektą, paprastai JSON. Naudojant „Aerospike“, konteineriai yra maždaug tokie patys kaip dokumentai, tačiau jų funkcijos ir elgsena būdinga „Aerospike“. Kiekviena konteinerio rūšis leidžia nustatyti skirtingas elgesio ypatybes jo viduje esančiuose duomenyse.

Pavyzdžiui, aukščiausias konteinerių lygis, vardų sritis, nustato, ar duomenys saugomi diske, RAM atmintyje, ar abu; ar duomenys yra kartojami grupėje, ar visoje grupėje; ir kada ar kaip pasibaigia duomenų iškrovimas ar iškeldinimas. Naudodamas vardų sritis, „Aerospike“ leidžia kūrėjams laikyti atmintyje dažniausiai pasiekiamus duomenis, kad atsakymas būtų kuo greitesnis.

Kaip „Aerospike“ tvarko saugojimą ir grupavimą

„Aerospike“ gali saugoti savo duomenis beveik bet kurioje failų sistemoje, tačiau jie buvo parašyti specialiai tam, kad būtų galima pasinaudoti SSD. Be to, nesitikėkite, kad „Aerospike“ numesite į bet kurį seną SSD ir tikitės gerų rezultatų. „Aerospike“ kūrėjai tvarko patvirtintų SSD įrenginių sąrašą ir sukūrė įrankį, pavadintą ACT, kad įvertintų SSD saugojimo įrenginių našumą esant „Aerospike“ darbo krūviams.

„Aerospike“, kaip ir dauguma „NoSQL“ sistemų, naudoja kopijavimo nieko neturinčią architektūrą replikacijos ir klasterių labui. „Aerospike“ neturi pagrindinių mazgų ir rankinio skaldymo. Kiekvienas mazgas yra identiškas. Duomenys atsitiktinai paskirstomi mazgams ir automatiškai išbalansuojami, kad nesusidarytų kliūtys. Jei norite, galite nustatyti taisykles, kaip agresyviai subalansuoti duomenys. Galite sukonfigūruoti kelis klasterius, veikiančius skirtinguose tinklo segmentuose ar net skirtinguose duomenų centruose, kad jie būtų sinchronizuojami vienas su kitu.

Scenarijai „Aerospike“

Kaip ir Redis, „Aerospike“ leidžia kūrėjams rašyti „Lua“ scenarijus arba UDF (vartotojo apibrėžtas funkcijas), kurie veikia „Aerospike“ variklyje. Galite naudoti UDF įrašams skaityti ar keisti, tačiau geriausia juos naudoti norint atlikti didelės spartos, tik skaitymo, žemėlapių mažinimo operacijas visose kolekcijose arba įrašų „srautus“ keliuose mazguose.

Kur gauti aerospike

„Aerospike“ bendruomenės leidimą galima atsisiųsti tiesiai iš „Aerospike“ svetainės. Tai apima „Linux“ serverio leidimus, „Apple“ „MacOS“ ir „Microsoft Windows“ darbalaukio versijas, „Amazon EC2“, „Azure“ ir „Google Compute Engine“ debesų leidimus ir „Docker“ talpyklas. Verslo „Aerospike“ leidimą galima įsigyti per „Aerospike“ greitojo paleidimo programą, kuri suteikia neribotą 90 dienų bandomąją versiją.

Šaltinio kodą galite rasti „GitHub“.

„Hazelcast“ IMDG pagrindinės vertės „NoSQL“ duomenų bazė

„Hazelcast“ pateikiamas kaip „atminties duomenų tinklelis“, iš esmės būdas sutelkti RAM ir procesoriaus išteklius kelioms mašinoms, kad duomenų rinkiniai būtų paskirstyti toms mašinoms ir manipuliuoti atmintyje.

„NoSQL“ duomenų bazėse yra pagrindinės vertės, grafiko ar dokumento funkcijos. „Hazelcast“ koncentruojasi į pagrindinės vertės funkcionalumą, pabrėždamas greitą prieigą prie paskirstytų duomenų. Pasak gamintojų, jis taip pat gali būti naudojamas kaip alternatyva tokiems produktams kaip „Pivotal Gemfire“, „Software Terracotta“ ir „Oracle Coherence“.

„Hazelcast“ galima paleisti kaip paskirstytą paslaugą arba įterpti tiesiai į „Java“ programą. Klientai gali naudotis „Java“, „Scala“, .Net, C / C ++, Python ir Node.js, o vienas skirtas „Go“ yra darbe.

Savybės, būdingos tik „Hazelcast“

„Hazelcast“ yra sukurtas naudojant „Java“ ir turi į „Java“ orientuotą ekosistemą. Kiekvienas „Hazelcast“ sankaupos mazgas JVM valdo pagrindinės „Hazelcast“ bibliotekos IMDG egzempliorių. Tai, kaip „Hazelcast“ veikia su duomenimis, taip pat glaudžiai susiejamas su „Java“ kalbos struktūromis. Pavyzdžiui, „Java Map“ sąsają „Hazelcast“ naudoja raktų vertės saugojimui užtikrinti. Kaip ir „Memcached“, nieko nėra įrašoma į diską; viskas visada laikoma atmintyje.

Viena iš „Hazelcast“ teikiamų pranašumų paskirstytoje aplinkoje yra „šalia talpyklos“, kai dažniausiai prašomi objektai yra perkeliami į serverį, pateikiantį užklausas. Tokiu būdu užklausas galima atlikti tiesiogiai tos pačios sistemos atmintyje, nereikalaujant pirmyn ir atgal tinkle.

Be „Key-Value“ porų, per „Hazelcast“ galite saugoti ir platinti daugybę kitų duomenų struktūrų rūšių. Kai kurie yra paprasti „Java“ objektų, pvz., „Map“, įgyvendinimai. Kiti būdingi „Hazelcast“. Pavyzdžiui, „MultiMap“ yra raktų reikšmių saugyklos variantas, galintis tuo pačiu raktu saugoti kelias reikšmes. Šios savybės leidžia mėgdžioti kai kuriuos kitų NoSQL sistemų elgesio būdus, pavyzdžiui, duomenų organizavimą į dokumentus, tačiau svarbiausia yra struktūros, leidžiančios greitai paskirstyti duomenis ir prieiti prie jų.

Kaip „Hazelcast“ valdo grupes

„Hazelcast“ grupėse nėra pagrindinio / vergo sąrankos; viskas yra bendraamžiai. Duomenys automatiškai suskaidomi ir paskirstomi visiems grupės nariams. Taip pat galite paskirti tam tikrus klasterio narius kaip „supaprastintus“, kurie iš pradžių neturi duomenų, bet vėliau gali būti paskirti tikraisiais nariais. Tai leidžia kai kuriuos mazgus naudoti griežtai skaičiavimams arba palaipsniui paskirstyti duomenis per grupę, kol jie prijungiami prie interneto.

„Hazelcast“ taip pat gali užtikrinti, kad operacijos vyksta tik tuo atveju, jei bent tam tikras mazgų skaičius yra prisijungęs. Tačiau turite konfigūruoti šią elgseną rankiniu būdu ir tai veikia tik tam tikrose duomenų struktūrose. Nuo „Hazelcast“ versijos 3.9 galite perkonfigūruoti duomenų grupes visame klasteryje, prieš tai nereikalaudami jų atjungti.

Kur gauti „Hazelcast“

„Hazelcast“ galima atsisiųsti tiesiai iš „Hazelcast“ svetainės. Paprastai jis diegiamas kaip „Java“ .JAR failų rinkinys. „Docker“ vaizdus taip pat galite rasti oficialiame „Docker“ registre.

Įmonės „Hazelcast“ leidimą galite atsisiųsti tiesiai iš „Hazelcast“. Taip pat galite gauti 30 dienų nemokamą „Hazelcast“ bandomąjį raktą.

Išsamiai išsaugota raktų vertės „NoSQL“ duomenų bazė

„Memcached“ yra maždaug toks pat paprastas ir greitas, kaip ir raktų vertės saugojimas. Iš pradžių parašytas kaip internetinių dienoraščių platformos „LiveJournal“ pagreitinimo sluoksnis, „Memcached“ nuo to laiko tapo visur žiniatinklio technologijų paketų komponentu. Jei turite daug mažų duomenų fragmentų, kuriuos galima susieti su paprastu raktu ir kurių nereikia kopijuoti tarp talpyklos egzempliorių, „Memcached“ yra tinkamas įrankis.

Savybės, būdingos tik „Memcached“

„Memcached“ dažniausiai naudojamas norint išsaugoti užklausas iš duomenų bazės ir išsaugoti rezultatus tik atmintyje. Šiuo atžvilgiu jis skiriasi nuo daugelio kitų „NoSQL“ duomenų bazių, raktinės vertės ar kitokios, nes jose duomenys saugomi tam tikra forma.

„Memcached“ niekuo nepalaiko savo duomenų saugyklos. Visi raktai laikomi tik atmintyje, todėl jie išgaruoja, kai „Memcached“ egzempliorius arba jį talpinantis serveris yra atstatomi. Taigi „Memcached“ iš tikrųjų negali būti naudojamas kaip „NoSQL“ duomenų bazės pakaitalas.

Tačiau tai gali būti greitas būdas paslėpti dažniausiai naudojamus duomenis, kurie gali užtrukti daugiau laiko, kad būtų galima pateikti užklausą iš šaltinio.

Bet kokie duomenys, kuriuos galima susieti su dvejetainiu srautu, gali būti laikomi „Memcached“. Vertes galima nustatyti pasibaigus tam tikram laikui arba pagal pareikalavimą, nurodant raktus į programos reikšmes. Atminties kiekis, kurį skiriate bet kuriam „Memcached“ egzemplioriui, priklauso tik nuo jūsų, ir keli serveriai gali paleisti „Memcached“ greta, kad paskirstytų apkrovą. Be to, „Memcached“ skalė yra tiesinė pagal sistemoje esančių branduolių skaičių, nes tai yra daugiasluoksnė programa.

Populiariausiose programavimo kalbose yra „Memcached“ kliento bibliotekos. Pavyzdžiui, libmemcached leidžia C ir C ++ programoms tiesiogiai dirbti su „Memcached“ egzemplioriais. Tai taip pat leidžia „Memcached“ įterpti į C programas.

Kaip „Memcached“ tvarko klasterius

Nors galite paleisti kelis „Memcached“ egzempliorius tame pačiame serveryje ar keliuose mazguose visame tinkle, tarp egzempliorių nėra automatinio duomenų sujungimo ar sinchronizavimo. Duomenys, įterpti į „Memcached“ egzempliorių, yra prieinami tik nuo to egzemplioriaus, laikotarpio.

Kur gauti Memcached

„Memcached“ šaltinio kodą galima atsisiųsti iš „GitHub“ ir iš oficialios „Memcached“ svetainės. Daugumos „Linux“ paskirstymų saugyklose yra „Linux“ dvejetainiai failai. „Windows“ vartotojai gali ją sukurti tiesiai iš šaltinio; kai kurie neoficialūs dvejetainiai failai buvo sukurti anksčiau, tačiau, atrodo, jie nėra patikimai prieinami.

„Microsoft Azure Cosmos DB“ pagrindinės vertės „NoSQL“ duomenų bazė

Daugumoje duomenų bazių yra viena visa apimanti paradigma: dokumentų saugykla, raktų reikšmių saugykla, plačių stulpelių saugykla, grafikų duomenų bazė ir kt. Ne taip „Azure Cosmos DB“. Iš „Microsoft“ „NoSQL“ duomenų bazės, kaip paslaugos, „DocumentDB“, „Cosmos DB“ yra „Microsoft“ bandymas sukurti vieną duomenų bazę, kurioje būtų galima naudoti kelias paradigmas.

Unikalios „Azure Cosmos DB“ funkcijos

„Cosmos DB“ naudoja vadinamąją atomų įrašų sekos saugojimo sistemą, kad palaikytų skirtingus duomenų modelius. Atomai yra primityvūs tipai, tokie kaip eilutės, sveiki skaičiai ir Bulio reikšmės. Įrašai yra atomų kolekcijos, kaip ir C. struktūros. Sekos yra arba atomų, arba įrašų masyvai.

„Cosmos DB“ naudoja šias sudedamąsias dalis, kad atkartotų kelių tipų duomenų bazių veikimą. Tai gali atkurti įprastose reliacinėse duomenų bazėse rastų lentelių elgesį. Tačiau jis taip pat gali atkurti duomenų tipų, randamų NoSQL sistemose, funkcionalumą - be schemos JSON dokumentus (DocumentDB ir MongoDB) ir grafikus (Gremlin, Apache TinkerPop).

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