Couchbase pregled: pametna baza podataka NoSQL

Svakom srednjem i velikom poduzeću potrebna je baza podataka. Velike multinacionalne tvrtke često trebaju globalno distribuirane baze podataka, a kada svoju bazu podataka koriste za financijske ili inventarne potrebe, potrebna im je snažna dosljednost. Nekoliko baza podataka može ispuniti obje potrebe.

Couchbase poslužitelj prva je memorija, distribuirana, fleksibilna baza podataka JSON dokumenata koja je čvrsto dosljedna unutar lokalnog klastera. Couchbase Server također podržava replikaciju unakrsnih centara podataka uz eventualnu dosljednost na klasterima. 

Couchbase Lite je ugrađena mobilna baza podataka koja radi izvan mreže i sinkronizira se s Couchbase Sync Gatewayom kada je na mreži. Sync Gateway sinkronizira se s Couchbase poslužiteljem kao i s više instanci Couchbase Lite.

Couchbase Server može se implementirati u prostorijama, u oblaku, na Kubernetesu ili u hibridnim konfiguracijama. Dolazi u verzijama s otvorenim kodom i u tvrtki.

Jezik upita Couchbase Server, N1QL, SQL je superset dizajniran za baze podataka JSON dokumenata, s proširenjima za analitiku. Couchbase također podržava pristup podacima ključne vrijednosti i pretraživanje cjelovitog teksta.

Couchbase, tvrtka koja stoji iza baze podataka, nastala je spajanjem Membasea (tvorca memorirane predmemorirane klasterirane baze podataka ključ / vrijednost) i CouchOne (programeri baze podataka Apache CouchDB dokumenata) 2011. Nova tvrtka započela je s vrijednosni sloj, dodao je sloj dokumenata JSON 2012. godine, a nastavio je dodavati mobilnu bazu podataka 2014., upite slične SQL-u 2015., pretraživanje cjelovitog teksta 2017. i analitiku 2018. godine.

Couchbase alternative i konkurenti

Alternative Couchbaseu su MongoDB, još jedna fleksibilna baza podataka dokumenata; MongoDB u kombinaciji s Redisom za predmemoriranje; Oracle Database, vrhunska relacijska baza podataka; i SQL Server, Microsoftova ponuda relacijske baze podataka. Relacijski sustavi baza podataka dizajnirani su za upotrebu na pojedinačnim, velikim poslužiteljima i teško ih je povećati. MongoDB je dizajniran za vršenje replikacije master-slave, koja se malo skalira, ali treba oštrinu da bi se dobro povećala. Redis pomaže ubrzati MongoDB, ali uvodi još jedan pokretni dio, koji može zakomplicirati upravljanje kombiniranim sustavima.

Ostale nedavne alternative Couchbaseu uključuju CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB i Amazon DynamoDB. U prethodnim recenzijama raspravljao sam o relacijskoj i NoSQL opcijama.

Arhitektura Couchbase poslužitelja

Couchbase Server obavlja više uloga: podatkovnu uslugu, indeksnu uslugu, uslugu upita, sigurnost, replikaciju, pretraživanje, događanje, analitiku i upravljanje. Te se usluge mogu izvoditi na jednom ili više čvorova.

Couchbase Server dizajniran je oko tri osnovna principa: memorija i mrežna arhitektura, izolacija radnog opterećenja i asinkroni pristup svemu.

Zapisi se predaju u memoriju, a zatim se zadržavaju na disku i indeksiraju asinkrono bez blokiranja čitanja ili pisanja. Podaci i indeksi koji se najčešće koriste održavaju se transparentno u memoriji za brzo čitanje. Ova intenzivna upotreba memorije dobra je za kašnjenje i propusnost, iako povećava Couchbaseove RAM zahtjeve.

Couchbase Server može samostalno prilagoditi svaku svoju uslugu kako bi ih učinio učinkovitijima. Usluga upita može imati koristi od više CPU resursa, indeksna usluga može koristiti SSD-ove, a podatkovna usluga može koristiti više RAM-a. Couchbase ovo naziva višedimenzionalnim skaliranjem (MDS) i jedno je od prepoznatljivih obilježja Couchbase poslužitelja.

Asinkrone operacije pomažu Couchbase poslužitelju da izbjegne blokiranje upisa, čitanja ili upita. Programer može uravnotežiti trajnost i dosljednost prema kašnjenju kad je to potrebno.

Couchbase JSON model podataka podržava i osnovne i složene vrste podataka: brojeve, nizove, ugniježđene objekte i nizove. Možete stvoriti dokumente koji su normalizirani ili denormalizirani. Couchbase poslužitelj ne zahtijeva ili čak ne podržava sheme. Suprotno tome, MongoDB ne zahtijeva sheme, ali ih može podržati i primijeniti ako ih programer odluči.

Kao što ću kasnije detaljnije raspraviti, dokumentima Couchbase poslužitelja možete pristupiti putem četiri mehanizma: ključ / vrijednost, upiti temeljeni na SQL-u, pretraživanje cjelovitog teksta i JavaScript događaji. Ako vaši JSON dokumenti imaju poddokumente ili nizove, možete im pristupiti izravno koristeći izraze puta bez potrebe za prijenosom i raščlanjivanjem cijelog dokumenta. Model događaja može pokrenuti promjene podataka ( OnUpdate) ili odbrojavanja. Osim toga, dokumentima Couchbase poslužitelja možete pristupiti sinkronizacijom s Couchbase Mobile.  

Couchbase poslužitelj organiziran je u segmente, vBuckets, čvorove i klastere. Kante sadrže JSON dokumente. vBuckets su u osnovi krhotine koje se automatski distribuiraju po čvorovima. Čvorovi su fizički ili virtualni strojevi koji hostiraju pojedinačne primjerke Couchbase poslužitelja. Klasteri su skupine čvorova. Sinhrona replikacija događa se između čvorova u klasteru.

Opcije postavljanja Couchbase poslužitelja

Couchbase Server možete instalirati u prostorijama, u oblaku i na Kubernetesu. Couchbase Server Enterprise Edition je besplatno za razvoj i testiranje i dostupan je pretplatom za produkciju. Otvoreno izdanje Couchbase Server Community Edition je besplatno za sve svrhe. Osim nekih izostavljenih značajki, Couchbase Server Community Edition je i API kompatibilan s Couchbase Server Enterprise Edition.

Stvorio sam sesiju probnog pogona u oblaku na Google Cloud Platformi, koja mi je (nakon petominutnog kašnjenja postavljanja) dala klaster Couchbase Server s tri čvora i čvor Sync Gateway, sve u redu tri sata. Trebao mi je otprilike sat vremena da prođem kroz četiri vodiča za Couchbase, što mi je dalo osjećaj da upitam poslužitelj.

Autonomni operater Couchbase

Couchbase Autonomous Operator, podržan samo u izdanju Enterprise Edition, pruža izvornu integraciju Couchbase poslužitelja s otvorenim kodom Kubernetes i Red Hat OpenShift. Operator proširuje Kubernetes API stvaranjem prilagođene definicije resursa i registracijom sebe kao prilagođenog kontrolera Couchbase poslužitelja za upravljanje klasterima Couchbase poslužitelja. Ovo smanjuje količinu napora devops potrebnog za pokretanje Couchbase klastera na Kubernetesu i omogućuje vam automatizaciju upravljanja uobičajenim zadacima Couchbase poslužitelja, poput konfiguracije, izrade, skaliranja i oporavka klastera Couchbase Server. Operator također surađuje s uslugom Azure Kubernetes, Amazon Elastic Kubernetes Service i Google Kubernetes Engine.

Unakrsna replikacija centra podataka (XDCR)

Kao što sam već spomenuo, Couchbase Server vrši sinkronu replikaciju i ima jaku dosljednost unutar klastera. Radi asinkronu, aktivno-aktivnu replikaciju kroz klastere, podatkovne centre i zone dostupnosti, kako bi se izbjeglo stvaranje velikih latencija pisanja. XDCR omogućuje Couchbaseu da bude globalno distribuirana baza podataka, po cijenu dopuštanja eventualne (a ne jake) dosljednosti između klastera.

Osnovni XDCR podržan je u svim izdanjima Couchbase Server. XDCR filtriranje, prigušivanje i rješavanje sukoba na temelju vremenskih žigova sve su značajke Enterprise Editiona.

Couchbase alati za upite

Možete postaviti upit Couchbase poslužitelju pomoću ključa za dohvaćanje pridružene vrijednosti, koja može biti JSON dokument ili Blob. Možete ga upitati i jezikom sličnim SQL-u N1QL ili pretraživanjem punog teksta. Upiti N1QL i cjeloviti tekst brže se odvijaju ako skup ima indekse koji podržavaju upit.

N1QL

N1QL, izgovara se "nikal", vrlo sliči na standardni SQL, s proširenjima za JSON. Puno mi je bilo lakše to shvatiti od MongoDB-ovog agregacijskog cjevovoda, s obzirom na to da već desetljećima koristim SQL.

Zapravo postoje dvije slične inačice N1QL: jedna za uslugu upita Couchbase Server Query i jedna za uslugu Analytics, koja je značajka Enterprise Edition. N1QL za Analytics temelji se na SQL ++.

Neki od N1QL ekstenzije su USE KEYS, NEST, UNNEST, i MISSING. USE KEYSi USE HASHsavjeti su za upite za JOINs. NESTte UNNESTspakirati i raspakirati nizove. MISSINGje specifična za JSON alternativa NULL; IS NOT MISSINGznači da je određena vrijednost prisutna ili NULLu dokumentu. Ključna riječ za vrijednosti koje jesu NOT MISSINGi NOT NULLjesu KNOWN. N1QL upiti mogu koristiti putove, koji se također primjenjuju na pretraživanja punog teksta.

Pretraživanje cijelog teksta

Couchbase podržava vanjske pretraživače cjelovitog teksta, poput Solra, ali ima i vlastitu tražilicu za puni tekst Bleve koja se temelji na tehnologiji Go. Bleve je uključen u Couchbase Mobile, kao i Couchbase Server, i podržava većinu sintaksa pretraživanja koje biste očekivali.

Couchbase SDK-ovi

Sve glavne usluge Couchbase izložene su programiranju putem SDK-a. SDK-ovi su dostupni za C / C ++, .Net (C #, F # i Visual Basic .Net), Go, Java, Node.js, PHP, Python i Scala.

Uz SDK-ove, Couchbase nudi usku integraciju s nekoliko okvira: Spring Data, .NET LINQ i Ochoman Node.js ODM Couchbase-a. Na primjer, sljedeći uzorak upita koristi Linq2Couchbase:

{

     Poslužitelji = novi popis {novi Uri ("// localhost: 8091 /")}

});

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

var upit = (iz a u context.Query ()

               gdje je a.Country == "Ujedinjeno Kraljevstvo"

               odaberite a).

               Uzmi (10);

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

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobile ima dva dijela: Couchbase Lite koji radi na mobilnom uređaju i Couchbase Sync Gateway koji radi na čvoru poslužitelja. Couchbase Lite radi na iOS, Android, .Net i Xamarin, a podržava jezike Swift, Objective-C, Java, Kotlin i C ++.

Na primjer, sljedeći Java kôd definira upit koji će se pokrenuti na Androidu:

Baza podataka baze podataka = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

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

  .from (DataSource.database (baza podataka))

  .gdje(

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

      .and (Expression.property ("naziv aerodroma"). like (Expression.string (prefix + "%")))

);

Mjerila Couchbasea

Iako nije usporedio Couchbase poslužitelj, treća strana (Altoros) to je učinila koristeći YCSB JSON i testove ključ / vrijednost i test TPCx-IoT. Grafikon u nastavku odnosi se na referentnu vrijednost za JSON dokument. Kao što vidite, Couchbase Server nadmašio je i MongoDB i DataStax. Te mjerila možete sami ponovno pokrenuti, jer je Altoros isporučio sve potrebne skripte.

Altoros

Sveukupno, Couchbase Server dobro slaže bazu podataka NoSQL JSON dokumenata s jezikom upita sličnim SQL-u i pretraživačem punog teksta, a Couchbase Mobile proširuje prijedlog vrijednosti na mobilne uređaje. Hoće li Couchbase za vas imati smisla, ovisi o vašoj aplikaciji i zahtjevima.

Ako vam treba pouzdana struktura sheme relacijske baze podataka ili orijentacija veze baze podataka grafova, tada Couchbase neće raditi ono što želite. Ali ako vam je potrebna globalno skalabilna baza podataka dokumenata, tada je Couchbase dobar izbor.

-

Cijena: Couchbase Server Community Edition: Besplatno. Couchbase Server Enterprise Edition: Godišnje pretplate cijene se po čvorovima i dostupne su po različitim cijenama, ovisno o potrebnim jezgri i RAM memoriji čvora. Čvorovi za razvoj i testiranje su besplatni. Razmještanje u oblaku Enterprise Edition dostupno je po satima, s uobičajenom cijenom softvera od 0,662 USD / čvor / sat na AWS-u za Couchbase Server i 1,641 USD / čvor / sat za Mobile Sync Gateway, sa standardnim predloškom koji koristi četiri čvora poslužitelja i dva čvora sinkronizacije u početku , s automatskim skaliranjem. Cijene su približno usporedive na Microsoft Azureu i Google Cloud Platformi. Također možete ponijeti vlastitu licencu i platiti samo za resurse u oblaku.

Platforma: Couchbase poslužitelj: Linux, Windows Server 2012 R2 i noviji; Kubernetes, OpenShift; AWS, Azure, GCP. Razvoj i test Couchbase poslužitelja: MacOS 10.11 i noviji, Windows 10 Anniversary Update i novije verzije; Lučki radnik. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 i noviji, MacOS 10.12.6 i noviji; AWS, Docker, OpenShift.