Ohjelmointi

Couchbase-arvostelu: Älykäs NoSQL-tietokanta

Jokainen keskisuuri ja suuri yritys tarvitsee tietokannan. Suuret monikansalliset yritykset tarvitsevat usein maailmanlaajuisesti hajautettuja tietokantoja, ja kun ne käyttävät tietokantaansa taloudellisiin tai inventaariosovelluksiin, he tarvitsevat vahvan johdonmukaisuuden. Harvat tietokannat voivat täyttää molemmat tarpeet.

Couchbase Server on ensin muisti, hajautettu, joustava JSON-asiakirjatietokanta, joka on vahvasti paikallisen klusterin sisällä. Couchbase Server tukee myös datakeskusten välistä replikointia lopullisella yhdenmukaisuudella klustereiden välillä.

Couchbase Lite on upotettu mobiilitietokanta, joka toimii offline-tilassa ja synkronoituu Couchbase Sync Gatewayn kanssa ollessaan verkossa. Synkronointiyhdyskäytävä synkronoidaan sekä Couchbase Serverin että useiden Couchbase Lite -esiintymien kanssa.

Couchbase-palvelin voidaan ottaa käyttöön tiloissa, pilvessä, Kubernetesissa tai hybridimäärityksissä. Se tulee sekä avoimen lähdekoodin että yritysversioina.

Couchbase Server -kyselykieli, N1QL, on JSON-asiakirjatietokantoihin suunniteltu SQL-supersarja, jossa on laajennuksia analytiikkaa varten. Couchbase tukee myös avaimen arvoisten tietojen käyttöä ja kokotekstihakua.

Tietokannan takana oleva yritys Couchbase kasvoi Membasen (muistiin tallennettujen välimuistiin tallennettujen avainarvotietokantojen valmistaja) ja CouchOne (Apache CouchDB -asiakirjatietokannan kehittäjät) -yritysten sulautumisesta vuonna 2011. Uusi yritys aloitti avaimen arvokerros, lisäsi JSON-asiakirjakerroksen vuonna 2012 ja lisäsi mobiilitietokannan vuonna 2014, SQL-tyyppiset kyselyt vuonna 2015, kokotekstihaku vuonna 2017 ja analytiikka vuonna 2018.

Couchbase-vaihtoehdot ja kilpailijat

Vaihtoehtoina Couchbaselle on MongoDB, toinen joustava asiakirjatietokanta; MongoDB yhdessä Redisin kanssa välimuistiin tallentamista varten; Oracle Database, huippuluokan relaatiotietokanta; ja SQL Server, Microsoftin relaatiotietokantatarjous. Relaatiotietokantajärjestelmät on suunniteltu käytettäväksi yksittäisissä, suurissa palvelimissa, ja niitä on vaikea skaalata. MongoDB on suunniteltu suorittamaan isäntä-orja-replikaatio, joka skaalautuu vähän, mutta tarvitsee sirpaleita skaalautumaan hyvin. Redis auttaa nopeuttamaan MongoDB: tä, mutta esittelee toisen liikkuvan osan, joka voi vaikeuttaa yhdistettyjen järjestelmien hallintaa.

Muita viimeaikaisia ​​vaihtoehtoja Couchbaselle ovat CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB ja Amazon DynamoDB. Olen keskustellut sekä relaatio- että NoSQL-vaihtoehdoista aiemmissa arvosteluissa.

Couchbase-palvelinarkkitehtuuri

Couchbase Server suorittaa useita rooleja: datapalvelu, hakemistopalvelu, kyselypalvelu, suojaus, replikointi, haku, tapahtumien tapahtuminen, analytiikka ja hallinta. Kukin näistä palveluista voidaan suorittaa yhdessä tai useammassa solmussa.

Couchbase Server on suunniteltu kolmen perusperiaatteen ympärille: muisti ja verkkokeskeinen arkkitehtuuri, työmäärän eristäminen ja asynkroninen lähestymistapa kaikkeen.

Kirjoitukset sitoutuvat muistiin, säilytetään sitten levylle ja indeksoidaan asynkronisesti estämättä lukemista tai kirjoittamista. Useimmin käytetyt tiedot ja hakemistot ylläpidetään avoimesti muistissa nopeaa lukemista varten. Tämä raskas muistin käyttö on hyvä viivästykselle ja läpäisykyvylle, vaikka se lisää Couchbasen RAM-vaatimuksia.

Couchbase Server voi skaalata kaikki palvelut itsenäisesti tehostaakseen niitä. Kyselypalvelu voi hyötyä useammasta suorittimen resurssista, hakemistopalvelu voi käyttää SSD-asemia ja datapalvelu voi käyttää enemmän RAM-muistia. Couchbase kutsuu tätä moniulotteiseksi skaalaksi (MDS), ja se on yksi Couchbase Serverin erottavista ominaisuuksista.

Asynkroniset operaatiot auttavat Couchbase Serveria välttämään kirjoitusten, lukujen tai kyselyjen estämisen. Kehittäjä voi tarvittaessa tasapainottaa kestävyyden ja johdonmukaisuuden viiveen kanssa.

Couchbase JSON -tietomalli tukee sekä perustietoja että monimutkaisia ​​tietotyyppejä: numeroita, merkkijonoja, sisäkkäisiä objekteja ja taulukoita. Voit luoda asiakirjoja, jotka on normalisoitu tai denormalisoitu. Couchbase Server ei vaadi tai edes tue skeemejä. Sitä vastoin MongoDB ei vaadi skeemejä, mutta voi tukea ja valvoa niitä, jos kehittäjä haluaa.

Kuten keskustelen myöhemmin tarkemmin, voit käyttää Couchbase Server -asiakirjoja neljällä tavalla: avainarvo, SQL-pohjaiset kyselyt, kokotekstihaku ja JavaScript-tapahtuma. Jos JSON-asiakirjoissasi on alidokumentteja tai taulukoita, voit käyttää niitä suoraan polkulausekkeilla tarvitsematta siirtää ja jäsentää koko asiakirjaa. Tapahtumamalli voi laukaista tietojen muutokset (Päivitä) tai ajastimet. Lisäksi voit käyttää Couchbase Server -asiakirjoja synkronoimalla Couchbase Mobilen kanssa.

Couchbase-palvelin on järjestetty ryhmiksi, v-kaukoiksi, solmuiksi ja klustereiksi. Kauhoissa on JSON-asiakirjoja. vBuckets ovat olennaisesti sirpaleita, jotka jaetaan automaattisesti solmuille. Solmut ovat fyysisiä tai virtuaalikoneita, jotka isännöivät yksittäisiä Couchbase Server -esiintymiä. Klusterit ovat solmujen ryhmiä. Synkroninen replikointi tapahtuu klusterin solmujen välillä.

Couchbase Server -asennusvaihtoehdot

Voit asentaa Couchbase Serverin tiloihin, pilveen ja Kubernetesiin. Couchbase Server Enterprise Edition on ilmainen kehitystyöhön ja testaukseen, ja se on tilattavissa tuotantoon. Avoimen lähdekoodin Couchbase Server Community Edition on ilmainen kaikkiin tarkoituksiin. Joidenkin ohitettujen ominaisuuksien lisäksi Couchbase Server Community Edition on API-yhteensopiva Couchbase Server Enterprise Editionin kanssa.

Loin pilvikoe-istunnon Google Cloud Platformiin, joka (viiden minuutin käyttöönoton viiveen jälkeen) antoi minulle kolmen solmun Couchbase Server -klusterin ja Sync Gateway -solmun. Tarvitsin noin tunnin käydä läpi neljä Couchbase-opetusohjelmaa, mikä antoi minulle tunteen kysyä palvelimelta.

Couchbase-itsenäinen operaattori

Couchbase Autonomous Operator, jota tuetaan vain Enterprise Editionissa, tarjoaa Couchbase Serverin natiivin integraation avoimen lähdekoodin Kubernetesin ja Red Hat OpenShiftin kanssa. Operaattori laajentaa Kubernetes-sovellusliittymää luomalla mukautetun resurssimääritelmän ja rekisteröimällä itsensä mukautetuksi Couchbase Server -ohjaimeksi Couchbase Server -klustereiden hallitsemiseksi. Tämä vähentää Couchbase-klustereiden suorittamiseen Kubernetesilla kuluvien resurssien määrää ja antaa sinun automatisoida yleisten Couchbase Server -tehtävien hallinnan, kuten Couchbase Server -klustereiden kokoonpano, luominen, skaalaus ja palautus. Operaattori toimii myös Azure Kubernetes Service, Amazon Elastic Kubernetes Service ja Google Kubernetes Engine kanssa.

Rajatietokeskuksen replikointi (XDCR)

Kuten aiemmin mainitsin, Couchbase Server suorittaa synkronisen replikoinnin ja sillä on vahva yhdenmukaisuus klusterissa. Se suorittaa asynkronista, aktiivista ja aktiivista replikointia klustereiden, palvelinkeskusten ja käytettävyysvyöhykkeiden välillä välttääksesi suuria kirjoitusviiveitä. XDCR sallii Couchbasen olla maailmanlaajuisesti hajautettu tietokanta kustannuksella, joka mahdollistaisi klusterien välisen (eikä vahvan) yhdenmukaisuuden.

Perus XDCR: ää tuetaan kaikissa Couchbase Server -versioissa. XDCR-suodatus, kuristaminen ja aikaleimapohjainen konfliktinratkaisu ovat kaikki Enterprise Edition -ominaisuuksia.

Couchbase-kyselytyökalut

Voit kysyä Couchbase-palvelimelta avaimen avulla hakeaksesi siihen liittyvän arvon, joka voi olla JSON-asiakirja tai Blob. Voit myös kysyä sitä SQL-tyyppisellä N1QL-kielellä tai kokotekstihaulla. Sekä N1QL- että kokotekstikyselyt menevät nopeammin, jos ryhmässä on hakemistoa tukevat hakemistot.

N1QL

N1QL, lausutaan nimellä "nikkeli", näyttää hyvin tavalliselta SQL: ltä, ja siinä on JSON-laajennuksia. Minusta oli paljon helpompaa poimia kuin MongoDB: n yhdistämisputki, koska olen käyttänyt SQL: ää vuosikymmenien ajan.

N1QL: stä on oikeastaan ​​kaksi samanlaista muunnosta: yksi Couchbase Server Query -palvelulle ja toinen Analytics-palvelulle, joka on Enterprise Edition -ominaisuus. Analyticsin N1QL perustuu SQL ++ -sovellukseen.

Jotkut N1QL-laajennuksista ovat KÄYTÄ AVAIMIA, PESÄ, UNNESTja Puuttuva. KÄYTÄ AVAIMIA ja KÄYTÄ HASH ovat kyselyvihjeitä kohteelle LIITTYÄ SEURAANs. PESÄ ja UNNEST pakkaa ja pura taulukot. Puuttuva on JSON-kohtainen vaihtoehto TYHJÄ; EI EIVÄT PUUTU tarkoittaa, että tietty arvo on läsnä tai TYHJÄ asiakirjassa. Avainsana arvoille, jotka ovat EI PUUTU ja EI TYHJÄ On TUNNETTU. N1QL-kyselyt voivat käyttää polkuja, jotka koskevat myös kokotekstihakuja.

Koko tekstihaku

Couchbase tukee ulkoisia kokotekstihakukoneita, kuten Solr, mutta sillä on myös oma Go-pohjainen, kokotekstinen hakukone Bleve. Bleve sisältyy Couchbase Mobileen ja Couchbase Serveriin, ja se tukee suurinta osaa odotettavissa olevista hakusyntakseista.

Couchbase SDK: t

Kaikki Couchbase-pääpalvelut ovat alttiita ohjelmoinnille SDK: n kautta. SDK: t ovat saatavana malleille C / C ++, .Net (C #, F # ja Visual Basic .Net), Go, Java, Node.js, PHP, Python ja Scala.

SDK: iden lisäksi Couchbase tarjoaa tiukan integraation useisiin kehyksiin: Spring Data, .NET LINQ ja Couchbase: n oma Ottoman Node.js ODM. Esimerkiksi seuraava esimerkkikysely käyttää Linq2Couchbasea:

{

Palvelimet = uusi luettelo {uusi Uri ("// paikallinen isäntä: 8091 /")}

});

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

var kysely = (kontekstista. kysely ()

missä a.Country == "Yhdistynyt kuningaskunta"

Valitse).

Ota (10);

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

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobilella on kaksi osaa: Couchbase Lite, joka toimii mobiililaitteella, ja Couchbase Sync Gateway, joka toimii palvelinasolmulla. Couchbase Lite toimii iOS-, Android-, .Net- ja Xamarin-käyttöjärjestelmissä ja tukee Swift-, Objective-C-, Java-, Kotlin- ja C ++ -kieliä.

Esimerkiksi seuraava Java-koodi määrittelee Androidissa suoritettavan kyselyn:

Tietokannan tietokanta = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

.select (SelectResult.expression (Lauseke.ominaisuus ("lentokentän nimi")))

. alkaen (DataSource.database (tietokanta))

.missä(

Lauseke.ominaisuus ("tyyppi"). EquTo (Lauseke.merkkijono ("lentokenttä"))

.ja (Lauseke.ominaisuus ("lentokentän nimi"). kuten (Lauseke.merkkijono (etuliite + "%")))

);

Couchbase-vertailuarvot

Kolmas osapuoli (Altoros) ei ole tehnyt vertailuanalyysiä Couchbase-palvelimelle, mutta on tehnyt niin käyttämällä YCSB JSON- ja avainarvotestejä sekä TPCx-IoT-testiä. Alla oleva kaavio koskee JSON-asiakirjan vertailuarvoa. Kuten näette, Couchbase Server ylitti sekä MongoDB: n että DataStaxin. Voit suorittaa nämä vertailuarvot uudelleen, koska Altoros on toimittanut kaikki tarvittavat komentosarjat.

Altoros

Kaiken kaikkiaan Couchbase Server pinoaa hyvin NoSQL JSON -asiakirjatietokannan, jossa on SQL-tyyppinen kyselykieli ja kokotekstinen hakukone, ja Couchbase Mobile laajentaa arvoesityksen mobiililaitteisiin. Onko Couchbase järkevää sinulle, riippuu sovelluksestasi ja vaatimuksistasi.

Jos tarvitset relaatiotietokannan luotettavan kaavarakenteen tai kaaviotietokannan yhteyssuunnan, Couchbase ei tee mitä haluat. Mutta jos tarvitset maailmanlaajuisesti skaalautuvan asiakirjatietokannan, Couchbase on hyvä valinta.

Kustannus: Couchbase Server Community Edition: Ilmainen. Couchbase Server Enterprise Edition: Vuositilaukset hinnoitellaan solmuittain, ja ne ovat saatavana eri hintapisteissä solmun tarvittavien ytimien ja RAM-muistin mukaan. Kehitys- ja testisolmut ovat ilmaisia. Enterprise Editionin pilviasennukset ovat käytettävissä tuntikohtaisesti. Tyypillinen ohjelmistohinta on $ 0.662 / solmu / tunti AWS: ssä Couchbase Serverille ja $ 1.641 / solmu / tunti Mobile Sync Gatewaylle, vakiomallilla, joka käyttää alun perin neljää palvelinsolmua ja kahta synkronointisolmua. , automaattisella skaalauksella. Hinnoittelu on suunnilleen vertailukelpoista Microsoft Azuressa ja Google Cloud Platformissa. Voit myös tuoda oman lisenssin ja maksaa vain pilviresursseista.

Alusta: Couchbase-palvelin: Linux, Windows Server 2012 R2 ja uudemmat; Kubernetes, OpenShift; AWS, Azure, GCP. Couchbase Server -kehitys ja -testi: MacOS 10.11 ja uudemmat, Windows 10 Anniversary Update ja uudemmat; Satamatyöläinen. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 ja uudemmat, MacOS 10.12.6 ja uudemmat; AWS, Docker, OpenShift.