Programovanie

Štandardy NoSQL: Najlepšie databázy dokumentov

"Správny nástroj pre správne zamestnanie." Ak takáto múdrosť platí kdekoľvek, určite to platí aj pri výbere databázy, ktorú vývojár vyberie pre danú aplikáciu. Databázy dokumentov, jedna z rodiny dátových produktov súhrnne označovaných ako „NoSQL“, sú určené pre vývojárov, ktorí sa chcú zamerať na svoje žiadosť skôr ako databázová technológia.

V databáze dokumentov sa údaje neukladajú do tabuliek s odlišnými typmi stĺpcov. Namiesto toho je uložený vo voľných „dokumentoch“ s ľubovoľným počtom polí a ľubovoľným počtom vnorených štruktúr. Takéto dokumenty sú zvyčajne reprezentované ako JSON a aktualizujú sa buď prostredníctvom rozhraní API, alebo zasielaním JSON do koncového bodu REST. Väčšina všetkých moderných programovacích jazykov podporuje JSON a REST, takže práca s databázou dokumentov sa skôr podobá natívnej práci s týmito dátovými štruktúrami ako práca s tradičnou databázou.

Tento bez schémový dizajn, ako sa nazýva, má svoje obmedzenia. Vývojár musí urobiť viac práce, aby zabezpečil konzistentnosť vložených údajov, pretože takáto konzistencia nie je vždy zaručená samotnou databázou. SQL, štandardný problém a všeobecne zrozumiteľný jazyk pre prácu s databázami, väčšina databáz dokumentov nepodporuje, takže tie, ktoré majú existujúce databázové znalosti, musia začínať od nuly. Pohodlie, rýchlosť, škálovateľnosť a všestrannosť databázy dokumentov je však ťažké prekonať, keď píšete aplikáciu, ktorá vyžaduje proteanovú štruktúru dát vo voľnom formáte.

Tu sme profilovali sedem najznámejších a najbežnejšie používaných databáz dokumentov. Štyri zo siedmich - CouchDB, Couchbase Server, MongoDB a RethinkDB - sú projekty typu open source s malými alebo žiadnymi praktickými prekážkami pre začiatok; Couchbase a MongoDB sú tiež dostupné v podporovaných podnikových vydaniach na základe komerčných licencií. Ďalšie tri - Amazon DynamoDB, Google Firebase a IBM Cloudant - sú hostované služby od hlavných dodávateľov cloudu, kde je veľkým ťahákom úzka integrácia s ostatnými službami v týchto cloudoch.

V nasledujúcej tabuľke nájdete porovnanie funkcií; posunutím doprava v tabuľke zobrazíte všetky stĺpce pomocou posúvača dole. Čítajte ďalej a prečítajte si stručné diskusie o každej databáze.

Kľúč: Ľ= Linux, Ž= Windows, M= MacOS, S= Solaris, Ja= iOS, A= Android, O= iný mobil,

1. Túto funkciu môžu poskytovať nástroje tretích strán. 2. Na stôl. 3. Iba Enterprise vydanie. 4. Zobraziť iba funkcie. 5. K dispozícii sú aj transakcie s viacerými dokumentmi, ale nie v zlomkoch zdieľaných klastrov.

 Amazon DynamoDBKozmos DBCouchbaseCouchDBGoogle FirebaseIBM CloudantMarkLogicMongoDBPrehodnotiťDB
PlatformyIba v cloudeIba v cloudeLWMLWMIAOIba v cloudeIba v cloudeLWMSLWMSLWM
Dopytové systémyREST APIDrôtový protokol MongoDBMemcached protokol, REST APIREST APIREST / JavaScript APIREST APIREST APIAPI založené na JSON, čiastočné REST APIReQL dotazovací jazyk, REST API
Dotazovanie SQL ČÁnoCez jazyk N1QL Nie Nie Nie Áno Č Nie
Silné písanieÁnoÁnoÁno Nie Áno Nie Pre schémy XMLÁnoÁno
Natívny sa pripája Nie ÁnoÁno Nie Nie Nie ÁnoÁnoÁno
Delenie oddielovÁnoÁnoÁnoÁnoNAÁnoÁnoÁnoÁno 2
Zhlukovanie NA ÁnoÁnoÁno NA NA ÁnoÁnoÁno
ReplikáciaÁnoÁnoÁnoÁno NA ÁnoÁnoÁnoNa stôl
Konzistencia: OkamžitéNa prečítanieÁnoCelkovo Nie Prepojení klienti Nie ÁnoPodľa zápisuNa dokument
Konzistencia: PrípadnáÁnoÁnoÁnoÁnoOffline klientiÁnoÁnoÁnoCelá databáza
SúbežnosťÁnoÁnoÁnoÁnoÁnoÁnoÁnoÁnoÁno
Operácie v pamäti NA NA Nie Nie NA Nie NA Áno3 Nie
Uložené procedúry Nie JavaScriptJavaScript4JavaScript4PravidláJavaScript4Modul XQueryJavaScript Nie
TransakciePodľa aplikácieÁnoJednotlivé dokumentyJednotlivé dokumentyÁnoJednotlivé dokumentyJednotlivé dokumentyJednotlivé dokumenty5Jednotlivé dokumenty
Aktuálna verziaNANA5,0 (október 2017)2.1.1 (november 2017)NANA9.0 (máj 2016)3.4.10 (október 2017)2.3.6 (júl 2017)
Prvé vydanie201220172011200520122010200520092009

Amazon DynamoDB

Obchod s dokumentmi DynamoDB spoločnosti Amazon začal život v roku 2012 ako rozšírenie SimpleDB od Amazonu. Pod kapotou je poháňaný obchodom s kľúčovými hodnotami Dynamo. Spoločný vývojár DynamoDB by neskôr pri vytváraní Apache Cassandra vychádzal z mnohých rovnakých nápadov.

Funkcie DynamoDB

Rovnako ako väčšina ďalších ponúk cloudu od spoločnosti Amazon, DynamoDB je spravovaná služba s priebežným platením za čo potrebujete. Vývojári nastavili, koľko úložnej kapacity majú poskytnúť na uchovávanie buď neštruktúrovaných dokumentov, alebo párov kľúč - hodnota, a pre žiadosti o čítanie a zápis do databázy volia paušálny limit hodinovej sadzby. Nie je potrebné zaisťovať servery ani konfigurovať replikáciu - spoločnosť Amazon to všetko spracováva pod kryty a nedávno do mixu pribudlo automatické škálovanie.

Prirodzene, DynamoDB ponúka vývojárom užitočné integrácie s ďalšími službami v cloude Amazon. Spúšťače je možné napríklad nastaviť pomocou funkcií AWS Lambda. V blízkosti sú tiež BI a analytické nástroje spoločnosti Amazon. Blízkosť týchto služieb je pohodlná, ale tiež to znamená, že spoločnosť Amazon môže rozšíriť funkčnosť mnohými spôsobmi. Napríklad medzipamäť a akcelerácia a la Redis sú dostupné prostredníctvom doplnku DynamoDB Accelerator, ktorý je cenovo výhodným doplnkom.

DynamoDB Local

DynamoDB nenájdete v inkarnácii otvoreného zdroja. Je k dispozícii výlučne ako hostená ponuka v cloudu Amazon.

To znamená, že na rozdiel od mnohých iných cloudových natívnych databáz je DynamoDB k dispozícii aj vo verzii, ktorú je možné stiahnuť a spustiť lokálne. DynamoDB Local však nie je určený na produkčné použitie, ale skôr ako spôsob naštudovania aplikácie v testovacom prostredí bez nutnosti pripojenia alebo spustenia účtu Amazon.

Microsoft Azure Cosmos DB

Cosmos DB je ambiciózny projekt, databázový systém, ktorý obsahuje viac modelov na ukladanie a načítanie údajov. Cosmos DB môže slúžiť ako databáza dokumentov, stĺpcová databáza, databáza grafov alebo úložisko kľúč - hodnota, čo umožňuje používateľovi zvoliť si paradigmu, ktorá mu vyhovuje, a pri práci s týmito paradigmami čerpať z rôznych rozhraní API.

Funkcie Cosmos DB

Namiesto vymýšľania úplne nového API pre databázový systém dokumentov poskytuje Cosmos DB API kompatibilné s populárnym MongoDB (diskutované nižšie). Medzi výhody patrí to, že existujúci kód, ktorý používa knižnice rozhraní MongoDB alebo binárny protokol MongoDB, môže fungovať tak, ako je. Znamená to, že Cosmos DB je schopný poskytovať MongoDB ako službu. Rovnako Cosmos DB podporuje API populárnej databázy stĺpcov rodiny Cassandra.

Spoločnosť Microsoft uvádza pre Cosmos DB niekoľko výhod, ktoré nie sú nevyhnutne výhradné pre jej funkčnosť databázy dokumentov, ale sú určené na oslovenie týchto aplikácií na vytváranie databáz dokumentov. Jednou z takýchto ponúk je nastaviteľná úroveň konzistencie. Ak máte niektoré triedy transakcií s dokumentmi, ktoré vyžadujú silnejšiu konzistenciu naprieč oblasťami Azure ako iné, môžete ich ručne určiť na základe jednotlivých transakcií.

Ostatné funkcie sú špecifickejšie pre databázy dokumentov. Používatelia MongoDB musia napríklad nastaviť indexy v zbierkach dokumentov, aby optimalizovali vyhľadávanie. Používatelia servera Cosmos DB pracujúci s rozhraním API MongoDB nemusia nastavovať indexovanie dokumentov, pretože každá vlastnosť vo vloženom dokumentovanom dokumente sa indexuje automaticky.

Používanie Cosmos DB v Microsoft Azure

Neexistuje žiadna lokálne hostená verzia Cosmos DB. Je k dispozícii iba ako služba v cloude Microsoft Azure. To znamená, že vývojové rozhrania API pre Cosmos DB sú dostupné pre väčšinu populárnych podnikových jazykov - Java, Node.js, .NET a Python.

Couchbase Server

Couchbase nie je ani tak súrodencom ako CouchDB ako nástupcom. Couchbase bol postavený na prácach vykonaných v CouchDB a Membase, ale nesúvisí so žiadnym z týchto projektov. Je to databáza dokumentov a distribuovaný obchod s kľúčmi a hodnotami v jednom, s pokročilými funkciami, ako je automatické zlyhanie a replikácia medzi dátovými centrami, určené pre prípady podnikového použitia.

Funkcie Couchbase

Jednou z funkcií, ktorá odlišuje Couchbase nielen od iných konkurentov NoSQL, ale aj od jeho predchodcu CouchDB, je jeho dotazovací jazyk podobný SQL, ktorý sa volá N1QL (vyslovuje sa „nikel“). N1QL neponúka celú škálu príkazov, ktoré by ste od implementácie ANSI SQL očakávali, ale poskytuje dostatok užitočných funkcií, ako sú napríklad operácie JOIN, na to, aby niekto so skúsenosťami s SQL získal uskutočniteľné výsledky.

Dotazový systém Couchbase nie je určený len pre vývojárov, ale aj pre DBA a obchodných analytikov, ktorí sa bežne zaoberajú konvenčnými databázami. Zdá sa, že funkcie, ako je kľúčové slovo EXPLAIN, boli vložené špeciálne preto, aby oslovili tento dav.

Ako kombinácia databázy dokumentov a úložiska kľúč - hodnota ukladá Couchbase dokumenty pomocou svojich jedinečných identifikátorov ako kľúča. Dokumentom je možné tiež priradiť hodnoty, ktoré sú aktuálne a fungujú ako vyrovnávacia pamäť kľúčov. Skutočný systém ukladania do pamäte kľúčov a hodnôt, ako je Redis, bude pri základnom ukladaní kľúčov a hodnôt oveľa rýchlejší, ale Couchbase je flexibilnejší a systémy Redis a Couchbase je možné efektívne kombinovať, aby sa veci urýchlili. V tejto súvislosti má Couchbase natívnu podporu pre protokol Memcached, takže existujúce aplikácie, ktoré používajú Memcached, sa môžu pripojiť do Couchbase ako náhrada.

Komunita Couchbase vs. podnik

Couchbase Server sa dodáva v plnohodnotnej podnikovej edícii za úhradu, v bezplatnej komunitnej edícii a v otvorenej edícii, ktorá je základom pre ostatných. Binárne súbory na stiahnutie pre vydanie pre podniky a komunity sú k dispozícii na stránkach spoločnosti Couchbase a zdrojový kód je k dispozícii na stránkach pre vývojárov spoločnosti Couchbase. (Pre open source projekt Couchbase neexistuje žiadne úložisko GitHub, pretože je agregáciou niekoľkých projektov.)

Komunitné vydanie je možné nasadiť do výroby, ale chýbajú mu pokročilejšie funkcie podnikového vydania, ako aj podpora, takže pozor nekupujúci. Niektoré funkcie v Couchbase, ako napríklad funkcia horizontálneho zmeny mierky, sa dostali do projektu CouchDB, ale to je skôr výnimka ako pravidlo.

Couchbase Lite

Ďalšou edíciou Couchbase, ktorá si zaslúži pozornosť vývojárov aplikácií, je Couchbase Lite, zabudovateľná verzia Couchbase, ktorá sa dokáže synchronizovať s inštanciami plnohodnotného vydania. Couchbase Lite je kľúčovým komponentom v Couchbase Mobile, zásobníku aplikácií pre mobilné aplikácie, ktoré potrebujú úložisko dát, ktoré sa synchronizuje automaticky s koncovým serverom. Couchbase Mobile je k dispozícii pre iOS, Android, Java. .Net, MacOS a tvOS.

CouchDB

Projekt CouchDB začal v roku 2005 bývalý vývojár spoločnosti IBM a do Nadácie Apache Software Foundation sa presunul v roku 2008. Niekedy sa predpokladá, že CouchDB je základom pre Couchbase, ale CouchDB a Couchbase sú paralelné projekty s rôznymi cieľmi.

CouchDB vs. Couchbase

Zatiaľ čo Couchbase je databázou dokumentov aj obchodom kľúč - hodnota, CouchDB je výlučne databázou dokumentov. A hoci sa Couchbase už dlho zameriava na podnikové funkcie, ako je odolnosť voči chybám a dotazovací jazyk podobný SQL, takéto jemnosti sa do CouchDB dostávajú až teraz.

Funkcie CouchDB

CouchDB zdôrazňuje jednoduché nasadenie a jednoduché použitie. Načítanie údajov z databázy je také jednoduché ako odosielanie dotazov vo formáte JSON do koncového bodu REST HTTPS s výsledkami vrátenými v JSON. Tieto činnosti dokáže väčšinou každý moderný programovací jazyk a tiež vykonáva mapovanie a znižovanie potrebné na vytvorenie zobrazení za dotazmi a správami CouchDB. Nie je potrebný ovládač ODBC ani dátový konektor.

Jednou zo špeciálnych omáčok spoločnosti CouchDB je technológia zhromažďovania údajov. Zmeny vykonané v jednom partnerskom serveri CouchDB sa automaticky zosúladia s ostatnými, podobne ako v systéme riadenia verzií. Všetky konflikty medzi verziami dokumentu sa zachovajú, akoby išlo o predchádzajúce revízie daného dokumentu.

Tento nakoniec konzistentný model je užitočný pre databázy, ktoré nie sú vždy alebo dôsledne prepojené (napríklad pre prerušované pripojenie mobilných aplikácií), alebo v prípadoch, keď nepotrebujete najnovšiu a najväčšiu verziu údajov v konkrétnom uzle. Prípadná konzistencia je však tiež jednou z najväčších výhrad CouchDB. Ak ty robiť Potrebujete okamžitú konzistenciu, CouchDB nie je na správnom mieste.

Škálovateľnosť bola pre CouchDB už dlho slabým miestom, ale nedávno sa tým začala zaoberať. Verzia 2.0 priniesla novú technológiu klastrovania, s povolením bitov otvorených od spoločností Cloudant / IBM a zlúčených do projektu. Nakoniec pre tých, ktorí sú oboznámení s MongoDB a chcú používať podobnú syntax deklaratívneho dotazu, poskytuje projekt Mango, tiež od spoločnosti Cloudant / IBM, ako externý doplnok.

Stiahnutie CouchDB

Binárne súbory CouchDB pre všetky hlavné platformy a zdrojový kód je možné stiahnuť z oficiálnej stránky CouchDB. Zdroj projektu je tiež k dispozícii na GitHub.

Databáza Google Firebase v reálnom čase

Google Firebase by ste si mohli predstaviť ako odpoveď spoločnosti Google na DynamoDB - spôsob, ako poskytnúť rýchlo synchronizovanú dátovú pamäť medzi cloudovým back-endom a lokálnymi aplikáciami na viacerých platformách.

Databáza Firebase v reálnom čase je iba jedným komponentom v zásobníku Firebase, ktorý je určený na vytváranie aplikácií náročných na zapojenie a pochopenie publika. Celý zásobník obsahuje funkcie ako autentifikácia, monitorovanie výkonu, analýza používateľov a mnoho ďalších, ale tu sa zameriavame na samotný Firebase.

Funkcie Google Firebase

Google získal Firebase v roku 2014. Odvtedy pripojil Firebase k výhodám mnohých funkcií Google Cloud. Funkcia Google Cloud Functions pre Firebase vám napríklad umožňuje spúšťať funkcie JavaScriptu v cloude ako reakciu na udalosti Firebase. Google Analytics pre Firebase vám umožňuje načítať dáta mobilných aplikácií do BigQuery pre hlbšiu analýzu.

Keďže hranie je jednou z cieľových aplikácií platformy Firebase, súpravy SDK poskytované pre platformu Firebase zahŕňajú platformu pre vývoj hier pre rôzne platformy Unity. Vývojári, ktorí pracujú na tradičnejších projektoch zameraných na podniky alebo na zákazníka, majú veľa ďalších možností: natívny iOS a Android, C ++, všeobecný web / JavaScript a akýkoľvek iný jazyk, ktorý podporuje REST (Java, Python, pomenujete ho).

Firebase je navrhnutý tak, aby fungoval v scenároch, kde nie je zaručené pripojenie. Rovnako ako CouchDB ukladá zmeny lokálne do režimu offline a po obnovení pripojenia sa automaticky synchronizuje s koncovým serverom. Upozorňujeme, že Firebase nie je navrhnutý na použitie ako samostatné, úplne offline riešenie; napríklad v systéme Android sú lokálne databázy obmedzené na 10 MB úložného priestoru.

Firebase v službách Google Cloud a GitHub

Firebase nie je k dispozícii ako samostatný produkt, ale je k dispozícii iba ako súčasť ponuky cloudových produktov spoločnosti Google. Repozitár Firebase GitHub má zdrojový kód pre súpravy SDK a pre rôzne nástroje špecifické pre jednotlivé platformy.

IBM Cloudant

Cloudant je v podstate hostované vydanie IBM CouchDB. Cloudant bola pôvodne nezávislá spoločnosť ponúkajúca vydanie CouchDB s názvom „BigCouch“, ktoré bolo hostené v cloudu IBM SoftLayer. V roku 2014 IBM priamo získala spoločnosť Cloudant ako súčasť celkového tlaku spoločnosti IBM na analytiku a veľké dáta.

Cloudant vs. CouchDB

Cloudant má byť viac ako hostovaná verzia CouchDB. Cloudant poskytuje funkcie, ktoré nie sú ľahko dostupné v samotnom CouchDB, napríklad natívne integrované fulltextové vyhľadávanie. Fulltextové vyhľadávanie v CouchDB zvyčajne vyžaduje integráciu s externými projektmi. Dáta je možné replikovať oboma smermi medzi cloudom a inštanciou CouchDB, takže je medzi nimi možné podľa potreby pomerne ľahko prechádzať.

Niektoré vylepšenia CouchDB od spoločnosti Cloudant si našli cestu späť do základného projektu CouchDB, vrátane funkcií horizontálneho škálovania CouchDB 2.0 a rozhrania jazykového dotazu Mango. Ale neberte to ako dôkaz toho, že funkcie Cloudant automaticky stekajú na CouchDB.

Cloudant na IBM Cloud

Cloudant je primárne cloudová ponuka na IBM Cloud, kde ho možno používať v spojení s ďalšími dátovými produktmi IBM Cloud, ako sú dashDB, DataWorks a Watson Analytics.

Zamračené miestne

Vydanie Cloudantu za bránou firewall s názvom Cloudant Local ponúka všetky rovnaké funkcie ako ponuka hostená v cloude. Cloudant Local je k dispozícii na príchutiach Ubuntu a Red Hat systému x86 Linux, ako aj na vlastnom systéme IBM z Red Hat alebo Suse. Vývojári si môžu stiahnuť bezplatnú verziu určenú iba na testovanie a vývoj v obraze Docker.

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