Programmēšana

NoSQL izceļamās: labākās dokumentu datubāzes

"Īstais rīks pareizajam darbam." Ja šāda gudrība kaut kur ir taisnība, tā noteikti atbilst izvēlei par datu bāzi, kuru izstrādātājs izvēlas konkrētai lietojumprogrammai. Dokumentu datu bāzes, kas ir viena no datu produktu saimes, ko kopā dēvē par “NoSQL”, ir paredzētas izstrādātājiem, kuri vēlas koncentrēties uz savu pieteikumu nevis datu bāzes tehnoloģija.

Izmantojot dokumentu datu bāzi, dati netiek glabāti tabulās ar atšķirīgiem kolonnu tipiem. Tā vietā tas tiek glabāts brīvas formas “dokumentos” ar jebkuru lauku skaitu un jebkuru ligzdotu struktūru skaitu. Šādi dokumenti parasti tiek attēloti kā JSON un tiek atjaunināti vai nu izmantojot API, vai nosūtot JSON uz REST galapunktu. Katra mūsdienu programmēšanas valoda lielākoties atbalsta JSON un REST, tāpēc, strādājot ar dokumentu datu bāzi, vairāk jūtas kā dabiski strādāt ar šīm datu struktūrām, nevis strādāt ar tradicionālo datu bāzi.

Šim bezjēdzīgajam dizainam, kā to sauc, ir savi ierobežojumi. Izstrādātājam ir jāpaveic vairāk darba, lai nodrošinātu ievietoto datu konsekvenci, jo šādu konsekvenci ne vienmēr garantē pati datu bāze. SQL, kas ir standarta jautājums un plaši saprotama valoda datu bāzes darbībai, vairumā dokumentu datu bāzu neatbalsta, tāpēc tiem, kuriem ir esoša pieredze datu bāzēs, jāsāk no nulles. Bet dokumentu datu bāzes ērtību, ātrumu, mērogojamību un daudzpusību ir grūti pārspēt, rakstot lietojumprogrammu, kurai nepieciešama protean, brīvas formas datu struktūra.

Šeit mēs esam profilējuši septiņas pazīstamākās un visplašāk izmantotās dokumentu datubāzes. Četri no septiņiem - CouchDB, Couchbase Server, MongoDB un RethinkDB - ir atvērtā koda projekti, kuriem ir maz vai nav praktisku šķēršļu iesākumam; Couchbase un MongoDB ir pieejami arī atbalstītos uzņēmuma izdevumos ar komerciālām licencēm. Pārējie trīs - Amazon DynamoDB, Google Firebase un IBM Cloudant - tiek mitināti no lielāko mākoņu pārdevēju pakalpojumiem, kur liela vērība ir cieša integrācija ar citiem pakalpojumiem šajos mākoņos.

Skatiet tabulu zemāk, lai salīdzinātu funkcijas; ritiniet pa labi tabulā, lai redzētu visas kolonnas, izmantojot ritināšanas joslu apakšā. Turpiniet lasīt īsas katras datu bāzes diskusijas.

Atslēga: L= Linux, W= Windows, M= MacOS, S= Solaris, Es= iOS A= Android, O= cits mobilais,

1. Šo funkcionalitāti var nodrošināt trešo pušu rīki. 2. Katrā tabulā. 3. Tikai uzņēmuma izdevums. 4. Skatīt tikai funkcijas. 5. Ir pieejami arī daudzdokumentu darījumi, bet ne sadrupinātās kopās.

 Amazon DynamoDBCosmos DBCouchbaseCouchDBGoogle FirebaseIBM CloudantMarkLogicMongoDBPārdomātDB
PlatformasTikai mākoņainsTikai mākoņainsLWMLWMIAOTikai mākoņainsTikai mākoņainsLWMSLWMSLWM
Vaicājumu sistēmasREST APIMongoDB vadu protokolsMemchached protokols, REST APIREST APIREST / JavaScript APIREST APIREST APIJSON bāzes API, daļēja REST APIReQL vaicājuma valoda, REST API
SQL vaicājumi Nr. 1Izmantojot N1QL valodu Nr. 1
Spēcīga rakstīšanaXML shēmām
Vietējais pievienojas
Dalīšanas sadalīšanaNAJā2
Kopu veidošana NA NA NA
Replikācija NA Katrā tabulā
Konsekvence: tūlītējaPar izlasītoPar kopējoSavienoti klientiPar rakstītPar katru dokumentu
Konsekvence: galu galāBezsaistes klientiVisa datu bāze
Vienlaicīgums
Operācijas atmiņā NA NA NA NA
Saglabātās procedūrasJavaScriptJavaScript4JavaScript4NoteikumiJavaScript4XQuery modulisJavaScript
DarījumiPēc lietotnesVienoti dokumentiVienoti dokumentiVienoti dokumentiVienoti dokumentiVienoti dokumentiVienoti dokumenti
Pašreizējā versijaNANA5.0 (2017. gada oktobris)2.1.1 (2017. gada novembris)NANA9.0 (2016. gada maijs)3.4.10 (2017. gada oktobris)2.3.6 (2017. gada jūlijs)
Sākotnējā izlaišana201220172011200520122010200520092009

Amazon DynamoDB

Amazon DynamoDB dokumentu veikals sāka savu dzīvi 2012. gadā kā Amazon SimpleDB paplašinājums. Zem pārsega to darbina galveno preču veikals Dynamo. DynamoDB līdzstrādātājs vēlāk izmantos daudzas tās pašas idejas, lai izveidotu Apache Cassandra.

DynamoDB funkcijas

Tāpat kā lielākā daļa citu Amazon mākoņu piedāvājumu, arī DynamoDB ir maksas pārvaldīts pakalpojums. Izstrādātāji nosaka, cik lielu krātuves jaudu nodrošina nestrukturētu dokumentu vai atslēgu un vērtību pāru glabāšanai, un izvēlējās vienotas stundas likmes ierobežojumu lasīšanas un rakstīšanas pieprasījumiem datu bāzē. Nav nepieciešams nodrošināt serverus vai konfigurēt replikāciju - Amazon visu pārvalda zem segas un nesen sajaukumam pievienoja automātisko mērogošanu.

Protams, DynamoDB piedāvā izstrādātājiem noderīgas integrācijas ar citiem pakalpojumiem Amazon mākonī. Aktivizētājus, piemēram, var iestatīt, izmantojot AWS Lambda funkcijas. Netālu atrodas arī Amazon BI un analīzes rīki. Šo pakalpojumu tuvums ir ērts, taču tas arī nozīmē, ka Amazon var pārdot funkcionalitāti dažādos veidos. Kešatmiņa un paātrinājums a la Redis, piemēram, ir pieejami, izmantojot DynamoDB Accelerator, kas ir papildu izmaksas.

DynamoDB Local

Jūs neatradīsit DynamoDB atklātā pirmkoda iemiesojumā. Tas ir pieejams tikai kā mitināts piedāvājums Amazon mākonī.

Tas nozīmē, ka atšķirībā no daudzām citām mākoņa vietējām datubāzēm DynamoDB ir pieejams arī versijā, kuru var lejupielādēt un palaist lokāli. Bet DynamoDB Local nav paredzēts izmantošanai ražošanā, bet gan kā veids, kā iestudēt lietojumprogrammu testa vidē, neprasot savienojumu vai neizpildot Amazon rēķinu.

Microsoft Azure Cosmos DB

Cosmos DB ir vērienīgs projekts - datu bāzes sistēma, kas ietver vairākus modeļus datu glabāšanai un izgūšanai. Cosmos DB var kalpot kā dokumentu datu bāze, kolonnu datu bāze, diagrammu datu bāze vai atslēgu vērtību krātuve, ļaujot lietotājam izvēlēties sev piemēroto paradigmu un izmantot dažādas API darbam ar šīm paradigmām.

Cosmos DB funkcijas

Tā vietā, lai izgudrotu pilnīgi jaunu API dokumentu datu bāzes sistēmai, Cosmos DB nodrošina API, kas ir saderīga ar populāro MongoDB (aplūkots turpmāk). Starp priekšrocībām ir tas, ka esošais kods, kurā tiek izmantotas MongoDB saskarnes bibliotēkas vai MongoDB binārā stieples protokols, var darboties tā, kā tas ir. Tas nozīmē, ka Cosmos DB spēj nodrošināt pakalpojumu MongoDB kā pakalpojumu. Tāpat Cosmos DB atbalsta Kasandras, populārās kolonnu ģimenes datu bāzes, API.

Korporācija Microsoft izvirza vairākas Cosmos DB priekšrocības, kas ne vienmēr attiecas tikai uz tās dokumentu datu bāzes funkcionalitāti, bet ir paredzētas, lai pievilinātu šīs būvdokumentu datu bāzes lietojumprogrammas. Viens no šādiem piedāvājumiem ir noskaņojami konsekvences līmeņi. Ja jums ir dažas dokumentu transakciju klases, kurām nepieciešama lielāka konsekvence visos Azure reģionos nekā citās, varat tās manuāli norādīt, pamatojoties uz katru darījumu.

Citas funkcijas ir specifiskākas dokumentu datu bāzēm. Piemēram, MongoDB lietotājiem dokumentu kolekcijās ir jāizveido rādītāji, lai optimizētu meklēšanu. Cosmos DB lietotājiem, kuri strādā ar MongoDB API, nav jāiestata dokumentu indeksēšana, jo katrs ievietotā dokumentētā rekvizīts tiek automātiski indeksēts.

Cosmos DB izmantošana Microsoft Azure

Nav vietēji mitinātas Cosmos DB versijas. Tas ir pieejams tikai kā pakalpojums Microsoft Azure mākonī. Tas nozīmē, ka Cosmos DB izstrādes API ir pieejamas lielākajai daļai visu populāro uzņēmuma valodu - Java, Node.js, .NET un Python.

Couchbase serveris

Couchbase ir ne tik daudz CouchDB brālis, cik pēctecis. Couchbase tika veidots uz paveikto darbu CouchDB un Membase, taču tas nav saistīts ne ar vienu no šiem projektiem. Tā ir dokumentu datu bāze un sadalīts atslēgu vērtību krājums, kas apvienots vienā, ar papildu funkcijām, piemēram, automatizētu kļūmjpārleci un starpdatu centru replikāciju, kas paredzēta uzņēmuma lietošanai.

Couchbase funkcijas

Viena iezīme, kas atšķir Couchbase, ne tikai no citas NoSQL konkurences, bet arī no tās priekšgājēja CouchDB, ir SQL veida vaicājumu valoda ar nosaukumu N1QL (izrunā “niķelis”). N1QL nepiedāvā pilnu komandu klāstu, ko varētu sagaidīt no ANSI SQL ieviešanas, taču tas nodrošina pietiekami daudz noderīgu funkciju, piemēram, JOIN operācijas, lai kāds, kuram ir SQL pieredze, iegūtu efektīvus rezultātus.

Couchbase vaicājumu sistēma ir paredzēta ne tikai izstrādātājiem, bet arī DBA un biznesa analītiķiem, kuri parasti nodarbojas ar parastajām datu bāzēm. Šķiet, ka tādas funkcijas kā atslēgvārds PASKAIDROJUMS ir īpaši izmantotas, lai pievilinātu šo pūli.

Kā dokumentu kombinācijas datu bāze un atslēgu vērtību krātuve Couchbase glabā dokumentus, kā atslēgu izmantojot to unikālos identifikatorus. Dokumentiem var arī piešķirt vērtības, kas jādzīvo, lai tie darbotos kā atslēgas vērtības kešatmiņa. Tas nozīmē, ka patiesa atslēgas vērtības kešatmiņas sistēma, piemēram, Redis, būs daudz ātrāka, lai saglabātu atslēgas vērtību, taču Couchbase ir elastīgāka, un Redis un Couchbase var efektīvi apvienot, lai paātrinātu lietas. Šajā piezīmē Couchbase ir vietējais Memcached protokola atbalsts, tāpēc esošās lietojumprogrammas, kas izmanto Memcached, var aizstāt Couchbase.

Couchbase kopiena pret uzņēmumu

Couchbase Server tiek piegādāts par pilnu par maksu uzņēmuma izdevumā, par brīvu izmantojamu kopienas izdevumu un atvērtā koda izdevumu, kas ir pamats citiem. Uzņēmuma un kopienas izdevuma binārās lejupielādes ir pieejamas Couchbase vietnē, un avota kods ir pieejams Couchbase izstrādātāja vietnē. (Couchbase atvērtā pirmkoda projektam nav nevienas GitHub repozitorija, jo tas ir vairāku projektu kopums.)

Sabiedrības izdevumu var izvietot ražošanā, taču tam nav uzlabotu uzņēmumu izdevuma funkciju, kā arī atbalsta, tāpēc piesargāties nepircēji. Dažas Couchbase funkcijas, piemēram, tās horizontālās mērogošanas funkcionalitāte, ir iekļuvušas CouchDB projektā, taču tas drīzāk ir izņēmums nekā likums.

Couchbase Lite

Vēl viens Couchbase izdevums, kas ir vērts pievērst uzmanību lietotņu izstrādātājiem, ir Couchbase Lite, iegulta Couchbase versija, kas var sinhronizēt ar pilnas versijas gadījumiem. Couchbase Lite ir galvenā sastāvdaļa Couchbase Mobile, lietojumprogrammu kaudze mobilajām lietotnēm, kurām nepieciešams datu krājums, kas automātiski sinhronizējas ar aizmuguri. Couchbase Mobile ir pieejams operētājsistēmām iOS, Android, Java. .Net, MacOS un tvOS.

CouchDB

CouchDB projektu 2005. gadā uzsāka bijušais IBM izstrādātājs, un 2008. gadā tas pārcēlās uz Apache programmatūras fondu. Dažreiz tiek pieņemts, ka CouchDB ir Couchbase pamats, bet CouchDB un Couchbase ir paralēli projekti ar dažādiem mērķiem.

CouchDB pret Couchbase

Tā kā Couchbase ir gan dokumentu datu bāze, gan atslēgu vērtību glabātava, CouchDB ir stingri dokumentu datu bāze. Un, lai gan Couchbase jau sen ir koncentrējies uz uzņēmuma funkcijām, piemēram, kļūdu toleranci un SQL līdzīgu vaicājumu valodu, šādas sīkumiņas tikai sāk nonākt CouchDB.

CouchDB funkcijas

CouchDB uzsver izvietošanas vienkāršību un ērtu lietošanu. Datu izgūšana no datu bāzes ir tikpat vienkārša kā JSON formāta vaicājumu nosūtīšana uz REST HTTPS galapunktu, un rezultāti tiek atgriezti JSON. Lielākoties katra mūsdienu programmēšanas valoda var veikt šīs darbības, kā arī veikt kartēšanu un samazināšanu, kas nepieciešama, lai izveidotu skatus aiz CouchDB vaicājumiem un pārskatiem. Nav nepieciešams ODBC draiveris vai datu savienotājs.

Viena no CouchDB īpašajām mērcēm ir datu saskaņošanas tehnoloģija. Izmaiņas, kas veiktas vienā CouchDB vienaudžā, tiek automātiski saskaņotas ar citiem, līdzīgi kā versiju kontroles sistēmā. Visi konflikti starp dokumenta versijām tiek saglabāti tā, it kā tie būtu iepriekšējie šī dokumenta labojumi.

Šis galu galā konsekventais modelis ir noderīgs datubāzēm, kas nav vienmēr vai konsekventi savienotas (piemēram, ar pārtraukumiem savienotām mobilajām lietojumprogrammām), vai gadījumos, kad jums nav nepieciešama jaunākā un lielākā datu versija noteiktā mezglā. Bet iespējamā konsekvence ir arī viena no lielākajām CouchDB atrunām. Ja jūs darīt nepieciešama tūlītēja konsekvence, CouchDB nav īstā vieta, kur to atrast.

Mērogojamība CouchDB jau sen ir bijusi vāja vieta, taču nesen tā ir risināta. Versija 2.0 tika aktivizēta jaunā klasterizācijas tehnoloģijā, pateicoties bitiem, kas atvērti Cloudant / IBM un tika apvienoti projektā. Visbeidzot, tiem, kas pārzina MongoDB un vēlas izmantot līdzīgu deklaratīvo vaicājumu sintaksi, Mango projekts, arī no Cloudant / IBM, to paredz kā ārēju papildinājumu.

CouchDB lejupielāde

CouchDB bināros failus visām galvenajām platformām un pirmkodu var lejupielādēt no oficiālās CouchDB vietnes. Projekta avots ir pieejams arī vietnē GitHub.

Google Firebase reāllaika datu bāze

Jūs varētu domāt par Google Firebase kā Google atbildi uz DynamoDB - veidu, kā nodrošināt ātru datu sinhronizāciju starp mākoņa aizmuguri un vietējām lietotnēm vairākās platformās.

Firebase reāllaika datu bāze ir tikai viens Firebase kaudzes komponents, kas paredzēts lietotņu izveidei, kas ir ļoti saistīta ar auditorijas iesaisti un ieskatu. Viss kaudze ietver tādas funkcijas kā autentifikācija, veiktspējas uzraudzība, lietotāju analīze un daudzas citas, taču šeit mēs koncentrējamies uz pašu Firebase.

Google Firebase funkcijas

Uzņēmums Google iegādājās Firebase 2014. gadā. Kopš tā laika tas ir izveidojis vadu Firebase, lai izmantotu daudzas Google Cloud funkcijas. Piemēram, Google mākoņa funkcijas Firebase ļauj aktivizēt JavaScript funkcijas mākonī, reaģējot uz Firebase notikumiem. Izmantojot Google Analytics platformai Firebase, varat dziļākai analīzei piesaistīt mobilo lietotņu datus pakalpojumā BigQuery.

Tā kā spēles ir viena no Firebase mērķa lietojumprogrammām, Firebase paredzētajos SDK ir iekļauta starpplatformu spēļu izstrādes sistēma Unity. Izstrādātājiem, kas strādā pie parastākiem uz uzņēmumu orientētiem vai patērētājiem domātiem projektiem, ir daudz citu iespēju: vietējā iOS un Android, C ++, vispārīgā tīmekļa / JavaScript un jebkura cita valoda, kas atbalsta REST (Java, Python, jūs to nosaucat).

Firebase ir paredzēts darbam scenārijos, kur savienojamība netiek garantēta. Tāpat kā CouchDB, tā kešatmiņas mainās lokāli, kad ir bezsaistē, un, atgriežoties savienojamībai, tā automātiski tiek sinhronizēta. Ņemiet vērā, ka Firebase nav paredzēts izmantot kā atsevišķu, pilnībā bezsaistes risinājumu; piemēram, operētājsistēmā Android vietējās datu bāzes ir ierobežotas līdz 10 MB krātuvē.

Firebase pakalpojumos Google Cloud un GitHub

Firebase nav pieejams kā atsevišķs produkts, bet ir pieejams tikai kā daļa no Google mākoņproduktu piedāvājuma. Firebase GitHub krātuvē ir SDK un dažādu platformas rīku avota kods.

IBM Cloudant

Cloudant būtībā ir IBM mitinātais CouchDB izdevums. Sākotnēji Cloudant bija neatkarīgs uzņēmums, kas piedāvāja CouchDB izdevumu ar nosaukumu “BigCouch”, kas tika mitināts IBM programmatūrā SoftLayer. 2014. gadā IBM ieguva Cloudant tieši kā daļu no IBM kopējā virzības uz analīzi un lielajiem datiem.

Mākoņains pret CouchDB

Cloudant ir domāts vairāk nekā mitināta CouchDB versija. Cloudant nodrošina tādas funkcijas, kas nav viegli pieejamas pašā CouchDB, piemēram, dabiski integrētu pilna teksta meklēšanu. Pilna teksta meklēšanai CouchDB parasti nepieciešama integrācija ar ārējiem projektiem. Datus var atkārtot abos virzienos starp Cloudant un CouchDB gadījumu, tāpēc ir samērā viegli pārvietoties starp vienu no tiem pēc nepieciešamības.

Daži no Cloudant CouchDB uzlabojumiem ir atgriezušies pamatā esošajā CouchDB projektā, tostarp CouchDB 2.0 horizontālās mērogošanas funkcionalitāte un Mango vaicājuma valodas saskarne. Bet neuztveriet to kā pierādījumu tam, ka Cloudant funkcijas automātiski nokļūs līdz CouchDB.

Mākoņains uz IBM Cloud

Cloudant galvenokārt ir mākoņa piedāvājums pakalpojumā IBM Cloud, kur to var izmantot kopā ar citiem IBM Cloud datu produktiem, piemēram, dashDB, DataWorks un Watson Analytics.

Mākoņains vietējais

Cloudant ugunsmūra izdevums, ko sauc par Cloudant Local, piedāvā visu to pašu funkcionalitāti, ko piedāvā mākoņa mitinātais piedāvājums. Cloudant Local ir pieejams x86 Linux Ubuntu un Red Hat garšās, kā arī IBM paša System z, kurā darbojas Red Hat vai Suse. Izstrādātāji var lejupielādēt bezmaksas, tikai testēšanai un izstrādei paredzētu versiju Docker attēlā.

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