Programavimas

„NoSQL“ išskirtiniai: geriausios dokumentų duomenų bazės

„Tinkamas įrankis tinkamam darbui“. Jei tokia išmintis pasitvirtina bet kurioje vietoje, ji tikrai tinka pasirinkus duomenų bazę, kurią kūrėjas pasirenka konkrečiai programai. Dokumentų duomenų bazės, viena iš duomenų produktų grupės, kartu vadinama „NoSQL“, yra skirtos kūrėjams, norintiems sutelkti dėmesį į savo taikymas o ne duomenų bazių technologija.

Naudojant dokumentų duomenų bazę, duomenys nėra saugomi lentelėse su atskirais stulpelių tipais. Vietoj to, jis saugomas laisvos formos „dokumentuose“ su bet kokiu laukų skaičiumi ir bet kuriuo įdėtų struktūrų skaičiumi. Tokie dokumentai paprastai pateikiami kaip JSON ir atnaujinami naudojant API arba siunčiant JSON į REST galinį tašką. Dauguma kiekvienos šiuolaikinės programavimo kalbos palaiko JSON ir REST, todėl dirbant su dokumentų duomenų baze labiau patinka dirbti natūraliai su tomis duomenų struktūromis, nei su tradicine duomenų baze.

Šis bešemis dizainas, kaip jis vadinamas, turi savo apribojimus. Kūrėjas turi atlikti daugiau darbo, kad užtikrintų įterptų duomenų nuoseklumą, nes tokią nuoseklumą ne visada garantuoja pati duomenų bazė. SQL, standartinės problemos ir plačiai suprantamos kalbos duomenų bazės darbui, nepalaiko dauguma dokumentų duomenų bazių, todėl tie, kurie turi duomenų bazių patirties, turi pradėti nuo nulio. Tačiau dokumentų duomenų bazės patogumui, greičiui, masteliui ir universalumui sunku įveikti, kai rašote programą, kuriai reikalinga protinė, laisvos formos duomenų struktūra.

Čia apžvelgėme septynias geriausiai žinomas ir plačiausiai naudojamas dokumentų duomenų bazes. Keturi iš septynių - „CouchDB“, „Couchbase Server“, „MongoDB“ ir „RethinkDB“ - yra atvirojo kodo projektai, turintys nedaug praktinių kliūčių pradžiai; „Couchbase“ ir „MongoDB“ taip pat galima įsigyti palaikomuose įmonės leidimuose pagal komercines licencijas. Kiti trys - „Amazon DynamoDB“, „Google Firebase“ ir „IBM Cloudant“ - yra pagrindinių debesų tiekėjų priglobtos paslaugos, kur glaudus integravimasis su kitomis tose debesyse esančiomis paslaugomis yra didelis bruožas.

Žr. Toliau pateiktą lentelę, kad palygintumėte funkcijas; slinkite į dešinę lentelėje, kad pamatytumėte visus stulpelius, naudodamiesi slinkties juosta apačioje. Skaitykite trumpai apie kiekvieną duomenų bazę.

Raktas: L= „Linux“, W= „Windows“, M= „MacOS“, S= „Solaris“, = „iOS“, A= „Android“, O= kitas mobilusis,

1. Šią funkciją gali suteikti trečiųjų šalių įrankiai. 2. Vienoje lentelėje. 3. Tik „Enterprise“ leidimas. 4. Tik peržiūrėti funkcijas. 5. Daugelio dokumentų operacijos taip pat yra prieinamos, bet ne suskaidytose grupėse.

 „Amazon DynamoDB“„Cosmos DB“„Couchbase“„CouchDB“„Google Firebase“„IBM Cloudant“MarkLogicMongoDBDar kartą pagalvokiteDB
PlatformosTik debesysTik debesysLWMLWMIAOTik debesysTik debesysLWMSLWMSLWM
Užklausų sistemosREST API„MongoDB“ laidinis protokolasMemchached protokolas, REST APIREST APIREST / „JavaScript“ APIREST APIREST APIJSON pagrindu sukurta API, dalinė REST API„ReQL“ užklausos kalba, REST API
SQL užklausos Nr. 1TaipPer N1QL kalbą Ne Ne Ne Taip Nr. 1 Ne
Stiprus spausdinimasTaipTaipTaip Ne Taip Ne XML schemomsTaipTaip
Gimtoji prisijungia Ne TaipTaip Ne Ne Ne TaipTaipTaip
Dalijimo skaidymasTaipTaipTaipTaipNATaipTaipTaipTaip2
Grupavimas NA TaipTaipTaip NA NA TaipTaipTaip
ReplikacijaTaipTaipTaipTaip NA TaipTaipTaipVienoje lentelėje
Nuoseklumas: nedelsiantPer perskaitytąTaipUž bendrą Ne Susieti klientai Ne TaipUž rašytiVienam dokumentui
Nuoseklumas: galiausiaiTaipTaipTaipTaipNeprisijungę klientaiTaipTaipTaipVisa duomenų bazė
LygiagretumasTaipTaipTaipTaipTaipTaipTaipTaipTaip
Operacijos atmintyje NA NA Ne Ne NA Ne NA Taip 3 Ne
Saugomos procedūros Ne „JavaScript“„JavaScript “4„JavaScript“Taisyklės„JavaScript “4„XQuery“ modulis„JavaScript“ Ne
SandoriaiPagal programąTaipVieningi dokumentaiVieningi dokumentaiTaipVieningi dokumentaiVieningi dokumentaiBendrieji dokumentaiVieningi dokumentai
Dabartinė versijaNANA5.0 (2017 m. Spalis)2.1.1 (2017 m. Lapkričio mėn.)NANA9.0 (2016 m. Gegužė)3.4.10 (2017 m. Spalis)2.3.6 (2017 m. Liepa)
Pirminis leidimas201220172011200520122010200520092009

„Amazon DynamoDB“

„Amazon“ „DynamoDB“ dokumentų parduotuvė savo gyvenimą pradėjo 2012 m., Kaip „Amazon“ „SimpleDB“ plėtinį. Po variklio dangčiu jį valdo svarbiausių prekių parduotuvė „Dynamo“. Vėliau „DynamoDB“ kūrėjas pasinaudojo daugeliu tų pačių idėjų ir sukūrė „Apache Cassandra“.

„DynamoDB“ funkcijos

Kaip ir dauguma kitų „Amazon“ siūlomų debesų, „DynamoDB“ yra mokama einant už tai, ko jums reikia valdoma paslauga. Kūrėjai nustato, kiek saugyklos talpos turi būti nestruktūruoti dokumentai arba raktų ir reikšmių poros, ir nustato vienodą valandos įkainio limitą skaitymo ir rašymo užklausoms į duomenų bazę. Nereikia teikti serverių ar konfigūruoti replikacijos - „Amazon“ visa tai tvarko po dangteliais ir neseniai pridėjo automatinį mastelio keitimą.

Natūralu, kad „DynamoDB“ siūlo kūrėjams naudingą integraciją su kitomis „Amazon“ debesies paslaugomis. Paleidiklius, pavyzdžiui, galima nustatyti naudojant „AWS Lambda“ funkcijas. „Amazon“ BI ir analizės įrankiai taip pat yra netoliese. Šių paslaugų artumas yra patogus, tačiau tai taip pat reiškia, kad „Amazon“ gali padidinti funkcionalumą įvairiais būdais. Pavyzdžiui, talpyklą ir pagreitį „a la Redis“ galima įsigyti naudojant „DynamoDB Accelerator“, papildomą kainą.

„DynamoDB Local“

„DynamoDB“ nerasite atviro kodo įsikūnijime. Jis prieinamas tik kaip „Amazon“ debesies priglobtas pasiūlymas.

Tuo tarpu, skirtingai nei daugelyje kitų „cloud-native“ duomenų bazių, „DynamoDB“ taip pat yra versijoje, kurią galima atsisiųsti ir paleisti vietoje. Tačiau „DynamoDB Local“ nėra skirtas naudoti gamyboje, bet kaip būdas nustatyti programą bandomojoje aplinkoje, nereikalaujant ryšio ar vykdant „Amazon“ sąskaitą.

„Microsoft Azure Cosmos“ DB

„Cosmos DB“ yra ambicingas projektas - duomenų bazių sistema, apimanti kelis modelius, skirtus duomenims saugoti ir gauti. „Cosmos DB“ gali tarnauti kaip dokumentų duomenų bazė, stulpelių duomenų bazė, diagramų duomenų bazė arba raktų reikšmių saugykla, leidžianti vartotojui pasirinkti jam tinkamą paradigmą ir pasinaudoti įvairiomis API, kad dirbtų su tomis paradigmomis.

„Cosmos DB“ funkcijos

Užuot išradusi visiškai naują API duomenų bazių sistemai, „Cosmos DB“ suteikia API, suderinamą su populiaria „MongoDB“ (aptarta toliau). Tarp privalumų yra tai, kad esamas kodas, kuriame naudojamos „MongoDB“ sąsajos bibliotekos arba „MongoDB“ dvejetainio laido protokolas, gali veikti kaip yra. Tai reiškia, kad „Cosmos DB“ gali teikti „MongoDB“ kaip paslaugą. Taip pat „Cosmos DB“ palaiko „Cassandra“, populiarios stulpelių šeimos duomenų bazės, API.

„Microsoft“ pristato keletą „Cosmos DB“ pranašumų, kurie nebūtinai priklauso tik nuo jos dokumentų duomenų bazės funkcionalumo, tačiau yra skirti toms statybinių dokumentų duomenų bazių programoms. Vienas iš tokių pasiūlymų yra derinamas nuoseklumo lygis. Jei turite kai kurias dokumentų operacijų klases, kurioms reikia didesnio nuoseklumo visuose „Azure“ regionuose nei kiti, galite jas rankiniu būdu nurodyti kiekvienai operacijai.

Kitos funkcijos yra labiau būdingos dokumentų duomenų bazėms. Pavyzdžiui, „MongoDB“ vartotojai turi sukurti dokumentų rinkinių rodykles, kad optimizuotų paieškas. „Cosmos DB“ vartotojams, dirbantiems su „MongoDB“ API, nereikia nustatyti dokumentų indeksavimo, nes kiekviena įterpto dokumentuoto turto ypatybė automatiškai indeksuojama.

„Cosmos DB“ naudojimas „Microsoft Azure“

Nėra vietoje priglobtos „Cosmos DB“ versijos. Tai pasiekiama tik kaip paslauga „Microsoft Azure“ debesyje. Be to, „Cosmos DB“ kūrimo API yra prieinamos daugumai visų populiarių įmonės kalbų - „Java“, „Node.js“, .NET ir „Python“.

„Couchbase“ serveris

„Couchbase“ yra ne tiek „CouchDB“ brolis, kiek jo įpėdinis. „Couchbase“ buvo sukurta pagal „CouchDB“ ir „Membase“ atliktus darbus, tačiau nėra susijusi su nė vienu iš šių projektų. Tai dokumentų duomenų bazė ir paskirstyta raktų vertės saugykla, sujungta į vieną, su pažangiomis funkcijomis, tokiomis kaip automatinis perjungimas ir kryžminis duomenų centrų replikavimas, skirtas įmonėms.

„Couchbase“ funkcijos

Viena savybė, išskirianti „Couchbase“ ne tik iš kitos „NoSQL“ konkurencijos, bet ir iš pirmtako „CouchDB“, yra į SQL panaši užklausų kalba, vadinama N1QL (tariama „nikelis“). N1QL nesiūlo visų komandų, kurių galėtumėte tikėtis iš ANSI SQL diegimo, bet suteikia pakankamai naudingų funkcijų, tokių kaip JOIN operacijos, kad kažkas, turintis SQL patirties, galėtų gauti veiksmingų rezultatų.

„Couchbase“ užklausų sistema skirta ne tik kūrėjams, bet ir DBA bei verslo analitikams, kurie paprastai užsiima įprastinėmis duomenų bazėmis. Panašu, kad tokios funkcijos kaip raktinis žodis „EXPLAIN“ buvo pritaikytos būtent tam, kad pritrauktų minią.

Kaip derinių dokumentų duomenų bazė ir raktų reikšmių saugykla, „Couchbase“ saugo dokumentus naudodama unikalius jų identifikatorius kaip raktą. Dokumentams taip pat gali būti priskirtos laikas, per kurį gyva, kad jie veiktų kaip rakto vertės talpykla. Be to, tikra raktų vertės talpyklų sistema, tokia kaip „Redis“, bus daug greitesnė, norint išsaugoti pagrindines raktų vertės vertes, tačiau „Couchbase“ yra lankstesnė, o „Redis“ ir „Couchbase“ galima efektyviai sujungti, kad viskas paspartėtų. Atsižvelgiant į tai, „Couchbase“ palaiko „Memcached“ protokolą, todėl esamos programos, naudojančios „Memcached“, gali būti prijungtos prie „Couchbase“ kaip pakaitalo.

„Couchbase“ bendruomenė ir įmonė

„Couchbase Server“ yra visiškai parduodamas verslo leidimas, nemokamas bendruomenės leidimas ir atvirojo kodo leidimas, kuris yra kitų pamatas. Dvejetainius įmonės ir bendruomenės leidimo atsisiuntimus galima rasti „Couchbase“ svetainėje, o šaltinio kodą - „Couchbase“ kūrėjų svetainėje. („Couchbase“ atvirojo kodo projektui nėra vienos „GitHub“ saugyklos, nes tai yra kelių projektų visuma.)

Bendruomenės leidimą galima naudoti gamyboje, tačiau jame nėra pažangesnių įmonių leidimo funkcijų, taip pat palaikymo, todėl nepirkite pirkėjo. Kai kurios „Couchbase“ funkcijos, pavyzdžiui, horizontalaus mastelio keitimo funkcionalumas, pateko į „CouchDB“ projektą, tačiau tai daugiau išimtis nei taisyklė.

„Couchbase Lite“

Kitas „Couchbase“ leidimas, kurį verta atkreipti dėmesį į programų kūrėjus, yra „Couchbase Lite“, įterpiama „Couchbase“ versija, kuri gali sinchronizuoti su pilnaverčio leidimo egzemplioriais. „Couchbase Lite“ yra pagrindinis „Couchbase Mobile“ komponentas - programų krūva, skirta mobiliosioms programoms, kurioms reikalinga duomenų saugykla, automatiškai sinchronizuojama su galine. „Couchbase Mobile“ galima naudoti „iOS“, „Android“, „Java“. . „Net“, „MacOS“ ir „tvOS“.

„CouchDB“

„CouchDB“ projektą 2005 m. Pradėjo buvęs IBM kūrėjas, o 2008 m. Jis persikėlė į „Apache Software Foundation“. Kartais manoma, kad „CouchDase“ yra „CouchDase“ pagrindas, tačiau „CouchDB“ ir „Couchbase“ yra lygiagretūs projektai, turintys skirtingus tikslus.

„CouchDB“ ir „Couchbase“

Nors „Couchbase“ yra ir dokumentų duomenų bazė, ir raktų reikšmių saugykla, „CouchDB“ yra griežtai dokumentų duomenų bazė. Ir nors „Couchbase“ jau seniai daug dėmesio skyrė tokioms įmonės funkcijoms kaip tolerancija gedimams ir į SQL panaši užklausų kalba, tokie gėrybės tik pradeda pasirodyti „CouchDB“.

„CouchDB“ funkcijos

„CouchDB“ pabrėžia įdiegimo paprastumą ir paprastą naudojimą. Duomenis iš duomenų bazės gauti taip pat paprasta, kaip siųsti JSON formato užklausas į REST HTTPS galutinį tašką, o rezultatai pateikti JSON. Dažniausiai kiekviena šiuolaikinė programavimo kalba gali tai padaryti, taip pat atlikti atvaizdavimą ir redukciją, reikalingą norint sukurti „CouchDB“ užklausų ir ataskaitų rodinius. Nereikia nei ODBC tvarkyklės, nei duomenų jungties.

Vienas iš specialių „CouchDB“ padažų yra duomenų suderinimo technologija. Vieno „CouchDB“ bendraamžio atlikti pakeitimai automatiškai derinami su kitais, panašiai kaip versijų valdymo sistema. Bet kokie konfliktai tarp dokumento versijų išlieka taip, lyg tai būtų ankstesnės to dokumento pataisos.

Šis galiausiai nuoseklus modelis yra naudingas duomenų bazėms, kurios nėra visada ar nuosekliai sujungtos (pvz., Su pertraukomis sujungtoms mobiliosioms programoms), arba tais atvejais, kai jums nereikia naujausios ir geriausios duomenų versijos konkrečiame mazge. Tačiau galutinis nuoseklumas taip pat yra vienas didžiausių „CouchDB“ įspėjimų. Jei tu padaryti reikia skubaus nuoseklumo, „CouchDB“ nėra ta vieta, kur jo rasti.

„CouchDB“ mastelis jau seniai buvo silpna vieta, tačiau pastaruoju metu jis buvo išspręstas. Versija 2.0 sujudino naują klasterių technologiją, sutinkamai su bitais, kuriuos atidarė „Cloudant“ / IBM ir sujungė su projektu. Galiausiai tiems, kurie yra susipažinę su „MongoDB“ ir nori naudoti panašią deklaratyvios užklausos sintaksę, „Mango“ projektas, taip pat iš „Cloudant“ / IBM, numato tai kaip išorinį priedą.

Atsisiųsti „CouchDB“

Visų pagrindinių platformų „CouchDB“ dvejetainius failus ir šaltinio kodą galima atsisiųsti iš oficialios „CouchDB“ svetainės. Projekto šaltinį taip pat galima rasti „GitHub“.

„Google Firebase“ realaus laiko duomenų bazė

Galite manyti, kad „Google Firebase“ yra „Google“ atsakymas į „DynamoDB“ - tai būdas greitai sinchronizuoti duomenų saugyklą tarp debesies vidinės programos ir vietinių programų keliose platformose.

„Firebase“ realaus laiko duomenų bazė yra tik vienas iš „Firebase“ rietuvės komponentų, skirtas kurti programas, reikalaujančias auditorijos įtraukimo ir įžvalgumo. Visas kaminas apima tokias funkcijas kaip autentifikavimas, našumo stebėjimas, vartotojų analizė ir daugelis kitų, tačiau čia mes sutelkiame dėmesį į pačią „Firebase“.

„Google Firebase“ funkcijos

„Google“ įsigijo „Firebase“ 2014 m. Nuo to laiko ji prijungė „Firebase“, kad galėtų pasinaudoti daugeliu „Google Cloud“ funkcijų. Pavyzdžiui, „Firebase“ skirtos „Google“ debesies funkcijos leidžia suaktyvinti „JavaScript“ funkcijas debesyje reaguojant į „Firebase“ įvykius. „Google Analytics“, skirta „Firebase“, leidžia giliau išanalizuoti programų mobiliesiems duomenis į „BigQuery“.

Žaidimai yra viena iš tikslinių „Firebase“ programų, todėl „Firebase“ pateiktuose SDK yra „Unity“ kelių platformų žaidimų kūrimo sistema. Kūrėjai, dirbantys prie labiau įprastų į įmonę orientuotų ar vartotojams skirtų projektų, turi daugybę kitų pasirinkimų: „iOS“ ir „Android“, „C ++“, bendrąjį žiniatinklį / „JavaScript“ ir bet kurią kitą kalbą, palaikančią REST („Java“, „Python“, jūs taip vadinate).

„Firebase“ sukurta veikti tokiais atvejais, kai ryšys nėra garantuotas. Kaip ir „CouchDB“, jis talpykloje keičiasi neprisijungus ir automatiškai sinchronizuojamas su galine dalimi, kai grąžinamas ryšys. Atminkite, kad „Firebase“ nėra skirta naudoti kaip atskirą, visiškai neprisijungus naudojamą sprendimą; Pavyzdžiui, „Android“ vietinėse duomenų bazėse saugoma tik 10 MB.

„Firebase“ „Google Cloud“ ir „GitHub“

„Firebase“ nėra atskiras produktas, bet yra tik „Google“ debesies produktų pasiūlymų dalis. „Firebase GitHub“ saugykloje yra SDK ir įvairių platformos įrankių šaltinio kodas.

„IBM Cloudant“

„Cloudant“ iš esmės yra IBM talpinamas „CouchDB“ leidimas. Iš pradžių „Cloudant“ buvo nepriklausoma įmonė, siūlanti „CouchDB“ leidimą „BigCouch“, kuris buvo talpinamas IBM „SoftLayer“ debesyje. 2014 m. „IBM“ visiškai įsigijo „Cloudant“ kaip dalį bendro IBM siekio analizės ir didelių duomenų srityje.

Debesuota prieš CouchDB

„Cloudant“ turėtų būti daugiau nei priglobta „CouchDB“ versija. „Cloudant“ teikia tokias funkcijas, kurių nėra pačioje „CouchDB“, pvz., Savaime integruotą viso teksto paiešką. Viso teksto paieškai CouchDB paprastai reikia integruoti su išoriniais projektais. Duomenis galima pakartoti abiem kryptimis tarp „Cloudant“ ir „CouchDB“ egzempliorių, todėl, jei reikia, palyginti lengva judėti tarp abiejų.

Kai kurie „Cloudant“ „CouchDB“ patobulinimai grįžo į pagrindinį „CouchDB“ projektą, įskaitant „CouchDB 2.0“ horizontalaus mastelio keitimo funkciją ir „Mango“ užklausos kalbos sąsają. Tačiau nelaikykite to įrodymu, kad „Cloudant“ funkcijos bus automatiškai nukreiptos į „CouchDB“.

Debesuota apie „IBM Cloud“

„Cloudant“ pirmiausia yra debesies pasiūlymas „IBM Cloud“, kur jis gali būti naudojamas kartu su kitais „IBM Cloud“ duomenų produktais, tokiais kaip „dashDB“, „DataWorks“ ir „Watson Analytics“.

Debesuota vietinė

Už ugniasienės „Cloudant“ leidimas, pavadintas „Cloudant Local“, siūlo visas tas pačias funkcijas kaip ir debesyje priglobtas pasiūlymas. „Cloudant Local“ galima įsigyti naudojant „x86 Linux“ „Ubuntu“ ir „Red Hat“ skonius, taip pat „IBM“ nuosavą „System z“, kuriame veikia „Red Hat“ arba „Suse“. Kūrėjai gali atsisiųsti nemokamą, tik „test-and-dev“ versiją „Docker“ vaizde.

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