Programiranje

Pregled Couchbase: pametna baza podatkov NoSQL

Vsako srednje veliko in veliko podjetje potrebuje bazo podatkov. Velika večnacionalna podjetja pogosto potrebujejo globalno razdeljene zbirke podatkov in ko svojo zbirko podatkov uporabljajo za finančne namene ali zaloge, potrebujejo močno doslednost. Le malo baz podatkov lahko izpolni obe potrebi.

Couchbase Server je najprej razdeljena, fleksibilna podatkovna zbirka dokumentov JSON, ki je zelo skladna v lokalni gruči. Couchbase Server podpira tudi replikacijo navzkrižnega podatkovnega centra z morebitno doslednostjo med grozdi.

Couchbase Lite je vdelana mobilna baza podatkov, ki deluje brez povezave in se sinhronizira s Couchbase Sync Gateway, ko je na spletu. Sync Gateway se sinhronizira tako s strežnikom Couchbase, kot tudi z več primerki Couchbase Lite.

Couchbase Server je mogoče namestiti v prostorih, v oblaku, na Kubernetesu ali v hibridnih konfiguracijah. Na voljo je v odprtokodni in podjetniški različici.

Poizvedbeni jezik Couchbase Server N1QL je nabor SQL, zasnovan za podatkovne zbirke dokumentov JSON, z razširitvami za analitiko. Couchbase podpira tudi dostop do podatkov ključ-vrednost in iskanje po celotnem besedilu.

Couchbase, podjetje, ki stoji za bazo podatkov, je zraslo z združitvijo Membase (izdelovalec v spominu predpomnjene gručaste baze podatkov ključ-vrednost) in CouchOne (razvijalci zbirke dokumentov Apache CouchDB) leta 2011. Novo podjetje je začelo s ključnimi vrednostni sloj, leta 2012 dodal plast dokumentov JSON in leta 2014 dodal mobilno bazo podatkov, poizvedbe, podobne SQL-u, leta 2015, iskanje po celotnem besedilu v letu 2017 in analitiko v letu 2018.

Couchbase alternative in konkurenti

Alternative Couchbase vključujejo MongoDB, drugo prilagodljivo zbirko dokumentov; MongoDB v kombinaciji z Redisom za predpomnjenje; Oracle Database, vrhunska relacijska baza podatkov; in SQL Server, Microsoftova ponudba relacijskih baz podatkov. Sistemi relacijskih baz podatkov so bili zasnovani za uporabo na posameznih velikih strežnikih in jih je težko razširiti. MongoDB je bil zasnovan za replikacijo nadrejenega in podrejenega, ki se nekoliko prilagodi, vendar ga je treba ostrenje dobro razširiti. Redis pomaga pospešiti MongoDB, vendar uvaja še en premični del, ki lahko oteži upravljanje kombiniranih sistemov.

Druge nedavne alternative Couchbase vključujejo CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB in Amazon DynamoDB. V prejšnjih pregledih sem razpravljal o možnostih relacije in možnosti NoSQL.

Arhitektura strežnika Couchbase

Couchbase Server izvaja več vlog: podatkovna storitev, indeksna storitev, poizvedbena storitev, varnost, kopiranje, iskanje, dogodki, analitika in upravljanje. Te storitve je mogoče zagnati na enem ali več vozliščih.

Couchbase Server je bil zasnovan na treh osnovnih načelih: arhitektura, ki je osredotočena na pomnilnik in omrežje, izolacija delovne obremenitve in asinhroni pristop k vsem.

Zapisi se predajo pomnilniku, nato se ohranijo na disku in indeksirajo asinhrono, ne da bi blokirali branje ali pisanje. Najbolj uporabljeni podatki in indeksi se pregledno hranijo v pomnilniku za hitro branje. Ta velika uporaba pomnilnika je dobra za zakasnitev in prepustnost, čeprav povečuje zahteve po RAM-u Couchbase.

Couchbase Server lahko vsako svojo storitev prilagodi samostojno, da postane učinkovitejša. Poizvedbena storitev lahko koristi več virov CPU, indeksna storitev lahko uporablja SSD-je, podatkovna storitev pa več RAM-a. Couchbase to imenuje večdimenzionalno skaliranje (MDS) in je ena od značilnosti Couchbase Server.

Asinhrone operacije pomagajo strežniku Couchbase, da prepreči blokiranje zapisov, branja ali poizvedb. Razvijalec lahko po potrebi uravnoteži trajnost in skladnost z zakasnitvijo.

Podatkovni model Couchbase JSON podpira osnovne in zapletene podatkovne tipe: številke, nize, ugnezdene predmete in polja. Ustvarite lahko dokumente, ki so normalizirani ali denormalizirani. Couchbase Server ne zahteva ali celo podpira shem. Nasprotno pa MongoDB ne zahteva shem, lahko pa jih podpira in uveljavlja, če se razvijalec odloči.

Kot bom podrobneje obravnaval kasneje, lahko do dokumentov Couchbase Server dostopate prek štirih mehanizmov: ključ-vrednost, poizvedbe, ki temeljijo na SQL, iskanje po celotnem besedilu in dogodek JavaScript. Če imajo vaši dokumenti JSON poddokumente ali polja, lahko do njih dostopate neposredno z izrazi poti, ne da bi morali prenesti in razčleniti celoten dokument. Model dogodkov lahko sproži spremembe podatkov (OnUpdate) ali časovnike. Poleg tega lahko do dokumentov Couchbase Server dostopate s sinhronizacijo z Couchbase Mobile.

Couchbase Server je organiziran v segmente, vBuckets, vozlišča in gruče. V vedrih so dokumenti JSON. vBuckets so v bistvu drobci, ki se samodejno porazdelijo po vozliščih. Vozlišča so fizični ali navidezni stroji, ki gostijo posamezne primerke strežnika Couchbase. Grozdi so skupine vozlišč. Sinhrona replikacija se pojavi med vozlišči v gruči.

Možnosti uvajanja strežnika Couchbase

Couchbase Server lahko namestite v prostorih, v oblaku in na Kubernetes. Couchbase Server Enterprise Edition je brezplačen za razvoj in preizkušanje ter na voljo z naročnino za proizvodnjo. Odprtokodna različica Couchbase Server Community Edition je za vse namene brezplačna. Poleg nekaterih izpuščenih funkcij je Couchbase Server Community Edition združljiv tudi z API-ji Couchbase Server Enterprise Edition.

Ustvaril sem sejo preskusnega pogona v oblaku na Google Cloud Platform, ki mi je (po petminutni zamudi uvajanja) omogočil tri vozliščno gručo Couchbase Server in vozlišče Sync Gateway, kar je bilo dobro tri ure. Potreboval sem približno eno uro, da sem si ogledal štiri vadnice Couchbase, kar mi je dalo občutek za poizvedovanje po strežniku.

Avtonomni operater Couchbase

Avtonomni operater Couchbase, podprt samo v različici Enterprise Edition, ponuja izvorno integracijo strežnika Couchbase z odprtokodnimi Kubernetes in Red Hat OpenShift. Operater razširja API Kubernetes z ustvarjanjem definicije vira po meri in se registrira kot krmilnik Couchbase Server po meri za upravljanje gruč Couchbase Server. To zmanjša napor devops, potreben za zagon Couchbase grozdov na Kubernetesu, in vam omogoča avtomatizacijo upravljanja pogostih nalog Couchbase Server, kot so konfiguracija, ustvarjanje, spreminjanje velikosti in obnovitev gruč Couchbase Server. Operater sodeluje tudi s storitvijo Azure Kubernetes, Amazon Elastic Kubernetes Service in Google Kubernetes Engine.

Navzkrižna replikacija podatkovnega središča (XDCR)

Kot sem že omenil, Couchbase Server izvaja sinhrono kopiranje in ima močno skladnost znotraj grozda. Opravlja asinhrono, aktivno-aktivno kopiranje v grozdih, podatkovnih centrih in območjih razpoložljivosti, da se izogne ​​visokim zakasnitvam pisanja. XDCR omogoča, da je Couchbase globalno razporejena baza podatkov, za ceno pa omogoča morebitno (in ne močno) skladnost med grozdi.

Osnovni XDCR je podprt v vseh izdajah Couchbase Server. XDCR filtriranje, dušenje in reševanje konfliktov na podlagi časovnega žiga so vse funkcije Enterprise Edition.

Orodja za poizvedbe Couchbase

Poizvedujete lahko po strežniku Couchbase Server s pomočjo ključa za pridobitev povezane vrednosti, ki je lahko dokument JSON ali Blob. Poizvedujete lahko tudi z jezikom, podobnim SQL N1QL, ali z iskanjem v celotnem besedilu. Tako poizvedbe N1QL kot celotno besedilo gredo hitreje, če ima vedro indekse, ki podpirajo poizvedbo.

N1QL

N1QL, izgovorjen "nikelj", je zelo podoben standardnemu SQL z razširitvami za JSON. Ugotovil sem, da ga je veliko lažje pobrati kot zbirni plin MongoDB, glede na to, da SQL uporabljam že desetletja.

Dejansko obstajata dve podobni različici N1QL: ena za storitev Couchbase Server Query in druga za storitev Analytics, ki je funkcija Enterprise Edition. N1QL za Analytics temelji na SQL ++.

Nekatere razširitve N1QL so UPORABI KLJUČE, NEST, NENEST, in POGREŠLJIVO. UPORABI KLJUČE in UPORABI HASH so namigi za poizvedbe za PRIDRUŽITE SEs. NEST in NENEST pakiranje in razpakiranje nizov. POGREŠLJIVO je JSON specifična alternativa NIČ; NE POTREBUJE pomeni, da je prisotna določena vrednost oz NIČ v dokumentu. Ključna beseda za vrednosti, ki so NE ZAMUDI in NI NULL je POZNANO. Poizvedbe N1QL lahko uporabljajo poti, ki veljajo tudi za iskanja v celotnem besedilu.

Iskanje celotnega besedila

Couchbase podpira zunanje iskalnike s polnim besedilom, kot je Solr, ima pa tudi svoj iskalnik s polnim besedilom na osnovi Go, Bleve. Bleve je vključen v Couchbase Mobile in tudi Couchbase Server in podpira večino iskalnih sintaks, ki bi jih pričakovali.

Couchbase SDK

Vse glavne storitve Couchbase so izpostavljene programiranju prek SDK-ja. SDK so na voljo za C / C ++, .Net (C #, F # in Visual Basic .Net), Go, Java, Node.js, PHP, Python in Scala.

Poleg SDK-jev Couchbase ponuja tesno integracijo z več okviri: Spring Data, .NET LINQ in Couchbase-ovim Ottoman Node.js ODM. Naslednja vzorčna poizvedba na primer uporablja Linq2Couchbase:

{

Strežniki = nov seznam {nov Uri ("// localhost: 8091 /")}

});

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

var query = (iz a in context.Query ()

kjer a.Country == "Združeno kraljestvo"

izberite a).

Vzemi (10);

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

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobile ima dva dela: Couchbase Lite, ki deluje na mobilni napravi, in Couchbase Sync Gateway, ki deluje na vozlišču strežnika. Couchbase Lite deluje v sistemih iOS, Android, .Net in Xamarin in podpira jezike Swift, Objective-C, Java, Kotlin in C ++.

Naslednja koda Java na primer določa poizvedbo, ki naj se zažene v Androidu:

Baza podatkovnih zbirk = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

.select (SelectResult.expression (Expression.property ("ime letališča")))

.from (DataSource.database (baza podatkov))

.kje(

Expression.property ("type"). EnakoTo (Expression.string ("airport"))

.and (Expression.property ("ime letališča"). like (Expression.string (predpona + "%")))

);

Merila Couchbase

Čeprav ni primerjal Couchbase Server, je to storila neodvisna stranka (Altoros) z uporabo preskusov YCSB JSON in ključev in testa TPCx-IoT. Spodnja tabela je primerjalna vrednost za dokument JSON. Kot lahko vidite, je Couchbase Server presegel tako MongoDB kot DataStax. Te primerjalne preizkuse lahko znova zaženete sami, saj je Altoros priskrbel vse zahtevane skripte.

Altoros

Na splošno Couchbase Server dobro sestavlja zbirko dokumentov NoSQL JSON z jezikom poizvedb, podobnim SQL-u, in iskalnikom s celotnim besedilom, Couchbase Mobile pa razširja predlog vrednosti na mobilne naprave. Ali je Couchbase smiseln za vas, je odvisno od vaše prijave in zahtev.

Če potrebujete zanesljivo strukturo sheme relacijske baze podatkov ali usmerjenost povezave baze podatkov grafov, potem Couchbase ne bo naredil, kar želite. Če pa potrebujete globalno razširljivo zbirko dokumentov, je Couchbase dobra izbira.

Stroški: Izdaja skupnosti Couchbase Server: Brezplačna. Couchbase Server Enterprise Edition: letne naročnine so določene po vozliščih in so na voljo po različnih cenovnih točkah, odvisno od potrebnih jeder in RAM-a vozlišča. Razvojna in testna vozlišča so brezplačna. Uvedbe v oblaku za Enterprise Edition so na voljo po urah, pri čemer je običajna cena programske opreme 0,662 USD / vozlišče / uro na AWS za Couchbase Server in 1,641 USD / vozlišče / uro za Mobile Sync Gateway, s standardno predlogo, ki uporablja štiri vozlišča strežnika in dve vozlišči sinhronizacije. , s samodejnim skaliranjem. Cene so približno primerljive za Microsoft Azure in Google Cloud Platform. Lahko prinesete tudi svojo licenco in plačate samo za vire v oblaku.

Platforma: Couchbase Server: Linux, Windows Server 2012 R2 in novejši; Kubernetes, OpenShift; AWS, Azure, GCP. Razvoj in preizkus Couchbase strežnika: MacOS 10.11 in novejši, Windows 10 Anniversary Update in novejši; Docker. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 in novejši, MacOS 10.12.6 in novejši; AWS, Docker, OpenShift.

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