NoSQL izdvajanja: Najbolje baze podataka dokumenata

"Pravi alat za pravi posao." Ako takva mudrost vrijedi bilo gdje, zasigurno vrijedi i s izborom baze podataka koju programer odabere za određenu aplikaciju. Baze podataka dokumenata, jedna od obitelji podatkovnih proizvoda pod zajedničkim nazivom "NoSQL", namijenjene su programerima koji se žele usredotočiti na svoju aplikaciju, a ne na tehnologiju baza podataka .

Kod baze podataka dokumenata podaci se ne pohranjuju u tablice s različitim vrstama stupaca. Umjesto toga, pohranjuje se u „dokumente“ slobodnog oblika s bilo kojim brojem polja i bilo kojim brojem ugniježđenih struktura. Takvi su dokumenti obično predstavljeni kao JSON i ažuriraju se putem API-ja ili slanjem JSON-a na REST krajnju točku. Većina svakog modernog programskog jezika podržava JSON i REST, tako da rad s bazom podataka dokumenata više liči na nativni rad s tim strukturama podataka nego s tradicionalnom bazom podataka.

Ovaj, bez sheme dizajn, kako se naziva, ima svoja ograničenja. Programer mora učiniti više kako bi osigurao da umetnuti podaci budu dosljedni, jer takva dosljednost nije uvijek zajamčena samom bazom podataka. SQL, standardno izdanje i široko razumljivi jezik za rad s bazama podataka, nije podržan u većini baza podataka dokumenata, pa one s postojećom stručnošću u bazama podataka moraju početi od nule. No pogodnost, brzinu, skalabilnost i svestranost baze podataka dokumenata teško je nadmašiti kada pišete aplikaciju koja treba proteansku strukturu podataka slobodnog oblika.

Ovdje smo profilirali sedam najpoznatijih i najčešće korištenih baza podataka dokumenata. Četiri od sedam - CouchDB, Couchbase Server, MongoDB i RethinkDB - su projekti otvorenog koda s malo ili nimalo praktičnih prepreka za početak; Couchbase i MongoDB također su dostupni u podržanim izdanjima za poduzeća pod komercijalnim licencama. Preostala tri - Amazon DynamoDB, Google Firebase i IBM Cloudant - hostirane su od usluga glavnih dobavljača oblaka, pri čemu je bliska integracija s drugim uslugama u tim oblacima velik potez.

Pogledajte tablicu u nastavku za usporedbu značajki; pomaknite se desno u tablici da biste vidjeli sve stupce pomoću klizača na dnu. Pročitajte kratke rasprave o svakoj bazi podataka.

L W M S I A O

1. Alati treće strane mogu pružati ovu funkcionalnost. 2 . Po stolu. 3 . Samo izdanje za poduzeće. 4 . Prikaži samo funkcije. 5 . Dostupne su i transakcije s više dokumenata, ali ne na izoštrenim klasterima.

Ključ: = Linux, = Windows, = MacOS, = Solaris, = iOS, = Android, = ostali mobiteli,
  Amazon DynamoDB Cosmos DB Kauč ​​baza CouchDB Google Firebase IBM Cloudant MarkLogic MongoDB Preispitati DB
Platforme Samo u oblaku Samo u oblaku LWM LWMIAO Samo u oblaku Samo u oblaku LWMS LWMS LWM
Sustavi upita REST API MongoDB žičani protokol Memcached protokol, REST API REST API REST / JavaScript API REST API REST API API zasnovan na JSON-u, djelomični REST API ReQL jezik upita, REST API
SQL upiti Br. 1 Da Preko N1QL jezika Ne Ne Ne Da Br. 1 Ne
Snažno tipkanje Da Da Da Ne Da Ne Za XML sheme Da Da
Izvorni se pridružuje Ne Da Da Ne Ne Ne Da Da Da
Oštrenje particije Da Da Da Da NA Da Da Da Da2
Skupljanje NA Da Da Da NA NA Da Da Da
Replikacija Da Da Da Da NA Da Da Da Po stolu
Konzistentnost: Neposredna Po čitanju Da Općenito Ne Povezani klijenti Ne Da Po pisanju Po dokumentu
Dosljednost: Eventualna Da Da Da Da Izvanmrežni klijenti Da Da Da Cijela baza podataka
Konkurencija Da Da Da Da Da Da Da Da Da
Operacije u memoriji NA NA Ne Ne NA Ne NA Da3 Ne
Pohranjeni postupci Ne JavaScript JavaScript4 JavaScript4 Pravila JavaScript4 XQuery modul JavaScript Ne
Transakcije Prema aplikaciji Da Pojedinačni dokumenti Pojedinačni dokumenti Da Pojedinačni dokumenti Pojedinačni dokumenti Pojedinačni dokumenti5 Pojedinačni dokumenti
Trenutna verzija NA NA 5,0 (listopad 2017.) 2.1.1 (studeni 2017.) NA NA 9,0 (svibanj 2016) 3.4.10 (listopad 2017.) 2.3.6 (srpanj 2017.)
prvo izdanje 2012. godine 2017. godine 2011 2005. godine 2012. godine 2010 2005. godine 2009 2009

Amazon DynamoDB

Amazonova trgovina DynamoDB dokumenata započela je život 2012. godine kao produžetak Amazonove SimpleDB. Ispod poklopca napaja ga ključ vrijednosti Dynamo. Surazvojnik DynamoDB-a kasnije će se oslanjati na mnoge iste ideje za stvaranje Apache Cassandre. 

DynamoDB značajke

Kao i većina Amazonovih ostalih ponuda u oblaku, DynamoDB je upravljana usluga s plaćanjem koliko god trebate. Razvojni programeri postavljaju koliki kapacitet pohrane treba osigurati za čuvanje nestrukturiranih dokumenata ili parova ključ / vrijednost i odabiru ravno ograničenje satnice za zahtjeve za čitanje i pisanje u bazu podataka. Nema potrebe za pružanjem poslužitelja ili konfiguriranjem replikacije - Amazon obrađuje sve to ispod pokrivača i nedavno je u kombinaciju dodao automatsko skaliranje.

Naravno, DynamoDB programerima nudi korisne integracije s drugim uslugama u Amazonovom oblaku. Na primjer, okidači se mogu postaviti pomoću AWS Lambda funkcija. U blizini su i Amazonovi BI i alati za analizu. Blizina ovih usluga prikladna je, ali to također znači da Amazon može prodati funkcionalnost na bilo koji način. Keširanje i ubrzanje a la Redis, na primjer, dostupni su putem DynamoDB Acceleratora, dodatka koji dodatno košta.

Lokalni DynamoDB

DynamoDB nećete pronaći u inkarnaciji otvorenog koda. Dostupna je isključivo kao hostirana ponuda na Amazonovom oblaku.

To je reklo, za razliku od mnogih drugih baza podataka izvornih za oblak, DynamoDB je također dostupan u verziji koja se može preuzeti i pokrenuti lokalno. No, DynamoDB Local nije namijenjen produkcijskoj upotrebi, već kao način postavljanja aplikacije u testno okruženje bez potrebe za povezivanjem ili trošenjem Amazonovog računa.

Microsoft Azure Cosmos DB

Cosmos DB ambiciozan je projekt, sustav baza podataka koji obuhvaća više modela za pohranu i dohvaćanje podataka. Cosmos DB može poslužiti kao baza podataka dokumenata, stupasta baza podataka, baza podataka grafova ili spremište vrijednosti ključ, omogućujući korisniku da odabere paradigmu koja mu odgovara i da se oslanja na razne API-je za rad s tim paradigmama. 

Značajke Cosmosa DB

Umjesto da izmisli potpuno novi API za sustav baze podataka dokumenata, Cosmos DB nudi API kompatibilan s popularnim MongoDB-om (o kojem će biti riječi u nastavku). Među pogodnostima je što postojeći kod koji koristi MongoDB knjižnice sučelja ili MongoDB-ov binarni žičani protokol može raditi takav kakav jest. Iznosi da Cosmos DB može pružiti MongoDB kao uslugu. Isto tako, Cosmos DB podržava API Cassandre, popularne baze podataka obitelji obitelji stupaca. 

Microsoft otkriva nekoliko prednosti Cosmos DB-a koje nisu nužno ekskluzivne za njegovu funkcionalnost baze podataka dokumenata, ali su namijenjene privlačenju onih aplikacija baze podataka zgrada. Jedna od takvih ponuda su prilagodljive razine dosljednosti. Ako imate neke klase transakcija dokumenata koje zahtijevaju jaču dosljednost u Azure regijama od drugih, možete ih ručno odrediti po transakciji.

Ostale su značajke specifičnije za baze podataka dokumenata. Na primjer, korisnici MongoDB-a moraju postaviti indekse u zbirkama dokumenata kako bi optimizirali pretraživanja. Korisnici Cosmos DB-a koji rade s MongoDB API-ima ne moraju postavljati indeksiranje za dokumente, jer se svako svojstvo u umetnutom dokumentiranom dokumentu automatski indeksira.

Korištenje Cosmos DB-a na Microsoft Azureu

Ne postoji lokalno smještena verzija Cosmos DB-a. Dostupna je samo kao usluga u oblaku Microsoft Azure. Usprkos tome, razvojni API-ji za Cosmos DB dostupni su za većinu svih popularnih poslovnih jezika - Java, Node.js, .NET i Python.

Couchbase poslužitelj

Couchbase nije toliko brat ili sestra CouchDB-a koliko nasljednik. Couchbase je izgrađen na radu obavljenom u CouchDB-u i Membase-u, ali nije povezan ni s jednim od tih projekata. To je baza podataka dokumenata i distribuirano spremište ključ / vrijednost ujedinjeno u jedno, s naprednim značajkama poput automatiziranog otkazivanja i preslikavanja centara podataka, namijenjenih poslovnim slučajevima.

Karakteristike kauča

Jedna značajka koja Couchbase izdvaja, ne samo od ostalih konkurencija NoSQL-a, već i od svog prethodnika CouchDB-a, jest njegov jezik upita sličan SQL-u nazvan N1QL (izgovara se „nickel“). N1QL ne nudi čitav niz naredbi koje biste očekivali od ANSI SQL implementacije, ali pruža dovoljno korisnih funkcija, poput JOIN operacija, da bi netko s SQL iskustvom mogao postići izvedljive rezultate.

Sustav upita Couchbase nije namijenjen samo programerima, već i DBA-ima i poslovnim analitičarima koji se obično bave uobičajenim bazama podataka. Značajke poput ključne riječi EXPLAIN izgledaju kao da su ugrađene posebno kako bi privukle tu publiku.

Kao kombinacija baze podataka dokumenata i pohrane ključa i vrijednosti, Couchbase pohranjuje dokumente koristeći njihove jedinstvene identifikatore kao ključ. Dokumentima se također mogu dodijeliti vrijednosti vremena života da funkcioniraju poput predmemorije ključa i vrijednosti. Ipak, istinski sustav predmemoriranja ključeva i vrijednosti poput Redisa bit će daleko brži za osnovno pohranjivanje ključeva i vrijednosti, ali Couchbase je fleksibilniji, a Redis i Couchbase mogu se učinkovito kombinirati kako bi se stvari ubrzale. U tu napomenu, Couchbase ima izvornu podršku za protokol Memcached, tako da se postojeće aplikacije koje koriste Memcached mogu priključiti na Couchbase kao zamjena.

Couchbase zajednica nasuprot Enterpriseu

Couchbase Server dolazi u cjelovitom poslovnom izdanju za plaćanje, besplatnom izdanju zajednice i izdanju otvorenog koda, što je temelj za ostale. Binarna preuzimanja za izdanja za poduzeća i zajednice dostupna su na web mjestu Couchbase, a izvorni kod dostupan je na web mjestu Couchbase za programere. (Ne postoji niti jedno GitHub spremište za projekt Couchbase otvorenog koda jer je to skup nekoliko projekata.)

Izdanje zajednice može se primijeniti u proizvodnji, ali nedostaju naprednije značajke izdanja za tvrtku, kao i podrška, pa se pazite ne-kupci. Neke značajke u Couchbaseu, poput njegove funkcije vodoravnog skaliranja, našle su se u CouchDB projektu, ali to je više iznimka nego pravilo.

Couchbase Lite

Još jedno izdanje Couchbasea vrijedno napomene za programere aplikacija je Couchbase Lite, ugrađena verzija Couchbasea koja se može sinkronizirati s primjerima cjelovitog izdanja. Couchbase Lite ključna je komponenta u Couchbase Mobileu, paketu aplikacija za mobilne aplikacije kojima je potrebna pohrana podataka koja se automatski sinkronizira s pozadinom. Couchbase Mobile dostupan je za iOS, Android i Java. .Net, MacOS i tvOS.

CouchDB

Projekt CouchDB započeo je 2005. godine bivši IBM-ov programer, a preselio ga je u Apache Software Foundation 2008. godine. Ponekad se pretpostavlja da je CouchDB osnova za Couchbase, ali CouchDB i Couchbase paralelni su projekti s različitim ciljevima.

CouchDB vs. Couchbase

Dok je Couchbase i baza podataka dokumenata i pohrana ključa i vrijednosti, CouchDB je strogo baza podataka dokumenata. I dok se Couchbase već dugo fokusira na značajke poduzeća poput tolerancije kvarova i jezika upita sličnog SQL-u, takve finoće tek počinju stizati u CouchDB.

CouchDB značajke

CouchDB naglašava jednostavnost primjene i jednostavnost upotrebe. Dohvaćanje podataka iz baze podataka jednostavno je poput slanja upita u formatu JSON do krajnje točke REST HTTPS, a rezultati se vraćaju u JSON. Većina svakog modernog programskog jezika može to učiniti, a također izvodi mapiranje i smanjivanje potrebnih za stvaranje pogleda iza CouchDB upita i izvještaja. Nije potreban ODBC pokretački program ili podatkovni konektor.

Jedan od posebnih umaka CouchDB-a je tehnologija usklađivanja podataka. Izmjene napravljene na jednom CouchDB-ovom kolegu automatski se usklađuju s drugima, na način sličan sustavu za upravljanje verzijama. Svi sukobi između verzija dokumenta zadržavaju se kao da su prethodne revizije tog dokumenta.

Ovaj na kraju dosljedan model koristan je za baze podataka koje nisu uvijek ili dosljedno povezane (na primjer, za povremeno povezane mobilne aplikacije) ili u slučajevima kada vam nije potrebna najnovija i najveća verzija podataka u određenom čvoru. No, eventualna dosljednost također je jedno od najvećih upozorenja CouchDB-a. Ako ne trebate hitnu dosljednost, CouchDB nije mjesto za pronaći.

Skalabilnost je CouchDB-u dugo bila slaba točka, ali nedavno je riješena. Verzija 2.0 pokrenula je novu tehnologiju klasteriranja, zahvaljujući bitovima otvorenog izvora Cloudant / IBM i uklopljenim u projekt. Konačno, onima koji su upoznati s MongoDB-om i žele koristiti sličnu sintaksu deklarativnog upita, projekt Mango, također iz Cloudanta / IBM-a, to pruža kao vanjski dodatak.

CouchDB preuzimanje

CouchDB binarne datoteke za sve glavne platforme i izvorni kod mogu se preuzeti sa službenog web mjesta CouchDB. Izvor projekta dostupan je i na GitHubu.

Google Firebase baza podataka u stvarnom vremenu

Google Firebase možda mislite kao Googleov odgovor na DynamoDB - način na koji se omogućuje brza sinkronizacija pohrane podataka između pozadine oblaka i lokalnih aplikacija na više platformi.

Firebase baza podataka u stvarnom vremenu samo je jedna komponenta u Firebase stogu, namijenjena izgradnji aplikacija koje su teške za angažman i uvid publike. Čitav niz uključuje funkcije poput provjere autentičnosti, praćenja izvedbe, korisničke analitike i mnogih drugih, ali ovdje se usredotočujemo na sam Firebase.

Značajke Google Firebasea

Google je Firebase kupio 2014. godine. U godinama otad povezao je Firebase kako bi iskoristio mnoge značajke Google Clouda. Na primjer, Google Cloud Functions za Firebase omogućuje vam pokretanje JavaScript funkcija u oblaku kao odgovor na Firebase događaje. Google Analytics za Firebase omogućuje vam uvlačenje podataka mobilne aplikacije u BigQuery za dublju analizu.

Kako je igranje jedna od Firebaseovih ciljnih aplikacija, SDK-ovi predviđeni za Firebase uključuju okvir za razvoj igara na više platformi Unity. Programeri koji rade na konvencionalnijim projektima usmjerenim na poduzeća ili potrošačima imaju mnoštvo drugih izbora: izvorni iOS i Android, C ++, generički web / JavaScript i bilo koji drugi jezik koji podržava REST (Java, Python, kako vi kažete).

Firebase je dizajniran za rad u scenarijima u kojima povezanost nije zajamčena. Poput CouchDB, lokalno sprema promjene izvan mreže i automatski se sinkronizira sa stražnjim krajem kada se poveže veza. Imajte na umu da Firebase nije dizajniran za upotrebu kao samostalno, potpuno izvanmrežno rješenje; na primjer, na Androidu su lokalne baze podataka ograničene na 10 MB prostora za pohranu.

Firebase na Google Cloudu i GitHubu

Firebase nije dostupan kao samostalni proizvod, ali dostupan je samo kao dio Googleovih ponuda proizvoda u oblaku. Spremište Firebase GitHub ima izvorni kod za SDK-ove i za razne alate specifične za platformu.

IBM Cloudant

Cloudant je u osnovi IBM hostirano izdanje CouchDB. Izvorno, Cloudant je bio neovisna tvrtka, nudeći izdanje CouchDB-a pod nazivom "BigCouch" koje je bilo hostirano na IBM-ovom oblaku SoftLayer. 2014. godine IBM je izravno stekao Cloudant kao dio sveukupnog nastojanja IBM-a prema analitici i velikim podacima. 

Cloudant protiv CouchDB

Cloudant bi trebao biti više od hostirane verzije CouchDB-a. Cloudant pruža značajke koje nisu dostupne u samom CouchDB-u, poput nativno integriranog pretraživanja cijelog teksta. Pretraživanje punog teksta u CouchDB obično zahtijeva integraciju s vanjskim projektima. Podaci se mogu replicirati u oba smjera između Cloudanta i instance CouchDB, pa je relativno lako premještati se između njih prema potrebi.

Neka poboljšanja Cloudanta u CouchDB našla su se natrag u temeljnom projektu CouchDB, uključujući funkcionalnost horizontalnog skaliranja CouchDB 2.0 i sučelje jezika upita Mango. Ali nemojte to shvatiti kao dokaz da će se značajke Cloudant automatski pretočiti na CouchDB.

Cloudant na IBM Cloudu

Cloudant je primarno ponuda oblaka na IBM Cloudu, gdje se može koristiti zajedno s drugim IBM Cloud proizvodima podataka kao što su dashDB, DataWorks i Watson Analytics.

Oblačno lokalno

Izdanje Cloudanta iza zaštitnog zida, nazvano Cloudant Local, nudi sve iste funkcije kao i ponuda u hostu u oblaku. Cloudant Local dostupan je na Ubuntu i Red Hat okusima x86 Linuxa, kao i na IBM-ovom vlastitom System z sustavu Red Hat ili Suse. Programeri mogu preuzeti besplatnu verziju samo za testiranje i razvoj na Dockerovoj slici.