Programování

Recenze Couchbase: chytrá databáze NoSQL

Každé střední až velké podnikání potřebuje databázi. Velké nadnárodní podniky často potřebují globálně distribuované databáze, a když používají svou databázi pro finanční nebo inventární aplikace, potřebují silnou konzistenci. Několik databází dokáže uspokojit obě potřeby.

Couchbase Server je paměťově první, distribuovaná a flexibilní databáze dokumentů JSON, která je v místním klastru silně konzistentní. Couchbase Server také podporuje replikaci napříč datovými centry s případnou konzistencí napříč klastry.

Couchbase Lite je integrovaná mobilní databáze, která pracuje offline a synchronizuje se s Couchbase Sync Gateway, když je online. Sync Gateway se synchronizuje se serverem Couchbase i s více instancemi Couchbase Lite.

Couchbase Server lze nasadit v prostorách, v cloudu, na Kubernetes nebo v hybridních konfiguracích. Dodává se v otevřené i podnikové verzi.

Dotazovací jazyk serveru Couchbase, N1QL, je nadmnožina SQL určená pro databáze dokumentů JSON s rozšířeními pro analytiku. Couchbase také podporuje přístup k datům klíč-hodnota a fulltextové vyhledávání.

Společnost Couchbase, která za touto databází stojí, vzrostla sloučením společností Membase (výrobce klastrované databáze klíčů a hodnot v paměti cache) a CouchOne (vývojáři databáze dokumentů Apache CouchDB) v roce 2011. Nová společnost začala s value value, added the JSON document layer in 2012, and go on to add a mobile database in 2014, SQL-like queries in 2015, full-text search in 2017, and analytics in 2018.

Couchbase alternativy a konkurenti

Alternativy k Couchbase zahrnují MongoDB, další flexibilní databázi dokumentů; MongoDB v kombinaci s Redis pro ukládání do mezipaměti; Oracle Database, špičková relační databáze; a SQL Server, nabídka relačních databází společnosti Microsoft. Relační databázové systémy byly navrženy pro použití na jednom velkém serveru a je těžké je škálovat. MongoDB byl navržen tak, aby prováděl replikaci master-slave, která se trochu rozšiřuje, ale potřebuje horizontální dělení, aby se dobře škálovala. Redis pomáhá zrychlit MongoDB, ale zavádí další pohyblivou část, která může komplikovat správu kombinovaných systémů.

Mezi další nedávné alternativy k Couchbase patří CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB a Amazon DynamoDB. O relačních i NoSQL možnostech jsem hovořil v předchozích recenzích.

Architektura serveru Couchbase

Couchbase Server plní několik rolí: datová služba, indexová služba, dotazovací služba, zabezpečení, replikace, vyhledávání, události, analytika a správa. Každá z těchto služeb může být spuštěna na jednom nebo více uzlech.

Couchbase Server byl navržen na základě tří základních principů: architektura zaměřená na paměť a síť, izolace pracovního zatížení a asynchronní přístup ke všemu.

Zápisy se ukládají do paměti, poté se přetrvávají na disk a asynchronně se indexují bez blokování čtení nebo zápisů. Nejpoužívanější data a indexy jsou transparentně uchovávány v paměti pro rychlé čtení. Toto velké využití paměti je dobré pro latenci a propustnost, i když zvyšuje požadavky na paměť Couchbase.

Couchbase Server může každou ze svých služeb samostatně škálovat, aby byly efektivnější. Dotazová služba může těžit z více zdrojů CPU, indexová služba může používat SSD a datová služba může využívat více RAM. Couchbase nazývá toto vícerozměrné škálování (MDS) a je to jedna z charakteristických vlastností serveru Couchbase.

Asynchronní operace pomáhají serveru Couchbase vyhnout se blokování zápisů, čtení nebo dotazů. V případě potřeby může vývojář vyvážit trvanlivost a konzistenci s latencí.

Datový model Couchbase JSON podporuje základní i komplexní datové typy: čísla, řetězce, vnořené objekty a pole. Můžete vytvářet dokumenty, které jsou normalizované nebo denormalizované. Couchbase Server nevyžaduje ani nepodporuje schémata. Naproti tomu MongoDB nevyžaduje schémata, ale může je podporovat a vynucovat, pokud si to vývojář zvolí.

Jak si podrobněji popíšu později, k dokumentům na serveru Couchbase můžete přistupovat prostřednictvím čtyř mechanismů: klíč-hodnota, dotazy založené na SQL, fulltextové vyhledávání a události JavaScriptu. Pokud vaše dokumenty JSON obsahují vnořené dokumenty nebo pole, můžete k nim přistupovat přímo pomocí výrazů cesty, aniž byste museli přenášet a analyzovat celý dokument. Model událostí může vyvolat změny dat (OnUpdate) nebo časovače. Kromě toho můžete přistupovat k dokumentům na serveru Couchbase prostřednictvím synchronizace s Couchbase Mobile.

Couchbase Server je organizován do segmentů, vBucketů, uzlů a klastrů. Vědra obsahují dokumenty JSON. vBuckets jsou v podstatě střepy, které jsou automaticky distribuovány mezi uzly. Uzly jsou fyzické nebo virtuální stroje, které hostují jednotlivé instance serveru Couchbase. Klastry jsou skupiny uzlů. Synchronní replikace probíhá mezi uzly v klastru.

Možnosti nasazení serveru Couchbase

Server Couchbase můžete nainstalovat v prostorách, v cloudu a na Kubernetes. Couchbase Server Enterprise Edition je zdarma pro vývoj a testování a je k dispozici na základě předplatného pro produkci. Open source Couchbase Server Community Edition je zdarma pro všechny účely. Kromě některých vynechaných funkcí je Couchbase Server Community Edition kompatibilní s API s Couchbase Server Enterprise Edition.

Vytvořil jsem relaci cloudové testovací jízdy na Google Cloud Platform, která mi (po pětiminutovém zpoždění nasazení) poskytla tříuzlový cluster Couchbase Server a uzel Sync Gateway, vše dobré po dobu tří hodin. Potřeboval jsem asi jednu hodinu, než jsem prošel čtyřmi Couchbase tutoriály, což mi dalo smysl pro dotazování se na serveru.

Autonomní operátor Couchbase

Autonomní operátor Couchbase, podporovaný pouze v Enterprise Edition, poskytuje nativní integraci serveru Couchbase s otevřeným zdrojovým kódem Kubernetes a Red Hat OpenShift. Provozovatel rozšiřuje rozhraní API Kubernetes vytvořením vlastní definice zdroje a registrací jako vlastní řadič serveru Couchbase pro správu klastrů serveru Couchbase. Tím se sníží množství úsilí, které je zapotřebí ke spuštění klastrů Couchbase na Kubernetes, a umožní vám automatizovat správu běžných úkolů serveru Couchbase, jako je konfigurace, vytváření, škálování a obnova klastrů serveru Couchbase. Provozovatel také pracuje se službami Azure Kubernetes Service, Amazon Elastic Kubernetes Service a Google Kubernetes Engine.

Cross Datacenter Replication (XDCR)

Jak jsem již zmínil dříve, Couchbase Server provádí synchronní replikaci a má silnou konzistenci v rámci clusteru. Provádí asynchronní, aktivní a aktivní replikaci napříč klastry, datovými centry a zónami dostupnosti, aby se zabránilo vysoké latenci zápisu. XDCR umožňuje Couchbase být globálně distribuovanou databází za cenu umožnění případné (spíše než silné) konzistence mezi klastry.

Základní XDCR je podporován ve všech edicích serveru Couchbase. Filtrování XDCR, omezení a řešení konfliktů na základě časových značek jsou všechny funkce Enterprise Edition.

Couchbase dotazovací nástroje

Na server Couchbase můžete zadat dotaz pomocí klíče k načtení přidružené hodnoty, kterou může být dokument JSON nebo objekt Blob. Můžete jej také dotazovat pomocí jazyka N1QL podobného SQL nebo pomocí fulltextového vyhledávání. N1QL i fulltextové dotazy jdou rychleji, pokud má segment k dispozici indexy podporující dotaz.

N1QL

N1QL, vyslovovaný jako „nikl“, vypadá velmi podobně jako standardní SQL s rozšířením pro JSON. Zjistil jsem, že je mnohem snazší vyzvednout než agregační potrubí MongoDB, vzhledem k tomu, že používám SQL po celá desetiletí.

Ve skutečnosti existují dvě podobné varianty N1QL: jedna pro službu Couchbase Server Query a druhá pro službu Analytics, což je funkce Enterprise Edition. N1QL pro Analytics je založen na SQL ++.

Některá rozšíření N1QL jsou POUŽÍVEJTE KLÁVESY, HNÍZDO, UNNEST, a CHYBĚJÍCÍ. POUŽÍVEJTE KLÁVESY a POUŽIJTE HASH jsou tipy na dotazy pro PŘIPOJITs. HNÍZDO a UNNEST sbalit a rozbalit pole. CHYBĚJÍCÍ je alternativa specifická pro JSON NULA; NEMÍSÍ znamená, že existuje konkrétní hodnota nebo NULA v dokumentu. Klíčové slovo pro hodnoty, které jsou NEMÍSÍ a NENULOVÝ je ZNÁMÝ. Dotazy N1QL mohou používat cesty, které platí také pro fulltextové vyhledávání.

Fulltextové vyhledávání

Couchbase podporuje externí fulltextové vyhledávače, jako je Solr, ale má také svůj vlastní Go, fulltextový vyhledávač Bleve. Bleve je součástí Couchbase Mobile i Couchbase Server a podporuje většinu syntaxí vyhledávání, které byste očekávali.

Couchbase SDK

Všechny hlavní služby Couchbase jsou vystaveny pro programování prostřednictvím SDK. SDK jsou k dispozici pro C / C ++, .Net (C #, F # a Visual Basic .Net), Go, Java, Node.js, PHP, Python a Scala.

Kromě SDK nabízí Couchbase těsnou integraci s několika rozhraními: Spring Data, .NET LINQ a vlastní Ottoman Node.js ODM od Couchbase. Například následující ukázkový dotaz používá Linq2Couchbase:

{

Servery = nový seznam {new Uri ("// localhost: 8091 /")}

});

var context = new BucketContext (ClusterHelper.GetBucket ("travel-sample"));

var dotaz = (z a v context.Query ()

kde a.Country == "Velká Británie"

vybrat).

Vezměte (10);

query.ToList (). ForEach (Console.WriteLine);

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobile má dvě části: Couchbase Lite, která běží na mobilním zařízení, a Couchbase Sync Gateway, která běží na uzlu serveru. Couchbase Lite běží na iOS, Android, .Net a Xamarin a podporuje jazyky Swift, Objective-C, Java, Kotlin a C ++.

Například následující kód Java definuje dotaz, který se má spustit v systému Android:

Databáze databáze = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

.select (SelectResult.expression (Expression.property ("název letiště")))

.from (DataSource.database (databáze))

.kde(

Expression.property ("typ"). EqualTo (Expression.string ("letiště"))

. a (Expression.property ("název letiště"). jako (Expression.string (prefix + "%")))

);

Couchbase měřítka

Přestože Couchbase Server nezaručil, třetí strana (Altoros) tak učinila pomocí testů YCSB JSON a klíč-hodnota a testu TPCx-IoT. Níže uvedený graf je pro referenční hodnotu dokumentu JSON. Jak vidíte, Couchbase Server překonal MongoDB i DataStax. Tyto měřítka můžete znovu spustit sami, protože Altoros dodal všechny požadované skripty.

Altoros

Celkově lze říci, že Couchbase Server je dobře vybaven databází dokumentů NoSQL JSON s dotazovacím jazykem podobným SQL a fulltextovým vyhledávačem a Couchbase Mobile rozšiřuje nabídku hodnot na mobilní zařízení. Zda vám Couchbase dává smysl, záleží na vaší aplikaci a požadavcích.

Pokud potřebujete spolehlivou strukturu schématu relační databáze nebo orientaci připojení databáze grafů, Couchbase nebude dělat to, co chcete. Pokud však potřebujete globálně škálovatelnou databázi dokumentů, je Couchbase dobrou volbou.

Náklady: Komunitní vydání serveru Couchbase: Zdarma. Couchbase Server Enterprise Edition: Roční předplatné jsou oceněny uzlem a jsou k dispozici v různých cenových bodech v závislosti na jádrech potřebných pro uzel a RAM. Vývojové a testovací uzly jsou zdarma. Cloudová nasazení Enterprise Edition jsou k dispozici za hodinu, s typickou cenou softwaru 0,662 USD / uzel / hodinu na AWS pro Couchbase Server a 1,641 $ / uzel / hodinu pro Mobile Sync Gateway, se standardní šablonou využívající původně čtyři uzly serveru a dva uzly synchronizace s automatickým škálováním. Cena je zhruba srovnatelná v Microsoft Azure a Google Cloud Platform. Můžete si také přinést vlastní licenci a platit pouze za cloudové prostředky.

Plošina: Couchbase Server: Linux, Windows Server 2012 R2 a novější; Kubernetes, OpenShift; AWS, Azure, GCP. Vývoj a testování serveru Couchbase: MacOS 10.11 a novější, Windows 10 Anniversary Update a novější; Přístavní dělník. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 a novější, MacOS 10.12.6 a novější; AWS, Docker, OpenShift.

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