Programmering

Couchbase anmeldelse: En smart NoSQL-database

Alle mellomstore til store bedrifter trenger en database. Store multinasjonale virksomheter trenger ofte globalt distribuerte databaser, og når de bruker databasen sin for økonomiske applikasjoner eller lagerapplikasjoner, trenger de sterk konsistens. Få databaser kan dekke begge behovene.

Couchbase Server er en minne-første, distribuert, fleksibel JSON-dokumentdatabase som er sterkt konsistent i en lokal klynge. Couchbase Server støtter også replikering av datasenter med eventuell konsistens på tvers av klynger.

Couchbase Lite er en innebygd mobildatabase som fungerer offline og synkroniseres med Couchbase Sync Gateway når den er online. Sync Gateway synkroniseres med Couchbase Server så vel som med flere Couchbase Lite-forekomster.

Couchbase Server kan distribueres i lokaler, i skyen, på Kubernetes eller i hybridkonfigurasjoner. Den kommer i både open source og enterprise versjoner.

Couchbase Server-spørringsspråket, N1QL, er et SQL-supersett designet for JSON-dokumentdatabaser, med utvidelser for analyse. Couchbase støtter også tilgang til nøkkelverdidata og fulltekstsøk.

Couchbase, selskapet bak databasen, vokste fra sammenslåingen av Membase (produsent av en hurtigbufret klynget nøkkelverdidatabase) og CouchOne (utviklere av Apache CouchDB-dokumentdatabasen) i 2011. Det nye selskapet startet med nøkkel- verdilag, la til JSON-dokumentlaget i 2012, og fortsatte med å legge til en mobildatabase i 2014, SQL-lignende spørsmål i 2015, fulltekstsøk i 2017 og analyse i 2018.

Couchbase-alternativer og konkurrenter

Alternativer til Couchbase inkluderer MongoDB, en annen fleksibel dokumentdatabase; MongoDB kombinert med Redis for hurtigbufring; Oracle Database, en avansert relasjonsdatabase; og SQL Server, Microsofts relasjonelle databasetilbud. Relasjonelle databasesystemer ble designet for bruk på enkle, store servere, og det er vanskelig å skalere dem ut. MongoDB ble designet for å gjøre replikering av master-slave, som skalerer litt, men trenger skjæring for å skalere seg godt ut. Redis hjelper til med å øke hastigheten på MongoDB, men introduserer en annen bevegelig del, som kan komplisere administrasjonen av de kombinerte systemene.

Andre nylige alternativer til Couchbase inkluderer CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB og Amazon DynamoDB. Jeg har diskutert både relasjons- og NoSQL-alternativene i tidligere anmeldelser.

Couchbase Server-arkitektur

Couchbase Server utfører flere roller: datatjeneste, indekseringstjeneste, spørringstjeneste, sikkerhet, replikering, søk, begivenhet, analyse og administrasjon. Disse tjenestene kan hver kjøres på en eller flere noder.

Couchbase Server er designet rundt tre grunnleggende prinsipper: minne og nettverkssentrert arkitektur, arbeidsmengdeisolering og en asynkron tilnærming til alt.

Skriftene er forpliktet til hukommelse, og fortsetter deretter til disken og indekseres asynkront uten å blokkere lese eller skrive. De mest brukte dataene og indeksene vedlikeholdes transparent i minnet for rask lesing. Denne tunge minnebruk er bra for ventetid og gjennomstrømning, selv om det øker Couchbases RAM-krav.

Couchbase Server kan skalere hver av sine tjenester uavhengig, for å gjøre dem mer effektive. Spørringstjenesten kan dra nytte av flere CPU-ressurser, indeksetjenesten kan bruke SSD-er, og datatjenesten kan bruke mer RAM. Couchbase kaller denne flerdimensjonale skalering (MDS), og det er en av Couchbase Servers kjennetegn.

Asynkrone operasjoner hjelper Couchbase Server til å unngå å blokkere skriving, lesing eller spørsmål. Utvikleren kan balansere holdbarhet og konsistens mot ventetid når det er nødvendig.

Couchbase JSON datamodell støtter både grunnleggende og komplekse datatyper: tall, strenger, nestede objekter og matriser. Du kan opprette dokumenter som er normalisert eller denormalisert. Couchbase Server krever ikke eller støtter skjemaer. Derimot krever MongoDB ikke skjemaer, men kan støtte og håndheve dem hvis utvikleren velger.

Som jeg vil diskutere mer detaljert senere, kan du få tilgang til Couchbase Server-dokumenter gjennom fire mekanismer: nøkkelverdi, SQL-baserte spørsmål, fulltekstsøk og JavaScript-hendelse. Hvis JSON-dokumentene dine har underdokumenter eller matriser, kan du få tilgang til dem direkte ved hjelp av baneuttrykk uten å måtte overføre og analysere hele dokumentet. Eventing-modellen kan utløse dataendringer (OnUpdate) eller tidtakere. I tillegg kan du få tilgang til Couchbase Server-dokumenter gjennom synkronisering med Couchbase Mobile.

Couchbase Server er organisert i bøtter, vBuckets, noder og klynger. Skuffer inneholder JSON-dokumenter. vBuckets er i hovedsak skjær som automatisk distribueres over noder. Noder er fysiske eller virtuelle maskiner som er vert for enkeltforekomster av Couchbase Server. Klynger er grupper av noder. Synkron replikering skjer mellom nodene i en klynge.

Alternativer for distribusjon av Couchbase Server

Du kan installere Couchbase Server lokalt, i skyen og på Kubernetes. Couchbase Server Enterprise Edition er gratis for utvikling og testing og tilgjengelig via abonnement for produksjon. Åpen kildekode Couchbase Server Community Edition er gratis for alle formål. Bortsett fra noen utelatte funksjoner, er Couchbase Server Community Edition API-kompatibel med Couchbase Server Enterprise Edition.

Jeg opprettet en sky-prøvekjøringsøkt på Google Cloud Platform, som (etter en fem-minutters distribusjonsforsinkelse) ga meg en tre-node Couchbase Server-klynge og en Sync Gateway-node, alt bra i tre timer. Jeg trengte omtrent en time for å gå gjennom de fire Couchbase-opplæringene, noe som ga meg en følelse av å spørre serveren.

Couchbase autonom operatør

Couchbase Autonomous Operator, støttes bare i Enterprise Edition, gir en integrert integrering av Couchbase Server med åpen kildekode Kubernetes og Red Hat OpenShift. Operatøren utvider Kubernetes API ved å opprette en egendefinert ressursdefinisjon og registrere seg selv som en tilpasset Couchbase Server-kontroller for å administrere Couchbase Server-klynger. Dette reduserer mengden devops-innsats det tar å kjøre Couchbase-klynger på Kubernetes, og lar deg automatisere administrasjonen av vanlige Couchbase Server-oppgaver, som konfigurering, opprettelse, skalering og gjenoppretting av Couchbase Server-klynger. Operatøren jobber også med Azure Kubernetes Service, Amazon Elastic Kubernetes Service og Google Kubernetes Engine.

Cross Datacenter Replication (XDCR)

Som jeg nevnte tidligere, gjør Couchbase Server synkron replikering og har sterk konsistens i en klynge. Det gjør asynkron, aktiv-aktiv replikering på tvers av klynger, datasentre og tilgjengelighetssoner, for å unngå å påføre skrivetid. XDCR lar Couchbase være en globalt distribuert database, på bekostning av å tillate eventuell (snarere enn sterk) konsistens mellom klynger.

Grunnleggende XDCR støttes i alle Couchbase Server-utgaver. XDCR-filtrering, struping og tidsstempelbasert konfliktløsning er alle Enterprise Edition-funksjoner.

Couchbase spørringsverktøy

Du kan spørre Couchbase Server ved hjelp av en nøkkel for å hente den tilknyttede verdien, som kan være et JSON-dokument eller en BLOB. Du kan også spørre om det med det SQL-lignende N1QL-språket eller med et fulltekstsøk. Både N1QL- og fulltekstforespørsler går raskere hvis bøtta har indekser som støtter spørringen.

N1QL

N1QL, uttalt "nikkel", ser veldig ut som standard SQL, med utvidelser for JSON. Jeg syntes det var mye lettere å hente enn MongoDBs aggregeringsrørledning, gitt at jeg har brukt SQL i flere tiår.

Det er faktisk to lignende varianter av N1QL: en for Couchbase Server Query-tjenesten, og en for Analytics-tjenesten, som er en Enterprise Edition-funksjon. N1QL for Analytics er basert på SQL ++.

Noen av N1QL-utvidelsene er BRUK TASTER, REDE, UNNEST, og SAVNET. BRUK TASTER og BRUK HASH er spørsmålstips for BLI MEDs. REDE og UNNEST pakke og pakke ut matriser. SAVNET er et JSON-spesifikt alternativ til NULL; MISSER IKKE betyr at en spesifikk verdi er til stede eller NULL i et dokument. Nøkkelordet for verdier som er IKKE MISS og IKKE NULL er KJENT. N1QL-spørsmål kan bruke stier, som også gjelder for fulltekstsøk.

Fulltekst-søk

Couchbase støtter eksterne fulltekst-søkemotorer, som Solr, men den har også sin egen Go-baserte, fulltekst-søkemotor, Bleve. Bleve er inkludert i Couchbase Mobile så vel som Couchbase Server, og den støtter de fleste søkesyntaksene du forventer.

Couchbase SDKer

Alle de viktigste Couchbase-tjenestene er eksponert for programmering gjennom SDK. SDKer er tilgjengelige for C / C ++, .Net (C #, F # og Visual Basic. Net), Go, Java, Node.js, PHP, Python og Scala.

I tillegg til SDK-ene tilbyr Couchbase tett integrasjon med flere rammer: Spring Data, .NET LINQ og Couchbase sin egen Ottoman Node.js ODM. Følgende eksempelspørring bruker for eksempel Linq2Couchbase:

{

Servere = ny liste {new Uri ("// localhost: 8091 /")}

});

var context = new BucketContext (ClusterHelper.GetBucket ("reiseeksempel"));

var spørring = (fra a i sammenheng. Query ()

der a.Country == "Storbritannia"

Velg en).

Ta (10);

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

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobile har to deler: Couchbase Lite, som kjører på en mobil enhet, og Couchbase Sync Gateway, som kjører på en servernode. Couchbase Lite kjører på iOS, Android, .Net og Xamarin, og støtter språkene Swift, Objective-C, Java, Kotlin og C ++.

For eksempel definerer følgende Java-kode et spørsmål som skal kjøres på Android:

Database database = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

.select (SelectResult.expression (Expression.property ("airportname")))

.fra (DataSource.database (database))

.hvor(

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

.og (Expression.property ("airportname"). som (Expression.string (prefiks + "%")))

);

Couchbase-referanser

Selv om det ikke har blitt benchmarket Couchbase Server, har en tredjepart (Altoros) gjort det ved å bruke YCSB JSON og nøkkelverditester og TPCx-IoT-testen. Diagrammet nedenfor er for referanseverdien for JSON-dokumenter. Som du kan se, overgikk Couchbase Server både MongoDB og DataStax. Du kan kjøre disse referansene selv, siden Altoros har levert alle nødvendige skript.

Altoros

Samlet sett stabler Couchbase Server seg godt som en NoSQL JSON-dokumentdatabase med et SQL-lignende spørrespråk og en fulltekst-søkemotor, og Couchbase Mobile utvider verdiforslaget til mobile enheter. Om Couchbase er fornuftig for deg, avhenger av applikasjonen og kravene.

Hvis du trenger den pålitelige skjemastrukturen til en relasjonsdatabase, eller tilkoblingsorienteringen til en grafdatabase, vil ikke Couchbase gjøre det du vil. Men hvis du trenger en globalt skalerbar dokumentdatabase, er Couchbase et godt valg.

Koste: Couchbase Server Community Edition: Gratis. Couchbase Server Enterprise Edition: Årsabonnement er priset etter node og tilgjengelig på forskjellige prispunkter, avhengig av nodens kjerner og RAM. Utviklings- og testnoder er gratis. Enterprise Edition-skyutplasseringer er tilgjengelige per time, med typisk programvareprising på $ 0,662 / node / time på AWS for Couchbase Server og $ 1,641 / node / time for Mobile Sync Gateway, med en standardmal som bruker fire servernoder og to synkroniseringsnoder i utgangspunktet , med autoskalering. Priser er omtrent sammenlignbare på Microsoft Azure og Google Cloud Platform. Du kan også ta med din egen lisens og bare betale for skyressursene.

Plattform: Couchbase Server: Linux, Windows Server 2012 R2 og nyere; Kubernetes, OpenShift; AWS, Azure, GCP. Couchbase Server utvikling og test: MacOS 10.11 og nyere, Windows 10 Anniversary Update og senere; Docker. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 og nyere, MacOS 10.12.6 og nyere; AWS, Docker, OpenShift.

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