Programmering

Couchbase anmeldelse: En smart NoSQL-database

Alle mellemstore til store virksomheder har brug for en database. Store multinationale virksomheder har ofte brug for globalt distribuerede databaser, og når de bruger deres database til økonomiske applikationer eller lagerapplikationer, har de brug for stærk konsistens. Få databaser kan udfylde begge behov.

Couchbase Server er en hukommelses-første, distribueret, fleksibel JSON-dokumentdatabase, der er stærkt konsistent inden for en lokal klynge. Couchbase Server understøtter også replikering af krydsdatacenter med eventuel konsistens på tværs af klynger.

Couchbase Lite er en integreret mobildatabase, der 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 lokalt, i skyen, på Kubernetes eller i hybridkonfigurationer. Den kommer i både open source- og enterprise-versioner.

Couchbase Server-forespørgselssprog, N1QL, er et SQL-supersæt designet til JSON-dokumentdatabaser med udvidelser til analyse. Couchbase understøtter også nøgleværdidataadgang og fuldtekstsøgning.

Couchbase, firmaet bag databasen, voksede fra fusionen mellem Membase (producent af en cache-grupperet nøgleværdidatabase i hukommelsen) og CouchOne (udviklere af Apache CouchDB-dokumentdatabasen) i 2011. Det nye firma startede med nøgle- værdilag, tilføjede JSON-dokumentlaget i 2012 og fortsatte med at tilføje en mobildatabase i 2014, SQL-lignende forespørgsler i 2015, fuldtekstsøgning i 2017 og analyser i 2018.

Couchbase alternativer og konkurrenter

Alternativer til Couchbase inkluderer MongoDB, en anden fleksibel dokumentdatabase; MongoDB kombineret med Redis til caching; Oracle Database, en avanceret relationsdatabase; og SQL Server, Microsofts relationelle databaseudbud. Relationelle databasesystemer er designet til brug på enkelte, store servere, og det er svært at skalere dem ud. MongoDB blev designet til at udføre master-slave replikering, som skalerer lidt, men har brug for sharding for at skalere godt ud. Redis hjælper med at fremskynde MongoDB, men introducerer en anden bevægelig del, som kan komplicere styringen af ​​de kombinerede systemer.

Andre nylige alternativer til Couchbase inkluderer CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB og Amazon DynamoDB. Jeg har diskuteret både relationelle og NoSQL muligheder i tidligere anmeldelser.

Couchbase Server-arkitektur

Couchbase Server udfører flere roller: datatjeneste, indeks service, forespørgselstjeneste, sikkerhed, replikering, søgning, begivenhed, analyse og styring. Disse tjenester kan hver køres på en eller flere noder.

Couchbase Server er designet omkring tre grundlæggende principper: hukommelse og netværkscentreret arkitektur, arbejdsbelastningsisolering og en asynkron tilgang til alt.

Skrifter er forpligtet til hukommelse, derefter vedvarende til disk og indekseret asynkront uden at blokere læser eller skriver. De mest anvendte data og indekser vedligeholdes transparent i hukommelsen for hurtig læsning. Denne tunge brug af hukommelse er god til latenstid og kapacitet, selvom det øger Couchbases RAM-krav.

Couchbase Server kan skalere hver af sine tjenester uafhængigt for at gøre dem mere effektive. Forespørgselstjenesten kan drage fordel af flere CPU-ressourcer, indekstjenesten kan bruge SSD'er, og datatjenesten kan bruge mere RAM. Couchbase kalder denne multidimensionelle skalering (MDS), og det er en af ​​Couchbase Server's kendetegn.

Asynkrone operationer hjælper Couchbase Server med at undgå at blokere skrivning, læsning eller forespørgsler. Udvikleren kan balancere holdbarhed og konsistens mod ventetid, når det er nødvendigt.

Couchbase JSON-datamodellen understøtter både grundlæggende og komplekse datatyper: tal, strenge, indlejrede objekter og arrays. Du kan oprette dokumenter, der er normaliserede eller denormaliserede. Couchbase Server kræver ikke eller understøtter ikke skemaer. Derimod kræver MongoDB ikke skemaer, men kan støtte og håndhæve dem, hvis udvikleren vælger.

Som jeg vil diskutere mere detaljeret senere, kan du få adgang til Couchbase Server-dokumenter gennem fire mekanismer: nøgleværdi, SQL-baserede forespørgsler, søgning i fuld tekst og JavaScript-begivenhed. Hvis dine JSON-dokumenter har underdokumenter eller arrays, kan du få adgang til dem direkte ved hjælp af stiudtryk uden at skulle overføre og analysere hele dokumentet. Hændelsesmodellen kan udløse dataændringer (OnUpdate) eller timere. Derudover kan du få adgang til Couchbase Server-dokumenter gennem synkronisering med Couchbase Mobile.

Couchbase Server er organiseret i spande, vBuckets, noder og klynger. Skovle indeholder JSON-dokumenter. vBuckets er i det væsentlige skår, der automatisk fordeles på tværs af noder. Noder er fysiske eller virtuelle maskiner, der er vært for enkeltforekomster af Couchbase Server. Klynger er grupper af noder. Synkron replikering forekommer mellem knudepunkterne i en klynge.

Couchbase Server implementeringsmuligheder

Du kan installere Couchbase Server lokalt, i skyen og på Kubernetes. Couchbase Server Enterprise Edition er gratis til udvikling og test og tilgængelig ved abonnement til produktion. Open source Couchbase Server Community Edition er gratis til alle formål. Bortset fra nogle udeladte funktioner er Couchbase Server Community Edition API-kompatibel med Couchbase Server Enterprise Edition.

Jeg oprettede en sky-testdrevssession på Google Cloud Platform, som (efter en fem minutters forsinkelse af implementeringen) gav mig en tre-node Couchbase Server-klynge og en Sync Gateway-knude, alt sammen godt i tre timer. Jeg havde brug for omkring en time for at gennemgå de fire Couchbase-tutorials, hvilket gav mig en fornemmelse for at spørge serveren.

Couchbase autonom operatør

Den autonome operatør Couchbase, der kun understøttes i Enterprise Edition, giver en integreret integration af Couchbase Server med open source Kubernetes og Red Hat OpenShift. Operatøren udvider Kubernetes API ved at oprette en Custom Resource Definition og registrere sig selv som en brugerdefineret Couchbase Server-controller til at administrere Couchbase Server-klynger. Dette reducerer mængden af ​​devops-indsats, det tager at køre Couchbase-klynger på Kubernetes, og lader dig automatisere styringen af ​​almindelige Couchbase-serveropgaver, såsom konfiguration, oprettelse, skalering og gendannelse af Couchbase Server-klynger. Operatøren arbejder også med Azure Kubernetes Service, Amazon Elastic Kubernetes Service og Google Kubernetes Engine.

Cross Datacenter Replication (XDCR)

Som jeg nævnte tidligere, udfører Couchbase Server synkron replikering og har stærk konsistens i en klynge. Det gør asynkron, aktiv-aktiv replikering på tværs af klynger, datacentre og tilgængelighedszoner for at undgå at pådrage sig høje skrivelatenser. XDCR gør det muligt for Couchbase at være en globalt distribueret database på bekostning af eventuel (snarere end stærk) konsistens mellem klynger.

Grundlæggende XDCR understøttes i alle Couchbase Server-udgaver. XDCR-filtrering, begrænsning og tidsstempelbaseret konfliktløsning er alle Enterprise Edition-funktioner.

Couchbase-forespørgselsværktøjer

Du kan forespørge Couchbase Server ved hjælp af en nøgle til at hente den tilknyttede værdi, som kan være et JSON-dokument eller en Blob. Du kan også forespørge om det med det SQL-lignende N1QL-sprog eller med en fuldtekstsøgning. Både N1QL- og fuldtekstforespørgsler går hurtigere, hvis bucket har indekser, der understøtter forespørgslen.

N1QL

N1QL, udtalt "nikkel", ligner meget SQL-standard med udvidelser til JSON. Jeg fandt det meget lettere at samle op end MongoDBs aggregeringsrørledning, da jeg har brugt SQL i årtier.

Der er faktisk to lignende varianter af N1QL: en til Couchbase Server Query-tjenesten og en til Analytics-tjenesten, som er en Enterprise Edition-funktion. N1QL til Analytics er baseret på SQL ++.

Nogle af N1QL-udvidelserne er BRUG TASTER, REDE, UNNESTog MANGLER. BRUG TASTER og BRUG HASH er forespørgselstips til TILSLUTTEs. REDE og UNNEST pakke og udpakke arrays. MANGLER er et JSON-specifikt alternativ til NUL; MISSER IKKE betyder, at en bestemt værdi er til stede eller NUL i et dokument. Nøgleordet for værdier, der er IKKE MISSER og IKKE NULL er KENDT. N1QL-forespørgsler kan bruge stier, som også gælder for søgninger i fuldtekst.

Fuldtekst-søgning

Couchbase understøtter eksterne fuldtekst-søgemaskiner, såsom Solr, men den har også sin egen Go-baserede søgemaskine i fuld tekst, Bleve. Bleve er inkluderet i Couchbase Mobile såvel som Couchbase Server, og den understøtter de fleste af de søgesyntakser, du forventer.

Couchbase SDK'er

Alle de vigtigste Couchbase-tjenester er udsat for programmering via SDK. SDK'er er tilgængelige til C / C ++, .Net (C #, F # og Visual Basic .Net), Go, Java, Node.js, PHP, Python og Scala.

Ud over SDK'erne tilbyder Couchbase tæt integration med flere rammer: Spring Data, .NET LINQ og Couchbase's egen Ottoman Node.js ODM. Følgende eksempelforespørgsel bruger f.eks. Linq2Couchbase:

{

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

});

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

var forespørgsel = (fra a i kontekst. forespørgsel ()

hvor a.Country == "Storbritannien"

vælg a).

Tag (10);

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

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobile har to dele: Couchbase Lite, der kører på en mobilenhed, og Couchbase Sync Gateway, der kører på en serverknude. Couchbase Lite kører på iOS, Android, .Net og Xamarin og understøtter sprogene Swift, Objective-C, Java, Kotlin og C ++.

For eksempel definerer følgende Java-kode en forespørgsel, der skal køres på Android:

Database database = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

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

.fra (DataSource.database (database))

.hvor(

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

.og (Expression.property ("lufthavnnavn"). som (Expression.string (præfiks + "%")))

);

Couchbase-benchmarks

Selvom det ikke har benchmarket Couchbase Server, har en tredjepart (Altoros) gjort det ved hjælp af YCSB JSON- og nøgleværditestene og TPCx-IoT-testen. Nedenstående diagram er til JSON-dokumentbenchmark. Som du kan se, overgik Couchbase Server både MongoDB og DataStax. Du kan køre disse benchmarks igen, da Altoros har leveret alle de nødvendige scripts.

Altoros

Samlet set stabler Couchbase Server godt sammen som en NoSQL JSON-dokumentdatabase med et SQL-lignende forespørgselssprog og en fuldtekst-søgemaskine, og Couchbase Mobile udvider værdiforslaget til mobile enheder. Om Couchbase giver mening for dig afhænger af din applikation og dine behov.

Hvis du har brug for den pålidelige skemastruktur i en relationsdatabase eller forbindelsesorienteringen af ​​en grafdatabase, vil Couchbase ikke gøre, hvad du vil. Men hvis du har brug for en globalt skalerbar dokumentdatabase, er Couchbase et godt valg.

Koste: Couchbase Server Community Edition: Gratis. Couchbase Server Enterprise Edition: Årlige abonnementer er prissat efter node og fås til forskellige prispunkter afhængigt af nodens nødvendige kerner og RAM. Udvikling og testknudepunkter er gratis. Enterprise Edition-skyinstallationer er tilgængelige pr. Time med typisk softwareprissætning på $ 0,662 / node / time på AWS til Couchbase Server og $ 1,641 / node / time til Mobile Sync Gateway med en standardskabelon, der oprindeligt bruger fire serverknudepunkter og to synkroniseringsnoder , med autoskalering. Priserne er nogenlunde sammenlignelige på Microsoft Azure og Google Cloud Platform. Du kan også medbringe din egen licens og kun betale for skyressourcerne.

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