Ohjelmointi

NoSQL-erotuomarit: parhaat asiakirjatietokannat

"Oikea työkalu oikeaan työhön." Jos tällainen viisaus pitää paikkansa missä tahansa, se pitää paikkansa valitessaan tietokannan, jonka kehittäjä valitsee tietylle sovellukselle. Asiakirjatietokannat, yksi tietotuoteperheestä, jota kutsutaan yhdessä nimellä “NoSQL”, on tarkoitettu kehittäjille, jotka haluavat keskittyä omaan sovellus pikemminkin kuin tietokantatekniikka.

Asiakirjatietokannassa tietoja ei tallenneta taulukoihin, joissa on erilliset saraketyypit. Sen sijaan se tallennetaan vapaamuotoisissa "asiakirjoissa", joissa on mikä tahansa määrä kenttiä ja mikä tahansa määrä sisäkkäisiä rakenteita. Tällaisia ​​asiakirjoja kuvataan tyypillisesti JSON: na ja päivitetään joko API: n avulla tai lähettämällä JSON REST-päätepisteeseen. Suurin osa jokaisesta nykyaikaisesta ohjelmointikielestä tukee JSON: ää ja REST: ää, joten dokumenttitietokannan kanssa työskenteleminen tuntuu enemmän kuin työskennellä luonnollisesti näiden tietorakenteiden kanssa kuin perinteisen tietokannan kanssa.

Tällä shemaisuudella, kuten sitä kutsutaan, on rajoituksensa. Kehittäjän on tehtävä enemmän työtä varmistaakseen, että lisätyt tiedot ovat yhdenmukaisia, koska itse tietokanta ei aina takaa tällaista johdonmukaisuutta. Useimmat dokumenttitietokannat eivät tue SQL-tietokantatyön vakiokysymystä ja laajalti ymmärrettyä kieltä, joten niiden, joilla on tietokantaosaamista, on aloitettava alusta alkaen. Mutta asiakirjatietokannan mukavuutta, nopeutta, skaalautuvuutta ja monipuolisuutta on vaikea voittaa, kun kirjoitat sovellusta, joka tarvitsee protean, vapaamuotoisen tietorakenteen.

Tässä olemme profiloineet seitsemän tunnetuinta ja eniten käytettyä asiakirjatietokantaa. Neljä seitsemästä - CouchDB, Couchbase Server, MongoDB ja RethinkDB - ovat avoimen lähdekoodin projekteja, joilla ei ole juurikaan käytännön esteitä aloittamiseen; Couchbase ja MongoDB ovat saatavilla myös tuetuissa yritysversioissa kaupallisilla lisensseillä. Kolme muuta - Amazon DynamoDB, Google Firebase ja IBM Cloudant - isännöivät palveluja suurilta pilvimyyjiltä, ​​joissa tiivis integrointi muiden pilvipalvelujen kanssa on iso vetovoima.

Katso alla olevasta taulukosta ominaisuuksien vertailu; vieritä taulukossa oikealle nähdäksesi kaikki sarakkeet käyttämällä alareunassa olevaa vierityspalkkia. Lue lyhyt keskustelu jokaisesta tietokannasta.

Avain: L= Linux, W= Windows, M= MacOS, S= Solaris, Minä= iOS, A= Android, O= muu matkapuhelin,

1. Kolmannen osapuolen työkalut voivat tarjota tämän toiminnon. 2. Taulukkoa kohti. 3. Vain yritysversio. 4. Näytä vain toiminnot. 5. Monidokumenttitapahtumia on myös saatavana, mutta ei paloitelluissa klustereissa.

 Amazon DynamoDBCosmos DBCouchbaseSohvaDBGoogle FirebaseIBM CloudantMarkLogicMongoDBAjattele uudelleen
AlustatVain pilviVain pilviLWMLWMIAOVain pilviVain pilviLWMSLWMSLWM
KyselyjärjestelmätREST APIMongoDB-johdinprotokollaMemcached-protokolla, REST-sovellusliittymäREST APIREST / JavaScript-sovellusliittymäREST APIREST APIJSON-pohjainen sovellusliittymä, osittainen REST-sovellusliittymäReQL-kyselykieli, REST-sovellusliittymä
SQL-kysely Ei 1JooN1QL-kielen kautta Ei Ei Ei Joo Ei 1 Ei
Vahva kirjoittaminenJooJooJoo Ei Joo Ei XML-skeemeilleJooJoo
Native liittyy Ei JooJoo Ei Ei Ei JooJooJoo
Osioinnin jakaminenJooJooJooJooNAJooJooJooKyllä 2
Ryhmittely NA JooJooJoo NA NA JooJooJoo
ReplikointiJooJooJooJoo NA JooJooJooTaulukkoa kohti
Johdonmukaisuus: VälitönLuettua kohtiJooKaiken kaikkiaan Ei Yhdistetyt asiakkaat Ei JooKirjoitusta kohtiAsiakirjaa kohti
Johdonmukaisuus: LopultaJooJooJooJooOffline-asiakkaatJooJooJooKoko tietokanta
SamanaikaisuusJooJooJooJooJooJooJooJooJoo
Muistitoiminnot NA NA Ei Ei NA Ei NA Kyllä 3 Ei
Tallennetut menettelyt Ei JavaScriptJavaScript 4JavaScript 4SäännötJavaScript 4XQuery-moduuliJavaScript Ei
TapahtumatSovelluksen mukaanJooYksittäiset asiakirjatYksittäiset asiakirjatJooYksittäiset asiakirjatYksittäiset asiakirjatYksittäiset asiakirjat 5Yksittäiset asiakirjat
Nykyinen versioNANA5.0 (lokakuuta 2017)2.1.1 (marraskuu 2017)NANA9.0 (toukokuuta 2016)3.4.10 (lokakuuta 2017)2.3.6 (heinäkuu 2017)
Alkuperäinen julkaisu201220172011200520122010200520092009

Amazon DynamoDB

Amazonin DynamoDB-dokumenttikauppa aloitti elämänsä vuonna 2012 Amazonin SimpleDB-laajennuksena. Hupun alla sitä käyttää avaimen arvoinen myymälä Dynamo. DynamoDB: n toinen kehittäjä hyödynsi myöhemmin monia samoja ideoita Apache Cassandran luomiseksi.

DynamoDB-ominaisuudet

Kuten suurin osa Amazonin muista pilvitarjouksista, DynamoDB on maksullinen, kun tarvitset hallittua palvelua. Kehittäjät asettavat, kuinka paljon tallennuskapasiteettia on järjestelemättömien asiakirjojen tai avainarvoparien säilyttämiseen, ja valitsivat kiinteän tuntirajan tieto- kantaan luettaville ja kirjoituspyynnöille. Ei tarvitse huolehtia palvelimista tai määrittää replikointia - Amazon hoitaa kaiken tämän kannen alla ja äskettäin lisännyt automaattisen skaalauksen sekoitukseen.

Luonnollisesti DynamoDB tarjoaa kehittäjille hyödyllisiä integraatioita muihin Amazon-pilven palveluihin. Esimerkiksi laukaisimet voidaan asettaa AWS Lambda -toimintojen avulla. Amazonin BI- ja analyysityökalut ovat myös lähellä. Näiden palvelujen läheisyys on kätevä, mutta se tarkoittaa myös, että Amazon voi myydä toimintoja monin eri tavoin. Esimerkiksi välimuisti ja kiihtyvyys a la Redis ovat saatavana DynamoDB Acceleratorilla, joka on kustannus-plus-lisäosa.

DynamoDB Local

Et löydä DynamoDB: tä avoimen lähdekoodin inkarnaatiosta. Se on saatavana yksinomaan Amazonin pilvipalveluna.

Toisin kuin monet muut pilvipohjaiset tietokannat, DynamoDB on saatavana myös versiossa, joka voidaan ladata ja suorittaa paikallisesti. Mutta DynamoDB Local ei ole tarkoitettu tuotantokäyttöön, vaan pikemminkin tapana vaihtaa sovellus testiympäristössä ilman liitettävyyttä tai Amazon-laskun suorittamista.

Microsoft Azure Cosmos DB

Cosmos DB on kunnianhimoinen projekti, tietokantajärjestelmä, joka sisältää useita malleja tietojen tallentamiseen ja noutamiseen. Cosmos DB voi toimia asiakirjatietokantana, pylvästietokantana, kaaviotietokannana tai avainarvosäilönä, jolloin käyttäjä voi valita itselleen sopivan paradigman ja hyödyntää erilaisia ​​sovellusliittymiä työskennellessään näiden paradigmojen kanssa.

Cosmos DB: n ominaisuudet

Sen sijaan, että keksisi kokonaan uuden sovellusliittymän asiakirjatietokantajärjestelmälle, Cosmos DB tarjoaa käyttöliittymän, joka on yhteensopiva suositun MongoDB: n kanssa (keskustellaan alla). Etuihin kuuluu, että olemassa oleva koodi, joka käyttää MongoDB-liitäntäkirjastoja tai MongoDB: n binäärilanka-protokollaa, voi toimia sellaisenaan. Se tarkoittaa sitä, että Cosmos DB pystyy tarjoamaan MongoDB: n palveluna. Samoin Cosmos DB tukee Cassandran, suositun sarakeperheiden tietokannan, API: ta.

Microsoft tuo Cosmos DB: lle useita etuja, jotka eivät välttämättä ole yksinomaan sen asiakirjatietokantatoiminnot, mutta on tarkoitettu vetoamaan rakennustodistustietokantasovelluksiin. Yksi tällainen tarjous on viritettävät sakeustasot. Jos sinulla on joitain asiakirjatapahtumaluokkia, jotka vaativat vahvempaa yhdenmukaisuutta Azure-alueilla kuin toiset, voit määrittää ne manuaalisesti tapahtumakohtaisesti.

Muut ominaisuudet liittyvät tarkemmin asiakirjatietokantoihin. Esimerkiksi MongoDB-käyttäjien on luotava hakemistot asiakirjakokoelmiin hakujen optimoimiseksi. MongoDB-sovellusliittymien kanssa työskentelevien Cosmos DB -käyttäjien ei tarvitse määrittää indeksointia asiakirjoille, koska kaikki lisättyyn dokumentoituun omaisuuteen indeksoidaan automaattisesti.

Cosmos DB: n käyttäminen Microsoft Azuressa

Cosmos DB: stä ei ole paikallisesti isännöityä versiota. Se on saatavana vain palveluna Microsoft Azure -pilvessä. Cosmos DB: n kehitysrajapinnat ovat kuitenkin saatavilla useimmille jokaiselle suositulle yrityskielelle - Java, Node.js, .NET ja Python.

Couchbase-palvelin

Couchbase ei ole niinkään CouchDB: n sisar kuin seuraaja. Couchbase rakennettiin CouchDB: ssä ja Membasessa tehtyihin töihin, mutta se ei liity kumpaankaan näistä projekteista. Se on asiakirjatietokanta ja hajautettu avainarvosäilö, joka on koottu yhteen ja jossa on edistyneitä ominaisuuksia, kuten automatisoitu vianmääritys ja tietokeskusten välinen replikointi, tarkoitettu yrityskäyttöön.

Couchbase-ominaisuudet

Yksi ominaisuus, joka erottaa Couchbasen paitsi muista NoSQL-kilpailuista, myös edeltäjänsä CouchDB: stä, on sen SQL-tyyppinen kyselykieli nimeltä N1QL (lausutaan nimellä "nikkeli"). N1QL ei tarjoa kaikkia komentoja, joita odotat ANSI SQL -asennukselta, mutta se tarjoaa tarpeeksi hyödyllisiä toimintoja, kuten JOIN-operaatioita, SQL-kokemusta omaavalle henkilölle toimivia tuloksia varten.

Couchbase-kyselyjärjestelmä ei ole vain kehittäjille, vaan DBA: lle ja liike-analyytikoille, jotka tavallisesti käsittelevät perinteisiä tietokantoja. Ominaisuudet, kuten EXPLAIN-avainsana, näyttävät olevan erityisesti otettu mukaan kyseiseen väkijoukkoon.

Couchbase tallentaa asiakirjatietokannan ja avainarvosäilön yhdistelmänä asiakirjoja käyttämällä niiden yksilöllisiä tunnisteita avaimena. Asiakirjoille voidaan myös määrittää aika elää -arvot toimimaan kuten avainarvon välimuisti. Redis-kaltainen todellinen avainarvon välimuistijärjestelmä on kuitenkin paljon nopeampi avaimen arvon perusvarastoinnille, mutta Couchbase on joustavampi, ja Redis ja Couchbase voidaan yhdistää tehokkaasti asioiden nopeuttamiseksi. Tässä huomautuksessa Couchbasella on natiivi tuki Memcached-protokollalle, joten olemassa olevat Memcachedia käyttävät sovellukset voivat kytkeytyä Couchbaseen korvaavana.

Couchbase-yhteisö vs. yritys

Couchbase Server on täysimittainen maksullinen yritysversio, vapaasti käytettävissä oleva yhteisöversio ja avoimen lähdekoodin versio, joka on perusta muille. Binaarilataukset yritys- ja yhteisöversioon ovat saatavana Couchbasen sivustolta ja lähdekoodin Couchbasen kehittäjäsivustolta. (Couchbase-avoimen lähdekoodin projektilla ei ole yhtä GitHub-arkistoa, koska se on useiden projektien yhdistelmä.)

Yhteisöversio voidaan ottaa käyttöön tuotannossa, mutta siinä ei ole yrityspainoksen edistyneempiä ominaisuuksia eikä tukea, joten varmista, että muut kuin ostajat. Jotkin Couchbasen ominaisuudet, kuten sen horisontaalinen skaalaus, ovat löytäneet tiensä CouchDB-projektiin, mutta se on enemmän poikkeus kuin sääntö.

Couchbase Lite

Toinen Couchbase-versio, joka on syytä huomata sovelluskehittäjille, on Couchbase Lite, upotettava Couchbase-versio, joka voi synkronoida täysimittaisen version esiintymien kanssa. Couchbase Lite on keskeinen komponentti Couchbase Mobile -sovelluksessa, mobiilisovellusten sovelluspinossa, joka tarvitsee tietovaraston, joka synkronoituu automaattisesti taustapään kanssa. Couchbase Mobile on saatavana iOS, Android, Java. .Net, MacOS ja tvOS.

SohvaDB

Entinen IBM: n kehittäjä aloitti CouchDB-projektin vuonna 2005 ja muutti Apache Software Foundationiin vuonna 2008. Joskus oletetaan, että CouchDB on Couchbasen perusta, mutta CouchDB ja Couchbase ovat rinnakkaisia ​​projekteja, joilla on erilaiset tavoitteet.

CouchDB vs. Couchbase

Vaikka Couchbase on sekä asiakirjatietokanta että avainarvosäilö, CouchDB on ehdottomasti asiakirjatietokanta. Ja vaikka Couchbase on pitkään keskittynyt yritysominaisuuksiin, kuten vikasietoisuuteen ja SQL-tyyppiseen kyselykieleen, tällaiset hienot ominaisuudet ovat vasta alkamassa saapua CouchDB: hen.

CouchDB-ominaisuudet

CouchDB korostaa käyttöönoton yksinkertaisuutta ja helppokäyttöisyyttä. Tietojen noutaminen tietokannasta on yhtä helppoa kuin JSON-muotoisten kyselyjen lähettäminen REST HTTPS -päätepisteelle, jolloin tulokset palautetaan JSON: ssa. Suurin osa jokaisesta nykyaikaisesta ohjelmointikielestä voi tehdä nämä asiat, ja suorittaa myös kartoituksen ja pienennyksen, joka tarvitaan CouchDB-kyselyjen ja raporttien takana olevien näkymien luomiseen. ODBC-ohjainta tai dataliitintä ei tarvita.

Yksi CouchDB: n erikoiskastikkeista on sen tietojen täsmäytystekniikka. Yhdelle CouchDB-vertaiselle tehdyt muutokset sovitetaan automaattisesti muiden kanssa samalla tavalla kuin versionhallintajärjestelmä. Asiakirjaversioiden väliset ristiriidat säilytetään ikään kuin ne olisivat kyseisen asiakirjan aikaisempia versioita.

Tämä lopulta yhdenmukainen malli on hyödyllinen tietokannoille, jotka eivät ole aina tai jatkuvasti yhteydessä (kuten ajoittain kytkettyihin mobiilisovelluksiin) tai tapauksissa, joissa et tarvitse tietokannan uusinta ja suurinta versiota tietyssä solmussa. Mutta lopullinen johdonmukaisuus on myös yksi CouchDB: n suurimmista varoituksista. Jos sinä tehdä tarvitsevat välitöntä johdonmukaisuutta, CouchDB ei ole oikea paikka löytää sitä.

Skaalautuvuus on ollut pitkään heikko kohta CouchDB: lle, mutta siihen on viime aikoina puututtu. Versio 2.0 sekoitti uuteen klusterointitekniikkaan Cloudantin / IBM: n hankkimien ja sulautettujen projektiin yhdistettyjen bittien avulla. Lopuksi, niille, jotka tuntevat MongoDB: n ja haluavat käyttää samanlaista deklaratiivista kyselyn syntaksia, Mango-projekti, myös Cloudant / IBM: ltä, tarjoaa sen ulkoisena lisäosana.

CouchDB lataa

CouchDB-binäärit kaikille tärkeimmille alustoille ja lähdekoodi voidaan ladata viralliselta CouchDB-sivustolta. Lähde projektille on saatavana myös GitHubissa.

Google Firebase Reaaliaikainen tietokanta

Voit ajatella Google Firebasea Googlen vastauksena DynamoDB: hen - tapana tarjota nopeasti synkronoituva tietotallennustila pilvipalvelun ja paikallisten sovellusten välillä useilla alustoilla.

Firebase Realtime -tietokanta on vain yksi osa Firebase-pinoa, joka on tarkoitettu yleisön sitouttamiseen ja oivalluksiin kohdistuvien sovellusten rakentamiseen. Koko pino sisältää toiminnot, kuten todennuksen, suorituskyvyn seurannan, käyttäjäanalytiikan ja monet muut, mutta tässä keskitymme itse Firebaseen.

Google Firebase -ominaisuudet

Google osti Firebasen vuonna 2014. Siitä lähtien se on kytkenyt Firebasen hyödyntämään monia Google Cloud -ominaisuuksia. Esimerkiksi Google Cloud Functions for Firebase antaa sinun käynnistää JavaScript-toiminnot pilvessä vastauksena Firebase-tapahtumiin. Google Analytics for Firebase -palvelun avulla voit vetää mobiilisovellustietoja BigQueryyn tarkempaa analyysia varten.

Koska pelaaminen on yksi Firebasen kohdesovelluksista, Firebaseen toimitetut SDK: t sisältävät Unityn alustanvälisen pelikehityskehyksen. Kehittäjillä, jotka työskentelevät tavallisemmissa yrityskeskeisissä tai kuluttajille suunnatuissa projekteissa, on paljon muita valintoja: alkuperäinen iOS ja Android, C ++, yleinen verkko / JavaScript ja mikä tahansa muu REST-tukea tukeva kieli (Java, Python, sinä nimeät sen).

Firebase on suunniteltu toimimaan tilanteissa, joissa liitettävyyttä ei taata. Kuten CouchDB, se tallentaa välimuistit paikallisesti offline-tilassa ja synkronoituu automaattisesti käyttöjärjestelmän kanssa, kun yhteys palautuu. Huomaa, että Firebasea ei ole suunniteltu käytettäväksi erillisenä, täysin offline-ratkaisuna. esimerkiksi Androidissa paikalliset tietokannat ovat rajoitettu 10 Mt: n tallennustilaan.

Firebase Google Cloudissa ja GitHubissa

Firebase ei ole saatavana erillisenä tuotteena, mutta se on saatavana vain osana Googlen pilvituotetarjontaa. Firebase GitHub -tietovarastossa on lähdekoodi SDK: lle ja erilaisille alustakohtaisille työkaluille.

IBM Cloudant

Cloudant on pohjimmiltaan IBM: n isännöimä CouchDB-versio. Alun perin Cloudant oli itsenäinen yritys, joka tarjosi CouchDB: n BigCouch-version, jota isännöitiin IBM: n SoftLayer-pilvessä. Vuonna 2014 IBM osti Cloudantin suoraan osana IBM: n yleistä pyrkimystä kohti analytiikkaa ja big dataa.

Pilvinen vs. CouchDB

Cloudantin on tarkoitus olla enemmän kuin CouchDB: n isännöity versio. Cloudant tarjoaa ominaisuuksia, joita ei ole helposti saatavilla itse CouchDB: ssä, kuten natiivisti integroitu kokotekstihaku. CouchDB: n kokotekstihaku vaatii yleensä integroinnin ulkoisiin projekteihin. Tiedot voidaan kopioida molempiin suuntiin Cloudantin ja CouchDB-esiintymän välillä, joten on suhteellisen helppo siirtyä jommankumman välillä tarpeen mukaan.

Jotkut Cloudantin CouchDB-parannuksista ovat löytäneet tiensä takaisin taustalla olevaan CouchDB-projektiin, mukaan lukien CouchDB 2.0: n horisontaalinen skaalaustoiminto ja Mango-kyselykielen käyttöliittymä. Mutta älä ota sitä todisteeksi siitä, että Cloudant-ominaisuudet siirtyvät automaattisesti CouchDB: hen.

Pilvinen IBM Cloudissa

Cloudant on ensisijaisesti IBM Cloudin pilvitarjonta, jossa sitä voidaan käyttää yhdessä muiden IBM Cloud -tietotuotteiden kuten dashDB, DataWorks ja Watson Analytics kanssa.

Pilvinen paikallinen

Cloudantin takana oleva palomuuriversio nimeltä Cloudant Local tarjoaa kaikki samat toiminnot kuin pilvipalvelin. Cloudant Local on saatavana x86 Linuxin Ubuntu- ja Red Hat -makuissa sekä IBM: n omassa System Hat -ohjelmassa, jossa on Red Hat tai Suse. Kehittäjät voivat ladata ilmaisen, vain testattavan ja kehitettävän version Docker-kuvaan.