Programmēšana

Couchbase pārskats: Gudra NoSQL datu bāze

Katram vidējam un lielam uzņēmumam ir nepieciešama datu bāze. Lieliem starptautiskiem uzņēmumiem bieži ir vajadzīgas visā pasaulē izplatītas datubāzes, un, kad viņi izmanto savu datu bāzi finanšu vai krājumu lietošanai, viņiem ir nepieciešama stingra konsekvence. Dažas datubāzes var apmierināt abas vajadzības.

Couchbase Server ir vispirms atmiņā izplatīta, elastīga JSON dokumentu datu bāze, kas vietējā klasterī ir ļoti konsekventa. Couchbase Server atbalsta arī datu pārraides datu centrā ar iespējamu konsekvenci starp kopām.

Couchbase Lite ir iegulta mobilā datu bāze, kas darbojas bezsaistē un tiešsaistē sinhronizējas ar Couchbase Sync Gateway. Sinhronizācijas vārteja tiek sinhronizēta ar Couchbase Server, kā arī ar vairākām Couchbase Lite instancēm.

Couchbase Server var izvietot telpās, mākonī, Kubernetes vai hibrīdās konfigurācijās. Tas nāk gan atvērtā koda, gan uzņēmuma versijās.

Couchbase Server vaicājumu valoda N1QL ir SQL supersetets, kas paredzēts JSON dokumentu datu bāzēm, ar analīzes paplašinājumiem. Couchbase atbalsta arī piekļuvi atslēgas vērtībai datiem un pilnteksta meklēšanu.

Datu bāzes uzņēmums Couchbase pieauga, 2011. gadā apvienojoties Membase (atmiņā kešatmiņā saglabātu kopētu atslēgu vērtību datubāzes veidotājam) un CouchOne (Apache CouchDB dokumentu datu bāzes izstrādātājiem). vērtības slānis, pievienoja JSON dokumentu slāni 2012. gadā un turpināja pievienot mobilo datu bāzi 2014. gadā, SQL līdzīgus vaicājumus 2015. gadā, pilna teksta meklēšanu 2017. gadā un analīzi 2018. gadā.

Couchbase alternatīvas un konkurenti

Couchbase alternatīvas ietver MongoDB, citu elastīgu dokumentu datu bāzi; MongoDB kombinācijā ar Redis kešatmiņā; Oracle Database, augstas klases relāciju datu bāze; un SQL Server, Microsoft relāciju datu bāzes piedāvājums. Relāciju datu bāzu sistēmas tika izstrādātas lietošanai vienos, lielos serveros, un tos ir grūti pielāgot. MongoDB tika izstrādāts, lai veiktu kapteiņa-verga replikāciju, kas nedaudz mērogojas, taču, lai labi mērogotu, tā ir jāsadala. Redis palīdz paātrināt MongoDB, bet ievieš vēl vienu kustīgu daļu, kas var sarežģīt kombinēto sistēmu pārvaldību.

Citas nesenās Couchbase alternatīvas ir CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB un Amazon DynamoDB. Iepriekšējos pārskatos esmu apspriedis gan relāciju, gan NoSQL iespējas.

Couchbase servera arhitektūra

Couchbase Server veic vairākas lomas: datu serviss, indeksu pakalpojums, vaicājumu pakalpojums, drošība, replikācija, meklēšana, notikumi, analīze un pārvaldība. Šos pakalpojumus var palaist vienā vai vairākos mezglos.

Couchbase Server ir veidots, balstoties uz trim pamatprincipiem: uz atmiņu un uz tīklu orientētu arhitektūru, darba slodzes izolāciju un asinhronu pieeju visam.

Raksti tiek piešķirti atmiņai, pēc tam tiek saglabāti diskā un indeksēti asinhroni, nebloķējot lasījumus vai rakstus. Visbiežāk izmantotie dati un rādītāji tiek pārredzami uzturēti atmiņā, lai tos varētu ātri nolasīt. Šī intensīvā atmiņas izmantošana ir noderīga latentumam un caurlaidspējai, lai gan tas palielina Couchbase RAM prasības.

Couchbase Server var mērogot katru savu pakalpojumu neatkarīgi, lai padarītu tos efektīvākus. Vaicājumu pakalpojums var gūt labumu no vairāk CPU resursiem, indeksu pakalpojums var izmantot SSD un datu pakalpojums var izmantot vairāk RAM. Couchbase sauc šo daudzdimensiju mērogošanu (MDS), un tā ir viena no Couchbase Server atšķirīgajām iezīmēm.

Asinhronās darbības palīdz Couchbase Server izvairīties no rakstīšanas, lasīšanas vai vaicājumu bloķēšanas. Vajadzības gadījumā izstrādātājs var līdzsvarot izturību un konsekvenci ar latentumu.

Couchbase JSON datu modelis atbalsta gan pamata, gan sarežģītus datu tipus: skaitļus, virknes, ligzdotus objektus un masīvus. Varat izveidot dokumentus, kas ir normalizēti vai denormalizēti. Couchbase Server neprasa vai pat neatbalsta shēmas. Turpretim MongoDB nav nepieciešamas shēmas, taču tās var atbalstīt un ieviest, ja izstrādātājs izvēlas.

Kā es sīkāk apspriedīšu vēlāk, Couchbase Server dokumentiem varat piekļūt, izmantojot četrus mehānismus: atslēgas vērtība, vaicājumi uz SQL, pilna teksta meklēšana un JavaScript notikumi. Ja jūsu JSON dokumentos ir apakšdokumenti vai masīvi, varat tiem piekļūt tieši, izmantojot ceļa izteiksmes, bez nepieciešamības pārsūtīt un parsēt visu dokumentu. Notikumu modelis var izraisīt datu izmaiņas (OnUpdate) vai taimeri. Turklāt jūs varat piekļūt Couchbase Server dokumentiem, sinhronizējot tos ar Couchbase Mobile.

Couchbase Server ir sakārtots segmentos, vBuckets, mezglos un kopās. Spaiņos glabājas JSON dokumenti. vBuckets būtībā ir lauskas, kas tiek automātiski sadalītas pa mezgliem. Mezgli ir fiziskas vai virtuālas mašīnas, kas mitina atsevišķus Couchbase Server gadījumus. Kopas ir mezglu grupas. Starp klastera mezgliem notiek sinhrona replikācija.

Couchbase Server izvietošanas iespējas

Couchbase Server var instalēt telpās, mākonī un Kubernetes. Couchbase Server Enterprise Edition ir bezmaksas izstrādei un testēšanai, un tas ir pieejams abonējot ražošanai. Atvērtā koda Couchbase Server Community Edition ir bezmaksas visiem mērķiem. Papildus dažām izlaistajām funkcijām Couchbase Server Community Edition ir saderīgs ar API un Couchbase Server Enterprise Edition.

Es izveidoju mākoņa testa brauciena sesiju pakalpojumā Google Cloud Platform, kas (pēc piecu minūšu izvietošanas aizkavēšanās) deva man trīs mezglu Couchbase Server kopu un Sync Gateway mezglu, kas viss ir labs trīs stundas. Man vajadzēja apmēram stundu, lai izietu četras Couchbase apmācības, kas man ļāva justies vaicāt serverim.

Couchbase autonomais operators

Couchbase autonomais operators, kas tiek atbalstīts tikai Enterprise Edition, nodrošina vietējo Couchbase Server integrāciju ar atvērtā koda Kubernetes un Red Hat OpenShift. Operators paplašina Kubernetes API, izveidojot pielāgotu resursu definīciju un reģistrējot sevi kā pielāgotu Couchbase Server kontrolleri, lai pārvaldītu Couchbase Server kopas. Tas samazina to resursu daudzumu, kas nepieciešams Couchbase kopu darbināšanai Kubernetes, un ļauj automatizēt tādu kopēju Couchbase Server uzdevumu pārvaldību kā Couchbase Server kopu konfigurēšana, izveide, mērogošana un atkopšana. Operators darbojas arī ar Azure Kubernetes Service, Amazon Elastic Kubernetes Service un Google Kubernetes Engine.

Pārrobežu datu centra replikācija (XDCR)

Kā jau minēju iepriekš, Couchbase Server veic sinhrono replikāciju, un klastera konsekvence ir spēcīga. Tas veic asinhronu, aktīvu un aktīvu replikāciju starp kopām, datu centriem un pieejamības zonām, lai izvairītos no lielu rakstīšanas kavējumu rašanās. XDCR ļauj Couchbase būt globāli izplatītai datu bāzei par cenu, kas ļautu iespējami (nevis spēcīgi) konsekventi starp kopām.

Pamata XDCR tiek atbalstīts visos Couchbase Server izdevumos. XDCR filtrēšana, ierobežošana un laika zīmoga konfliktu risināšana ir visas Enterprise Edition funkcijas.

Couchbase vaicājumu rīki

Varat vaicāt Couchbase Server, izmantojot atslēgu, lai izgūtu saistīto vērtību, kas var būt JSON dokuments vai Blob. Varat to vaicāt arī ar SQL līdzīgu N1QL valodu vai ar pilna teksta meklēšanu. Gan N1QL, gan pilna teksta vaicājumi notiek ātrāk, ja grupai ir rādītāji, kas atbalsta vaicājumu.

N1QL

N1QL, izteikts kā “niķelis”, izskatās ļoti līdzīgs standarta SQL ar paplašinājumiem JSON. Man šķita, ka to ir daudz vieglāk uzņemt nekā MongoDB apkopošanas cauruļvadu, ņemot vērā to, ka SQL esmu izmantojis gadu desmitiem.

Faktiski ir divi līdzīgi N1QL varianti: viens pakalpojumam Couchbase Server Query un otrs pakalpojumam Analytics, kas ir Enterprise Edition funkcija. Analytics N1QL pamatā ir SQL ++.

Daži no N1QL paplašinājumiem ir LIETOT ATSLĒGAS, LIGZDA, NESTĪGS, un PĀRTRAUKŠANA. LIETOT ATSLĒGAS un IZMANTOJIET HASH ir vaicājuma ieteikumi PIEVIENOTIESs. LIGZDA un NESTĪGS iesaiņojiet un izpakojiet masīvus. PĀRTRAUKŠANA ir JSON specifiska alternatīva NULL; NEPALIEDZ nozīmē, ka ir noteikta vērtība vai NULL dokumentā. Atslēgvārds vērtībām, kas ir NETRĪKST un NAV NULL ir ZINĀTS. N1QL vaicājumos var izmantot ceļus, kas attiecas arī uz pilna teksta meklējumiem.

Pilna teksta meklēšana

Couchbase atbalsta ārējās pilna teksta meklētājprogrammas, piemēram, Solr, taču tai ir arī sava uz Go balstīta, pilna teksta meklētājprogramma Bleve. Bleve ir iekļauts gan Couchbase Mobile, gan Couchbase Server, un tas atbalsta lielāko daļu no gaidāmajām meklēšanas sintaksēm.

Couchbase SDK

Visi galvenie Couchbase pakalpojumi ir pakļauti programmēšanai, izmantojot SDK. SDK ir pieejami C / C ++, .Net (C #, F # un Visual Basic .Net), Go, Java, Node.js, PHP, Python un Scala.

Papildus SDK Couchbase piedāvā ciešu integrāciju ar vairākiem ietvariem: Spring Data, .NET LINQ un Couchbase paša Osmaņu mezglu.js ODM. Piemēram, šāds vaicājuma paraugs izmanto Linq2Couchbase:

{

Serveri = jauns saraksts {new Uri ("// localhost: 8091 /")}

});

var context = jauns BucketContext (ClusterHelper.GetBucket ("ceļojuma paraugs"));

var vaicājums = (no kontekstā. Vaicājums ()

kur a.Country == "Apvienotā Karaliste"

atlasiet a).

Veikt (10);

vaicājums.ToList (). ForEach (Console.WriteLine);

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobile ir divas daļas: Couchbase Lite, kas darbojas mobilajā ierīcē, un Couchbase Sync Gateway, kas darbojas uz servera mezgla. Couchbase Lite darbojas operētājsistēmās iOS, Android, .Net un Xamarin un atbalsta valodas Swift, Objective-C, Java, Kotlin un C ++.

Piemēram, šāds Java kods nosaka vaicājumu, kas jāpilda operētājsistēmā Android:

Datu bāzes datu bāze = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

.select (SelectResult.expression (Expression.property ("lidostas nosaukums")))

. no (DataSource.database (datu bāze))

kur (

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

.un (Expression.property ("airportname"). like (Expression.string (prefikss + "%")))

);

Couchbase etaloni

Lai gan Couchbase Server nav salīdzināts ar etalonu, trešā puse (Altoros) to ir izdarījusi, izmantojot YCSB JSON un atslēgu vērtību testus un TPCx-IoT testu. Zemāk redzamā diagramma attiecas uz JSON dokumentu etalonu. Kā redzat, Couchbase Server pārspēja gan MongoDB, gan DataStax. Jūs varat atkārtoti izpildīt šos etalonus, jo Altoros ir piegādājis visus nepieciešamos skriptus.

Altoros

Kopumā Couchbase Server labi izveido NoSQL JSON dokumentu datu bāzi ar SQL veida vaicājumu valodu un pilna teksta meklētājprogrammu, un Couchbase Mobile paplašina vērtības piedāvājumu mobilajām ierīcēm. Tas, vai Couchbase jums ir jēga, ir atkarīgs no jūsu lietojumprogrammas un prasībām.

Ja jums nepieciešama uzticama relāciju datu bāzes shēmas struktūra vai diagrammu datu bāzes savienojuma orientācija, tad Couchbase nedarīs to, ko vēlaties. Bet, ja jums nepieciešama globāli mērogojama dokumentu datu bāze, tad Couchbase ir laba izvēle.

Izmaksas: Couchbase Server Community Edition: bezmaksas. Couchbase Server Enterprise Edition: Gada abonementu cena tiek noteikta pēc mezgla, un tie ir pieejami dažādos cenu punktos atkarībā no mezgla nepieciešamajiem kodoliem un RAM. Izstrādes un testa mezgli ir bez maksas. Enterprise Edition mākoņa izvietošana ir pieejama pēc stundas, parastās programmatūras cenas ir 0,662 USD / mezgls stundā AWS Couchbase Server un 1,641 USD / mezgls stundā Mobile Sync Gateway ar standarta veidni, kurā sākotnēji izmantoti četri servera mezgli un divi sinhronizācijas mezgli , ar automātisko mērogošanu. Cenas ir aptuveni salīdzināmas Microsoft Azure un Google Cloud Platform. Varat arī paņemt līdzi savu licenci un maksāt tikai par mākoņa resursiem.

Platforma: Couchbase Server: Linux, Windows Server 2012 R2 un jaunākas versijas; Kubernetes, OpenShift; AWS, Azure, GCP. Couchbase Server izstrāde un pārbaude: MacOS 10.11 un jaunākas versijas, Windows 10 Anniversary Update un jaunākas versijas; Dokers. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 un jaunākas versijas, MacOS 10.12.6 un jaunākas versijas; AWS, Docker, OpenShift.

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