Programování

Standouts NoSQL: Nejlepší databáze dokumentů

"Správný nástroj pro správnou práci." Pokud taková moudrost platí kdekoli, určitě to platí i pro výběr databáze, kterou si vývojář pro danou aplikaci vybere. Databáze dokumentů, jedna z rodiny datových produktů souhrnně označovaných jako „NoSQL“, jsou určeny pro vývojáře, kteří se chtějí zaměřit na své aplikace spíše než databázová technologie.

U databáze dokumentů nejsou data ukládána do tabulek s odlišnými typy sloupců. Místo toho je uložen ve volných „dokumentech“ s libovolným počtem polí a libovolným počtem vnořených struktur. Takové dokumenty jsou obvykle reprezentovány jako JSON a aktualizovány buď prostřednictvím rozhraní API, nebo odesláním JSON do koncového bodu REST. Většina všech moderních programovacích jazyků podporuje JSON a REST, takže práce s databází dokumentů se cítí spíše jako nativní práce s těmito datovými strukturami, než práce s tradiční databází.

Tento bez schématu, jak se mu říká, má svá omezení. Vývojář musí udělat více práce, aby zajistil konzistenci vložených dat, protože taková konzistence není vždy zaručena samotnou databází. SQL, standardní vydání a široce srozumitelný jazyk pro práci s databázemi, většina databází dokumentů nepodporuje, takže ty, které mají stávající znalosti databáze, musí začínat od nuly. Pohodlí, rychlost, škálovatelnost a univerzálnost databáze dokumentů je ale těžké překonat, když píšete aplikaci, která potřebuje proteanovou datovou strukturu volného tvaru.

Zde jsme profilovali sedm nejznámějších a nejpoužívanějších databází dokumentů. Čtyři ze sedmi - CouchDB, Couchbase Server, MongoDB a RethinkDB - jsou open source projekty s malými nebo žádnými praktickými překážkami pro zahájení; Couchbase a MongoDB jsou také k dispozici v podporovaných podnikových edicích na základě komerčních licencí. Další tři - Amazon DynamoDB, Google Firebase a IBM Cloudant - jsou hostované služby od hlavních dodavatelů cloudu, kde je úzká integrace s dalšími službami v těchto cloudech velkým lákadlem.

Porovnání funkcí najdete v následující tabulce; posunutím doprava v tabulce zobrazíte všechny sloupce pomocí posuvníku dole. Přečtěte si o stručných diskusích o každé databázi.

Klíč: L= Linux, Ž= Windows, M= MacOS, S= Solaris, = iOS, A= Android, Ó= jiný mobilní telefon,

1. Tuto funkci mohou poskytovat nástroje třetích stran. 2. Na stůl. 3. Pouze Enterprise Edition. 4. Zobrazit pouze funkce. 5. Transakce s více dokumenty jsou také k dispozici, ale ne ve shardovaných shlucích.

 Amazon DynamoDBKosmos DBCouchbaseCouchDBGoogle FirebaseIBM CloudantMarkLogicMongoDBPřehodnotit DB
PlatformyPouze cloudPouze cloudLWMLWMIAOPouze cloudPouze cloudLWMSLWMSLWM
Dotazovací systémyREST APIDrátový protokol MongoDBMemcached protokol, REST APIREST APIREST / JavaScript APIREST APIREST APIAPI založené na JSON, částečné REST APIReQL dotazovací jazyk, REST API
Dotazování SQL Č.1AnoProstřednictvím jazyka N1QL Ne Ne Ne Ano Č.1 Ne
Silné psaníAnoAnoAno Ne Ano Ne Pro schémata XMLAnoAno
Nativní spojení Ne AnoAno Ne Ne Ne AnoAnoAno
Dělení oddílůAnoAnoAnoAnoNAAnoAnoAnoAno2
Shlukování NA AnoAnoAno NA NA AnoAnoAno
ReplikaceAnoAnoAnoAno NA AnoAnoAnoNa stůl
Konzistence: OkamžitéNa čteníAnoCelkově Ne Propojení klienti Ne AnoNa zápisNa dokument
Konzistence: EventuálníAnoAnoAnoAnoOffline klientiAnoAnoAnoCelá databáze
KonkurenceAnoAnoAnoAnoAnoAnoAnoAnoAno
Operace v paměti NA NA Ne Ne NA Ne NA Ano3 Ne
Uložené procedury Ne JavaScriptJavaScript4JavaScript4PravidlaJavaScript4Modul XQueryJavaScript Ne
TransakcePodle aplikaceAnoJednotlivé dokumentyJednotlivé dokumentyAnoJednotlivé dokumentyJednotlivé dokumentyJednotlivé dokumenty 5Jednotlivé dokumenty
Současná verzeNANA5.0 (říjen 2017)2.1.1 (listopad 2017)NANA9.0 (květen 2016)3.4.10 (říjen 2017)2.3.6 (červenec 2017)
První vydání201220172011200520122010200520092009

Amazon DynamoDB

Obchod dokumentů Amazon DynamoDB začal život v roce 2012 jako rozšíření SimpleDB od Amazonu. Pod kapotou jej pohání úložiště klíčů a hodnot, Dynamo. Spoluvyvíjející DynamoDB by později při vytváření Apache Cassandra čerpal z mnoha stejných nápadů.

Funkce DynamoDB

Stejně jako většina ostatních cloudových nabídek Amazonu je DynamoDB spravovanou službou pay-as-you-go-for-what-you-need. Vývojáři nastavili, kolik úložné kapacity mají zajistit pro uchovávání buď nestrukturovaných dokumentů, nebo párů klíč – hodnota, a zvolí limit paušální hodinové sazby pro požadavky na čtení a zápis do databáze. Není třeba zajišťovat servery ani konfigurovat replikaci - Amazon to všechno zpracovává pod kryty a nedávno do mixu přidal automatické škálování.

DynamoDB samozřejmě nabízí vývojářům užitečné integrace s dalšími službami v cloudu Amazon. Spouštěče lze například nastavit pomocí funkcí AWS Lambda. Poblíž jsou také BI a analytické nástroje Amazonu. Blízkost těchto služeb je pohodlná, ale také to znamená, že Amazon může rozšířit funkčnost mnoha způsoby. Například ukládání do mezipaměti a akcelerace a la Redis jsou k dispozici prostřednictvím DynamoDB Accelerator, což je doplněk s vyššími náklady.

DynamoDB Local

DynamoDB v inkarnaci open source nenajdete. Je k dispozici výhradně jako hostovaná nabídka v cloudu Amazon.

To znamená, že na rozdíl od mnoha jiných cloudových databází je DynamoDB k dispozici také ve verzi, kterou lze stáhnout a spustit lokálně. DynamoDB Local však není určen pro produkční použití, ale spíše jako způsob, jak zkonstruovat aplikaci v testovacím prostředí bez nutnosti připojení nebo spuštění účtu Amazon.

Microsoft Azure Cosmos DB

Cosmos DB je ambiciózní projekt, databázový systém, který zahrnuje více modelů pro ukládání a načítání dat. Cosmos DB může sloužit jako databáze dokumentů, sloupcová databáze, databáze grafů nebo úložiště klíč – hodnota, což uživateli umožňuje vybrat si paradigma, které jim vyhovuje, a čerpat z různých API pro práci s těmito paradigmy.

Funkce Cosmos DB

Spíše než vymýšlet zcela nové API pro systém databáze dokumentů, Cosmos DB poskytuje API kompatibilní s populárním MongoDB (popsáno níže). Mezi výhody patří to, že stávající kód, který používá knihovny rozhraní MongoDB nebo binární protokol MongoDB, může fungovat tak, jak je. Jde o to, že Cosmos DB je schopen poskytovat MongoDB jako službu. Stejně tak Cosmos DB podporuje API Cassandry, populární databáze rodiny sloupců.

Microsoft nabízí Cosmos DB několik výhod, které nemusí nutně být výlučné pro její funkcionalitu databáze dokumentů, ale jsou určeny k odvolání k těmto aplikacím pro budování databáze dokumentů. Jednou z takových nabídek jsou laditelné úrovně konzistence. Pokud máte některé třídy transakcí dokumentů, které vyžadují silnější konzistenci napříč oblastmi Azure než jiné, můžete je ručně určit na základě jednotlivých transakcí.

Další funkce jsou konkrétnější pro databáze dokumentů. Například uživatelé MongoDB musí nastavit indexy ve sbírkách dokumentů, aby optimalizovali vyhledávání. Uživatelé Cosmos DB pracující s API MongoDB nemusí nastavovat indexování dokumentů, protože každá vlastnost ve vloženém dokumentovaném dokumentu je automaticky indexována.

Používání Cosmos DB v Microsoft Azure

Neexistuje žádná místně hostovaná verze Cosmos DB. Je k dispozici pouze jako služba v cloudu Microsoft Azure. To znamená, že vývojová API pro Cosmos DB jsou k dispozici pro většinu všech populárních podnikových jazyků - Java, Node.js, .NET a Python.

Couchbase Server

Couchbase není tolik sourozenec CouchDB jako nástupce. Couchbase byl postaven na práci provedené v CouchDB a Membase, ale nesouvisí s žádným z těchto projektů. Jedná se o databázi dokumentů a distribuovaný úložiště klíč – hodnota v jednom, s pokročilými funkcemi, jako je automatické převzetí služeb při selhání a replikace mezi datovými centry, určené pro případy podnikového použití.

Funkce Couchbase

Jednou z funkcí, která odlišuje Couchbase nejen od ostatních konkurentů NoSQL, ale i od jeho předchůdce CouchDB, je jeho dotazovací jazyk podobný SQL s názvem N1QL (vyslovuje se „nikl“). N1QL nenabízí celou řadu příkazů, které byste očekávali od implementace ANSI SQL, ale poskytuje dostatek užitečných funkcí, jako jsou operace JOIN, pro někoho, kdo má zkušenosti s SQL, aby získal proveditelné výsledky.

Systém dotazů Couchbase není určen pouze pro vývojáře, ale pro správce databází a obchodní analytiky, kteří se běžně zabývají konvenčními databázemi. Zdá se, že funkce jako klíčové slovo EXPLAIN byly zavedeny konkrétně, aby přilákaly tento dav.

Jako kombinace databáze dokumentů a úložiště klíč – hodnota ukládá Couchbase dokumenty pomocí svých jedinečných identifikátorů jako klíče. Dokumentům lze také přiřadit hodnoty Time to Live, aby fungovaly jako mezipaměť klíč – hodnota. Skutečný systém ukládání do mezipaměti klíč-hodnota, jako je Redis, bude mnohem rychlejší pro základní úložiště klíč-hodnota, ale Couchbase je flexibilnější a Redis a Couchbase lze efektivně kombinovat, aby se věci urychlily. V této poznámce má Couchbase nativní podporu pro protokol Memcached, takže stávající aplikace, které používají Memcached, se mohou připojit do Couchbase jako náhrada.

Komunita Couchbase vs. Enterprise

Couchbase Server přichází v plně propracované podnikové edici za poplatek, v komunitní edici zdarma a v open source edici, která je základem pro ostatní. Binární soubory pro edici pro podniky a komunitu jsou k dispozici na webu Couchbase a zdrojový kód je k dispozici na webu pro vývojáře Couchbase. (Pro open source projekt Couchbase neexistuje žádné úložiště GitHub, protože se jedná o agregaci několika projektů.)

Komunitní edici lze nasadit v produkčním prostředí, ale postrádají pokročilejší funkce podnikové edice a také podporu, takže pozor nekupující. Některé funkce v Couchbase, například funkce horizontálního škálování, si našly cestu do projektu CouchDB, ale to je spíše výjimka než pravidlo.

Couchbase Lite

Další edicí Couchbase, která si zaslouží pozornost vývojářů aplikací, je Couchbase Lite, integrovaná verze Couchbase, kterou lze synchronizovat s instancemi plnohodnotného vydání. Couchbase Lite je klíčová součást v Couchbase Mobile, zásobníku aplikací pro mobilní aplikace, které potřebují úložiště dat, které se automaticky synchronizuje s back-endem. Couchbase Mobile je k dispozici pro iOS, Android, Java. .Net, MacOS a tvOS.

CouchDB

Projekt CouchDB byl zahájen v roce 2005 bývalým vývojářem IBM a přesunut do Apache Software Foundation v roce 2008. Někdy se předpokládá, že CouchDB je základem pro Couchbase, ale CouchDB a Couchbase jsou paralelní projekty s různými cíli.

CouchDB vs. Couchbase

Zatímco Couchbase je jak databáze dokumentů, tak úložiště klíčů, CouchDB je striktně databáze dokumentů. A přestože se Couchbase již dlouho zaměřuje na podnikové funkce, jako je odolnost proti chybám a dotazovací jazyk podobný SQL, takové jemnosti se do CouchDB teprve začínají dostávat.

Funkce CouchDB

CouchDB klade důraz na jednoduchost nasazení a snadné použití. Načítání dat z databáze je stejně jednoduché jako odesílání dotazů ve formátu JSON do koncového bodu REST HTTPS s výsledky vrácenými v JSON. Většina těchto moderních programovacích jazyků dokáže tyto věci a také provádí mapování a snižování potřebné k vytvoření zobrazení za dotazy a zprávami CouchDB. Není potřeba ovladač ODBC ani datový konektor.

Jednou ze speciálních omáček CouchDB je její technologie sladění dat. Změny provedené u jednoho partnera CouchDB jsou automaticky sladěny s ostatními způsobem podobným systému správy verzí. Jakékoli konflikty mezi verzemi dokumentu jsou zachovány, jako by šlo o předchozí revize daného dokumentu.

Tento nakonec konzistentní model je užitečný pro databáze, které nejsou vždy nebo trvale připojeny (například pro přerušovaně připojené mobilní aplikace), nebo v případech, kdy nepotřebujete nejnovější a největší verzi dat v konkrétním uzlu. Ale případná konzistence je také jednou z největších výhrad CouchDB. jestli ty dělat potřebujete okamžitou konzistenci, CouchDB není místo, kde ji najdete.

Škálovatelnost je již dlouho pro CouchDB slabým místem, ale nedávno byla řešena. Verze 2.0 vmíchala novou technologii klastrování, s laskavým svolením bitů otevřených ze zdrojů Cloudant / IBM a sloučených do projektu. A konečně, pro ty, kteří jsou obeznámeni s MongoDB a chtějí použít podobnou syntaxi deklarativního dotazu, poskytuje projekt Mango, také od Cloudant / IBM, jako externí doplněk.

CouchDB ke stažení

CouchDB binární soubory pro všechny hlavní platformy a zdrojový kód lze stáhnout z oficiálních stránek CouchDB. Zdroj pro projekt je k dispozici také na GitHubu.

Databáze Google Firebase v reálném čase

Google Firebase si můžete představit jako odpověď společnosti Google na DynamoDB - způsob, jak zajistit rychlou synchronizaci datového úložiště mezi cloudovým back-endem a místními aplikacemi na více platformách.

Firebase Realtime Database je jen jedna součást v zásobníku Firebase, která je určena k vytváření aplikací náročných na zapojení a pochopení publika. Celý zásobník obsahuje funkce jako ověřování, monitorování výkonu, uživatelské analýzy a mnoho dalších, ale zde se zaměřujeme na samotný Firebase.

Funkce Google Firebase

Google získal Firebase v roce 2014. Od té doby připojil Firebase k využívání výhod mnoha funkcí Google Cloud. Například Google Cloud Functions pro Firebase umožňuje spouštět funkce JavaScriptu v cloudu v reakci na události Firebase. Google Analytics pro Firebase umožňuje načítat data mobilních aplikací do BigQuery pro hlubší analýzu.

Jelikož hraní her je jednou z cílových aplikací Firebase, sady SDK poskytované Firebase zahrnují rámec pro vývoj her mezi platformami Unity. Vývojáři pracující na konvenčnějších podnikových projektech nebo projektech zaměřených na spotřebitele mají spoustu dalších možností: nativní iOS a Android, C ++, obecný web / JavaScript a jakýkoli jiný jazyk, který podporuje REST (Java, Python, pojmenujte jej).

Firebase je navržen pro práci ve scénářích, kde není zaručeno připojení. Stejně jako CouchDB ukládá změny lokálně do režimu offline a při obnovení připojení se automaticky synchronizuje s back-endem. Upozorňujeme, že Firebase není navržen tak, aby se používal jako samostatné, zcela offline řešení; v systému Android jsou například lokální databáze omezeny na 10 MB úložiště.

Firebase na Google Cloud a GitHub

Firebase není k dispozici jako samostatný produkt, ale je k dispozici pouze jako součást nabídky cloudových produktů Google. Úložiště Firebase GitHub má zdrojový kód pro sady SDK a pro různé nástroje specifické pro platformu.

IBM Cloudant

Cloudant je v podstatě hostované vydání IBM CouchDB. Cloudant byla původně nezávislá společnost nabízející vydání CouchDB s názvem „BigCouch“, které bylo hostováno v cloudu IBM SoftLayer. V roce 2014 IBM získala Cloudant přímo jako součást celkového tlaku IBM na analytiku a velká data.

Cloudant vs. CouchDB

Cloudant má být více než hostovaná verze CouchDB. Cloudant poskytuje funkce, které nejsou snadno dostupné v samotném CouchDB, například nativně integrované fulltextové vyhledávání. Fulltextové vyhledávání v CouchDB obvykle vyžaduje integraci s externími projekty. Data lze replikovat v obou směrech mezi Cloudantem a instancí CouchDB, takže je mezi nimi relativně snadné se podle potřeby pohybovat.

Některá vylepšení CouchDB od společnosti Cloudant si našla cestu zpět do základního projektu CouchDB, včetně funkce horizontálního škálování CouchDB 2.0 a rozhraní jazykového dotazu Mango. Ale neberte to jako důkaz toho, že funkce Cloudant automaticky stékají na CouchDB.

Cloudant na IBM Cloud

Cloudant je primárně cloudová nabídka na IBM Cloud, kde jej lze použít ve spojení s dalšími datovými produkty IBM Cloud, jako jsou dashDB, DataWorks a Watson Analytics.

Cloudant místní

Edice Cloudantu za bránou firewall, nazvaná Cloudant Local, nabízí všechny stejné funkce jako nabídka hostovaná v cloudu. Cloudant Local je k dispozici na verzích Ubuntu a Red Hat systému x86 Linux, stejně jako vlastní systém IBM z s Red Hat nebo Suse. Vývojáři si mohou stáhnout bezplatnou verzi určenou pouze pro testování a vývoj v obrázku Dockeru.

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