Programiranje

NoSQL izstopa: Najboljše zbirke dokumentov

"Pravo orodje za pravo službo." Če takšna modrost velja kjekoli, zagotovo drži pri izbiri baze podatkov, ki jo razvijalec izbere za določeno aplikacijo. Podatkovne zbirke dokumentov, ena iz družine podatkovnih izdelkov, skupaj imenovane »NoSQL«, so namenjene razvijalcem, ki se želijo osredotočiti na svoje aplikacijo namesto tehnologija baz podatkov.

Z bazo podatkov dokumentov podatki niso shranjeni v tabelah z različnimi vrstami stolpcev. Namesto tega je shranjen v "dokumentih" proste oblike s poljubnim številom polj in poljubnim številom ugnezdenih struktur. Takšni dokumenti so običajno predstavljeni kot JSON in se posodabljajo prek API-jev ali s pošiljanjem JSON-a na končno točko REST. Večina vsakega sodobnega programskega jezika podpira JSON in REST, zato je delo z bazo podatkov dokumentov bolj podobno naravnemu delu s temi podatkovnimi strukturami kot pa delo s tradicionalno bazo podatkov.

Ta shema brez sheme, kot jo imenujejo, ima svoje omejitve. Razvijalec mora narediti več dela, da zagotovi, da so vstavljeni podatki dosledni, saj takšna skladnost ne zagotavlja vedno sama baza podatkov. Večina baz dokumentov ne podpira SQL, standardne izdaje in splošno razumljivega jezika za delo z bazami podatkov, zato morajo tiste z obstoječim znanjem o bazah podatkov začeti od začetka. Toda pri pisanju aplikacije, ki potrebuje protejsko strukturo podatkov v prosti obliki, je težko premagati priročnost, hitrost, razširljivost in vsestranskost zbirke dokumentov.

Tukaj smo predstavili sedem najbolj znanih in najpogosteje uporabljenih zbirk dokumentov. Štirje od sedmih - CouchDB, Couchbase Server, MongoDB in RethinkDB - so odprtokodni projekti z malo ali nič praktičnih ovir za začetek; Couchbase in MongoDB sta na voljo tudi v podprtih izdajah za podjetja s komercialnimi licencami. Preostali trije - Amazon DynamoDB, Google Firebase in IBM Cloudant - gostijo storitve večjih ponudnikov oblakov, pri čemer je tesna integracija z drugimi storitvami v teh oblakih velika prednost.

Za primerjavo funkcij glejte spodnjo tabelo; pomaknite se desno po tabeli, da si ogledate vse stolpce z drsnikom na dnu. Preberite kratke razprave o vsaki bazi podatkov.

Ključ: L= Linux, W= Windows, M= MacOS, S= Solaris, jaz= iOS, A= Android, O= drugi mobilni,

1. Orodja tretjih oseb lahko nudijo to funkcionalnost. 2. Na mizo. 3. Samo izdaja za podjetja. 4. Ogled samo funkcij. 5. Na voljo so tudi transakcije z več dokumenti, vendar ne na ostrenih grozdih.

 Amazon DynamoDBCosmos DBKavčCouchDBGoogle FirebaseIBM CloudantMarkLogicMongoDBPonovno premislite DB
PlatformeSamo v oblakuSamo v oblakuLWMLWMIAOSamo v oblakuSamo v oblakuLWMSLWMSLWM
Sistemi poizvedbAPI RESTMongoDB žični protokolMemcached protokol, REST APIAPI RESTAPI REST / JavaScriptAPI RESTAPI RESTAPI na osnovi JSON, delni API RESTJezik poizvedbe ReQL, REST API
SQL poizvedovanje Št. 1DaPrek jezika N1QL Ne Ne Ne Da Št. 1 Ne
Močno tipkanjeDaDaDa Ne Da Ne Za sheme XMLDaDa
Native pridruži Ne DaDa Ne Ne Ne DaDaDa
Ostrenje particijeDaDaDaDaNADaDaDaDa2
Grozdenje NA DaDaDa NA NA DaDaDa
ReplikacijaDaDaDaDa NA DaDaDaNa mizo
Doslednost: TakojšnjaNa branjeDaNa splošno Ne Povezane stranke Ne DaNa pisanjeNa dokument
Doslednost: morebitnaDaDaDaDaOdjemalci brez povezaveDaDaDaCelotna baza podatkov
SočasnostDaDaDaDaDaDaDaDaDa
Operacije v pomnilniku NA NA Ne Ne NA Ne NA Da3 Ne
Shranjeni postopki Ne JavaScriptJavaScript4JavaScript4PravilaJavaScript4Modul XQueryJavaScript Ne
TransakcijePo aplikacijiDaPosamezni dokumentiPosamezni dokumentiDaPosamezni dokumentiPosamezni dokumentiPosamezni dokumenti5Posamezni dokumenti
Trenutna verzijaNANA5.0 (oktober 2017)2.1.1 (november 2017)NANA9,0 (maj 2016)3.4.10 (oktober 2017)2.3.6 (julij 2017)
Začetna izdaja201220172011200520122010200520092009

Amazon DynamoDB

Amazonova trgovina z dokumenti DynamoDB je začela delovati leta 2012 kot podaljšek Amazonove SimpleDB. Pod pokrovom ga poganja trgovina s ključnimi vrednostmi, Dynamo. Soustvarjalec DynamoDB se je pozneje oprl na številne iste ideje za ustvarjanje Apache Cassandre.

Funkcije DynamoDB

Kot večina drugih Amazonovih ponudb v oblaku je tudi DynamoDB upravljana storitev, ki jo plačate, kolikor želite. Razvijalci določijo, koliko prostora za shranjevanje naj bodo nestrukturirani dokumenti ali pari ključ / vrednost, in izberejo pavšalno omejitev urne postavke za zahteve za branje in pisanje v bazo podatkov. Ni potrebe po zagotavljanju strežnikov ali konfiguriranju podvajanja - Amazon vse to obravnava pod platnicami in je nedavno mešanici dodal samodejno spreminjanje skale.

Seveda DynamoDB razvijalcem ponuja koristne integracije z drugimi storitvami v oblaku Amazon. Sprožilce lahko na primer nastavite s pomočjo funkcij AWS Lambda. V bližini so tudi Amazonova BI in orodja za analizo. Bližina teh storitev je priročna, vendar to pomeni tudi, da lahko Amazon nadgradi funkcionalnost na več načinov. Predpomnjenje in pospeševanje a la Redis je na primer na voljo s pomočjo pospeševalnika DynamoDB, dodatka, ki stane več.

Lokalni DynamoDB

DynamoDB ne boste našli v odprtokodni inkarnaciji. Na voljo je izključno kot gostujoča ponudba na Amazonovem oblaku.

Kljub temu je DynamoDB v nasprotju s številnimi drugimi bazami podatkov v oblaku na voljo tudi v različici, ki jo lahko prenesete in zaženete lokalno. Toda DynamoDB Local ni namenjen za produkcijsko uporabo, temveč kot način za postavitev aplikacije v testno okolje, ne da bi bilo treba povezovati ali porabljati račun za Amazon.

Microsoft Azure Cosmos DB

Cosmos DB je ambiciozen projekt, sistem baz podatkov, ki zajema več modelov za shranjevanje in pridobivanje podatkov. Cosmos DB lahko služi kot zbirka dokumentov, stolpčna baza podatkov, baza podatkov grafov ali shramba ključ-vrednost, kar uporabniku omogoča, da izbere paradigmo, ki mu ustreza, in uporabi različne API-je za delo s temi paradigmami.

Funkcije Cosmos DB

Namesto da bi izumil povsem nov API za sistem zbirke dokumentov, Cosmos DB ponuja API, združljiv s priljubljenim MongoDB (o katerem bomo razpravljali spodaj). Med prednostmi je, da lahko obstoječa koda, ki uporablja knjižnice vmesnikov MongoDB ali binarni žični protokol MongoDB, deluje takšna, kot je. To pomeni, da lahko Cosmos DB MongoDB nudi kot storitev. Podobno Cosmos DB podpira API Cassandre, priljubljene baze podatkov o družinah stolpcev.

Microsoft na Cosmos DB opozarja na številne prednosti, ki niso nujno izključno za njegovo funkcionalnost zbirke dokumentov, ampak naj bi bile privlačne za tiste aplikacije zbirke podatkov gradbenih dokumentov. Ena takšnih ponudb so nastavljive stopnje skladnosti. Če imate nekatere razrede transakcij z dokumenti, ki zahtevajo večjo doslednost v regijah Azure kot druge, jih lahko ročno določite za posamezno transakcijo.

Druge značilnosti so bolj specifične za zbirke podatkov dokumentov. Uporabniki MongoDB morajo na primer v zbirkah dokumentov nastaviti indekse, da optimizirajo iskanje. Uporabnikom Cosmos DB, ki delajo z API-ji MongoDB, ni treba nastaviti indeksiranja za dokumente, saj se vsaka lastnost v vstavljenem dokumentiranem samodejno indeksira.

Uporaba Cosmos DB v Microsoft Azure

Domače različice Cosmos DB ni. Na voljo je samo kot storitev v oblaku Microsoft Azure. Kljub temu so razvojni API-ji za Cosmos DB na voljo za večino vseh priljubljenih jezikov podjetja - Java, Node.js, .NET in Python.

Couchbase strežnik

Couchbase ni toliko sorodnik CouchDB kot njegov naslednik. Couchbase je bil zasnovan na delu, opravljenem v CouchDB in Membase, vendar ni povezan z nobenim od teh projektov. Gre za zbirko podatkov dokumentov in distribuirano shrambo ključ-vrednost, ki je združena v eno, z naprednimi funkcijami, kot sta avtomatizirano kopiranje in kopiranje navzkrižnega podatkovnega centra, namenjena primerom uporabe v podjetju.

Funkcije Couchbase

Ena od značilnosti, ki Couchbase ločuje ne le od konkurence NoSQL, temveč od njegovega predhodnika CouchDB, je poizvedbeni jezik, podoben SQL, imenovan N1QL (izgovarja se "nickel"). N1QL ne ponuja celotnega obsega ukazov, ki bi jih pričakovali od izvedbe ANSI SQL, vendar ponuja dovolj uporabnih funkcij, kot so JOIN operacije, da lahko nekdo z izkušnjami s SQL doseže uporabne rezultate.

Sistem poizvedb Couchbase ni namenjen samo razvijalcem, temveč tudi skrbnikom podatkovnih baz in poslovnim analitikom, ki se običajno ukvarjajo z običajnimi zbirkami podatkov. Zdi se, da so funkcije, kot je ključna beseda EXPLAIN, vgrajene posebej zato, da bi pritegnile to množico.

Kot kombinacija zbirke podatkov dokumentov in shrambe ključ-vrednost Couchbase shranjuje dokumente z uporabo njihovih enoličnih identifikatorjev kot ključa. Dokumenti lahko tudi dodelijo vrednosti časa za življenje, da delujejo kot predpomnilnik ključ-vrednost. Kljub temu bo resnični sistem predpomnjenja ključev, kot je Redis, veliko hitrejši za osnovno shranjevanje ključev in vrednosti, vendar je Couchbase bolj prilagodljiv in Redis in Couchbase je mogoče učinkovito kombinirati za pospešitev stvari. V tej opombi ima Couchbase vgrajeno podporo za protokol Memcached, zato se obstoječe aplikacije, ki uporabljajo Memcached, lahko kot nadomestek vključijo v Couchbase.

Skupnost Couchbase v primerjavi s podjetjem

Couchbase Server je na voljo v popolni podjetniški izdaji, brezplačni izdaji za skupnost in odprtokodni izdaji, ki je osnova za ostale. Binarni prenosi za izdajo za podjetja in skupnosti so na voljo na spletnem mestu Couchbase, izvorna koda pa na spletnem mestu razvijalcev Couchbase. (Za odprtokodni projekt Couchbase ni nobenega skladišča GitHub, saj gre za združevanje več projektov.)

Izdajo skupnosti je mogoče uporabiti v proizvodnji, vendar nima naprednejših funkcij za podjetja in podpore, zato bodite pozorni na kupce. Nekatere funkcije Couchbase, na primer funkcionalnost vodoravnega skaliranja, so se znašle v projektu CouchDB, vendar je to bolj izjema kot pravilo.

Couchbase Lite

Druga izdaja Couchbase, vredna pozornosti za razvijalce aplikacij, je Couchbase Lite, vdelana različica Couchbase, ki se lahko sinhronizira s primerki popolne izdaje. Couchbase Lite je ključna komponenta v Couchbase Mobile, svežnju aplikacij za mobilne aplikacije, ki potrebujejo shrambo podatkov, ki se samodejno sinhronizira z zaledjem. Couchbase Mobile je na voljo za iOS, Android in Java. .Net, MacOS in tvOS.

CouchDB

Projekt CouchDB je leta 2005 začel nekdanji razvijalec IBM-a, leta 2008 pa se je preselil v fundacijo Apache Software Foundation. Včasih se domneva, da je CouchDB osnova za Couchbase, vendar sta CouchDB in Couchbase vzporedna projekta z različnimi cilji.

CouchDB proti Couchbase

Medtem ko je Couchbase hkrati baza podatkov in shramba ključ-vrednost, je CouchDB strogo baza podatkov. In medtem ko se Couchbase že dolgo osredotoča na funkcije podjetja, kot so odpornost na napake in jezik poizvedb, podoben SQL-u, takšne lepote šele prihajajo v CouchDB.

Funkcije CouchDB

CouchDB poudarja preprostost uporabe in enostavnost uporabe. Pridobivanje podatkov iz baze podatkov je tako preprosto kot pošiljanje poizvedb v obliki JSON do končne točke REST HTTPS, rezultati pa se vrnejo v JSON. Te stvari lahko počne večina vsakega sodobnega programskega jezika ter izvede tudi preslikavo in zmanjšanje, ki je potrebno za ustvarjanje pogledov za poizvedbe in poročila CouchDB. Gonilnik ODBC ali podatkovni konektor ni potreben.

Ena izmed posebnih omak CouchDB je tehnologija usklajevanja podatkov. Spremembe ene vrste CouchDB se samodejno uskladijo z drugimi na način, podoben sistemu za nadzor različic. Vsa navzkrižja med različicami dokumentov se ohranijo, kot da bi bila prejšnja revizija tega dokumenta.

Ta sčasoma skladen model je uporaben za podatkovne zbirke, ki niso vedno ali dosledno povezane (na primer za občasno povezane mobilne aplikacije) ali v primerih, ko v določenem vozlišču ne potrebujete najnovejše in največje različice podatkov. Toda morebitna doslednost je tudi eno največjih opozoril CouchDB. Če ti naredi potrebujete takojšnjo doslednost, CouchDB ni kraj, kjer ga lahko najdete.

Razširljivost je za CouchDB že dolgo šibka točka, vendar je bila nedavno obravnavana. Različica 2.0 se je vmešala v novo tehnologijo združevanja, zahvaljujoč bitom, ki sta jih odprla Cloudant / IBM in se združila v projekt. Nazadnje, za tiste, ki poznajo MongoDB in želijo uporabiti podobno sintakso deklarativne poizvedbe, projekt Mango, prav tako iz podjetja Cloudant / IBM, to zagotavlja kot zunanji dodatek.

Prenos CouchDB

Binarne datoteke CouchDB za vse večje platforme in izvorno kodo lahko prenesete z uradne strani CouchDB. Vir projekta je na voljo tudi na GitHubu.

Google Firebase baza podatkov v realnem času

Google Firebase si morda predstavljate kot Googlov odgovor na DynamoDB - način, ki omogoča hitro sinhronizacijo shranjevanja podatkov med zalednim oblakom in lokalnimi aplikacijami na več platformah.

Podatkovna baza Firebase v realnem času je le ena komponenta v zbirki Firebase, namenjena ustvarjanju aplikacij, ki močno vplivajo na udejstvovanje in vpogled v občinstvo. Celoten sklop vključuje funkcije, kot so preverjanje pristnosti, spremljanje delovanja, uporabniška analitika in številne druge, vendar se tu osredotočamo na sam Firebase.

Funkcije Google Firebase

Google je Firebase kupil leta 2014. V teh letih je Firebase povezal, da je izkoristil številne funkcije Google Cloud. Google Cloud Functions for Firebase vam na primer omogoča, da sprožite funkcije JavaScript v oblaku kot odziv na dogodke Firebase. Google Analytics za Firebase vam omogoča, da podatke aplikacije za mobilne naprave vnesete v BigQuery za globlje analize.

Ker je igranje iger ena izmed ciljnih aplikacij Firebase, SDK-ji, ki jih ponuja Firebase, vključujejo okvir za razvoj iger za platforme Unity. Razvijalci, ki delajo na bolj običajnih projektih, usmerjenih v podjetja ali potrošnikom, imajo na voljo veliko drugih možnosti: domači iOS in Android, C ++, generični splet / JavaScript in kateri koli drug jezik, ki podpira REST (Java, Python, če želite).

Firebase je zasnovan za delovanje v primerih, ko povezljivost ni zagotovljena. Tako kot CouchDB tudi lokalno shrani spremembe, ko je brez povezave, in se samodejno sinhronizira s hrbtnim koncem, ko se poveže povezava. Upoštevajte, da Firebase ni zasnovan za uporabo kot samostojno rešitev v celoti brez povezave; v Androidu so na primer lokalne baze podatkov omejene na 10 MB prostora za shranjevanje.

Firebase v storitvah Google Cloud in GitHub

Firebase ni na voljo kot samostojni izdelek, ampak je na voljo le kot del ponudbe Googlovih izdelkov v oblaku. Repozitorij Firebase GitHub ima izvorno kodo za SDK-je in različna orodja, specifična za platformo.

IBM Cloudant

Cloudant je v bistvu IBM-ova izdaja CouchDB, ki jo gosti. Prvotno je bil Cloudant neodvisno podjetje, ki je ponudilo izdajo CouchDB z imenom "BigCouch", ki je gostovala v IBM-ovem oblaku SoftLayer. Leta 2014 je IBM dokončno pridobil Cloudant kot del celotnega IBM-ovega prizadevanja za analitiko in velike podatke.

Cloudant proti CouchDB

Cloudant naj bi bil več kot le gostovana različica CouchDB. Cloudant ponuja funkcije, ki niso na voljo v samem CouchDB, na primer integrirano iskanje po celotnem besedilu. Iskanje celotnega besedila v CouchDB običajno zahteva integracijo z zunanjimi projekti. Podatke je mogoče kopirati v obe smeri med Cloudantom in primerkom CouchDB, zato je po potrebi razmeroma enostavno premikati med njimi.

Nekatere izboljšave Cloudanta v CouchDB so se vrnile v osnovni projekt CouchDB, vključno s horizontalno funkcijo lestvice CouchDB 2.0 in jezikovnim vmesnikom Mango. Vendar tega ne jemljite kot dokaz, da se funkcije Cloudanta samodejno pretakajo na CouchDB.

Cloudant na IBM Cloud

Cloudant je predvsem ponudba v oblaku na IBM Cloud, kjer se lahko uporablja skupaj z drugimi IBM-ovimi podatkovnimi izdelki, kot so dashDB, DataWorks in Watson Analytics.

Cloudant Local

Izdaja Cloudant-a za požarnim zidom, imenovana Cloudant Local, ponuja vse enake funkcije kot ponudba, ki jo gosti v oblaku. Cloudant Local je na voljo v različicah Ubuntu in Red Hat za x86 Linux, pa tudi v IBM-ovem lastnem System z Red Hat ali Suse. Razvijalci lahko na Dockerjevo sliko prenesejo brezplačno različico, samo za preizkušanje in razvijanje.

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