Podatkovne zbirke nosql: pregled, primeri in aplikacije

NoSQL je shramba, ki ne sledi relacijskemu modelu podatkovne baze in njegovim značilnostim, nima sheme, ne združuje in ne zagotavlja lastnosti ACID. Sistem NO se širi vodoravno in uporablja veliko količino glavnega pomnilnika računalnika, s čimer rešuje problem velikih količin informacij.

Lastne vrste so nova metodologija za razvoj nerelacijskih podatkovnih zbirk NoSQL, ki jih izvajajo velika podjetja za potrebe podjetij, kot sta BigTable podjetja Google, ki velja za prvi sistem NoSQL, in Amazon DynamoDB. Uspeh teh sistemov je spodbudil razvoj številnih podobnih odprtokodnih in lastniških sistemov podatkovnih baz, med katerimi so najbolj priljubljeni Hypertable, Cassandra, MongoDB, DynamoDB,

Razvoj sistema NoSQL

Problem razširljivosti SQL so prepoznala podjetja Web 2.0 z velikimi, naraščajočimi potrebami po podatkih in infrastrukturi, kot so Google, Amazon in Facebook. Našli so svoje rešitve za težave, predstavitev tehnologij BigTable, DynamoDB in Cassandra. Zaradi vse večjega zanimanja so nastali različni sistemi za upravljanje podatkovnih zbirk NoSQL (DBMS), ki se osredotočajo na zmogljivost, zanesljivost in doslednost. Številne obstoječe strukture indeksiranja so bile ponovno uporabljene in izboljšane za izboljšanje učinkovitosti iskanja in branja.

Izraz je leta 1998 skoval Calor Strozzi, leta 2009 pa ga je obudil Eric Evans, sodelavec podjetja Rackspace, da bi obravnaval težave spletnih podjetij z velikimi količinami transakcij in informacij.

Izraz je skoval Calor Strozzi

Ključna razlika med podatkovnimi zbirkami NoSQL in tradicionalnimi relacijskimi podatkovnimi zbirkami je v tem, da so prve oblika nestrukturiranega shranjevanja.

Nestrukturirano shranjevanje

Tako NoSQL nima fiksne strukture tabel kot relacijski sistem. V tej tabeli je prikazana kratka primerjava funkcij NoSQL in SQL.

Kratka primerjava funkcij

Upoštevajte, da je v tabeli prikazana primerjava na ravni podatkovne zbirke in ne na ravni DBMS, ki implementira oba modela. Ti sistemi ponujajo lastne metode za odpravo nekaterih težav in pomanjkljivosti obeh sistemov, kar močno izboljša zmogljivost in zanesljivost.

Vrste shramb informacij

Vrednost ključa NoSQL uporablja hash tabelo

Podatkovna baza podatkov NoSQL tipa ključ-vrednost uporablja hash tabelo, v kateri edinstven ključ kaže na element. Lahko jih razvrstimo v logične skupine, pri čemer se zahteva, da so znotraj njih edinstvene. To omogoča uporabo enakih ključev v različnih logičnih skupinah. Nekatere implementacije podatkovnih zbirk zagotavljajo mehanizme predpomnilnika, ki močno izboljšajo njihovo zmogljivost.

Vse, potreben za delo z elementi, shranjenimi v zbirki podatkov, je ključnega pomena. Podatki so shranjeni v v obliki niza JSON ali BLOB (velik binarni objekt). Eden od največji pomanjkljivost te oblike je pomanjkanje doslednosti na ravni podatkovne baze. To lahko dodajo programerji med razvojem podatkovne zbirke NoSQL z lastno kodo, vendar to zahteva tudi več truda zaradi zapletenosti implementacije in časa. Najbolj znana podatkovna zbirka NoSQL, ki temelji na shrambi ključ-vrednost, je Amazon DynamoDB.

Shrambe dokumentov so podobne shrambam ključ-vrednost, saj ne vsebujejo sheme in temeljijo na modelu vrednosti. Zato imata obe vrsti enako prednosti in slabosti. V obeh primerih ni doslednosti na ravni zbirke podatkov, kar aplikacijam onemogoča zagotavljanje zanesljivejših funkcij. Vendar pa med njima obstaja nekaj ključnih razlik. V shrambah dokumentov so vrednosti (dokumenti) kodiranje shranjenih podatkov. Takšna kodiranja so lahko XML, JSON ali BSON (binarna koda JSON). Najbolj priljubljena aplikacija podatkovne zbirke, ki uporablja shrambe dokumentov, je MongoDB.

Podatkovne baze družine stolpcev shranjujejo podatke v stolpcih in ne v vrsticah, kot to počne večina sistemov za upravljanje relacijskih podatkovnih baz. Trgovina s stolpci je sestavljena iz eno ali več družin stolpcev, ki logično združujejo določene stolpce v zbirki podatkov. Ključ se uporablja za identifikacijo in določitev števila stolpcev z atributom prostora ključa. Vsak stolpec vsebuje sklope imen in vrednosti, ki so urejeni in ločeni z vejicami.

Shranjevanje v stolpcih omogoča hiter dostop do shranjenih podatkov za branje in pisanje. V njem stolpci vrstice ustrezajo enemu samemu stolpcu in so na disku shranjeni kot en zapis. To omogoča hitrejši dostop pri branju/pisanju. Najbolj priljubljene podatkovne zbirke, ki uporabljajo stolpčno shrambo podatkovne zbirke NoSQL, na primer Googlova BigTable, HBase in Cassandra.

NoSQL Graph Bd uporablja usmerjeno grafno strukturo za predstavitev podatkov. Graf je sestavljen iz robov in vozlišč.

Načelo delovanja DB

Vrste shramb informacij

NoSQL deluje kot datoteka, v kateri so shranjeni vsi podatki; omogoča delo z ogromno količino informacij in njihovo organizacijo, tako da lahko uporabniki do njih dostopajo, kadar koli jih potrebujejo. Trenutno obstajajo različne vrste NoSQL, vsaka deluje drugače, večina je napisana v jeziku C ++. Za podatkovne zbirke NoSQL lahko rečemo, da svoje funkcije osredotočajo na:

  1. Vodoravna razširljivost z možnostjo povečanja velikosti, povečanja prostora za shranjevanje v zbirki podatkov brez ogrožanja sodelovati z.
  2. Tehnologija v oblaku. Večina podatkovnih zbirk NoSQL temelji na shranjevanju v oblaku, da se sprosti več prostora. Poleg tega imajo vozlišča za razmnoževanje informacij.
  3. Učinkovita uporaba virov. Podjetja so sredi tehnološkega prehoda, zato je skoraj nujno, da imajo zbirko podatkov, ki jim omogoča uvajanje novih tehnoloških orodij. Podatki NoSQL služijo prav temu - prilagodljiv model omogoča hitro prilagajanje novim orodjem.
  4. Sistem brezplačnega delovanja. NoSQL nima togega okvira, zato lahko programerji svobodno spreminjajo podatke po potrebi. To pomeni, da ni težav, če je treba spremeniti definicijo polja ali podatkovnega tipa, za razliko od podatkovnih zbirk SQL, kjer so tovrstne spremembe bolj zapletene.
  5. Hitrost odziva. Hitrost podatkovne zbirke se meri z zakasnitvijo, ki je odzivni čas, NoSQL pa skrbi za čim večje zmanjšanje zakasnitve.
  6. Uporaba indeksov. SQL in NoSQL potrebujeta indekse, saj ni mogoče poizvedovati po milijonih zapisov, če indeks ni konfiguriran. V NoSQL se indeksi ustvarijo v obliki drevesa B-Tree, kar pomeni, da so vozlišča uravnotežena, zato se poveča hitrost iskanja.

Sistemi upravljanja

Naslednja tabela prikazuje kratko primerjavo med različnimi sistemi za upravljanje podatkovnih baz NoSQL.

Sistemi upravljanja

MongoDB ima prilagodljivo shrambo shem - to pomeni, da shranjeni predmeti ne morajo imeti enake strukture ali polj. Ima tudi nekaj funkcij za optimizacijo, ki med seboj porazdelijo zbirke podatkov, kar na splošno zagotavlja boljšo zmogljivost in bolj uravnotežen sistem. Drugi sistemi Podatkovne zbirke NoSQL, kot je Apache CouchDB, so prav tako podatkovne zbirke tipa shramba dokumentov in imajo veliko skupnih funkcij z MongoDB, le da je do podatkovne zbirke mogoče dostopati prek vmesnika API RESTful.

REST je arhitekturni slog, sestavljen iz usklajenega niza arhitekturnih omejitev, ki se uporabljajo za komponente, priključke in podatkovne elemente v internetu. Temelji na komunikacijskem protokolu s predpomnilnikom "odjemalec - strežnik" brez stalne obstojnosti, kot je protokol HTTP. Aplikacije RESTful uporabljajo zahteve HTTP za objavo, branje in brisanje podatkov. Hypertable je podatkovna zbirka NoSQL, ki je napisana v jeziku C++ in temelji na Googlovi zbirki BigTable. Hypertable podpira distribucijo podatkovnih shramb na podlagi vozlišč za maksimalno skalabilnost, kot sta MongoDB in CouchDB.

Hibridni sistem Cassandra

Hibridni sistem Cassandra

Ena od najbolj razširjenih podatkovnih zbirk NoSQL je Cassandra, ki jo je razvil Facebook. Cassandrin cilj je bil ustvariti sistem DBMS, ki nima ene same točke odpovedi in zagotavlja največjo razpoložljivost. Cassandra je v bistvu zbirka podatkov za shranjevanje v obliki stolpcev. V nekaterih študijah je bil omenjen kot hibridni sistem, ki temelji na Googlovi BigTable, ki je zbirka podatkov za shranjevanje v obliki stolpcev, in Amazonovi DynamoDB, ki je zbirka tipa ključ-vrednost. Ključi v programu Cassandra kažejo na niz družin stolpcev, ki temeljijo na funkcijah razpoložljivosti porazdeljenega datotečnega sistema Google BigTable in Dynamo (porazdeljena hash tabela).

Glavne funkcije programa Cassandra vključujejo:

  1. Ni ene same točke odpovedi. Zato mora delovati v gruči vozlišč in ne v enem samem računalniku. To ne pomeni, da so podatki v vsaki gruči enaki. Če pride do okvare v enem od vozlišč, podatki v tem vozlišču niso na voljo. Vendar bodo druga vozlišča in podatki še vedno na voljo.
  2. Porazdeljeno hashanje je shema, ki zagotavlja funkcionalnost hash tabele tako, da dodajanje ali odstranjevanje ene reže ne spremeni bistveno preslikave ključev na reže. Tako lahko strežnike ali vozlišča razporedite glede na njihovo zmogljivost in zmanjšate izpade.
  3. Relativno enostaven za uporabo odjemalčev vmesnik. Za odjemalski vmesnik uporablja Apache Thrift, ki zagotavlja odjemalca RPC v več jezikih, vendar večina razvijalcev raje uporablja odprtokodne alternative, ki temeljijo na Apple Thrift, kot je Hector.
  4. Repliciranje podatkov. V bistvu zrcali podatke za druga vozlišča v gruči. Repliciranje je lahko naključno ali urejeno, da se čim bolj poveča zaščita podatkov, npr. z namestitvijo v vozlišče v drugem podatkovnem središču.
  5. Politika ločevanja določa, kje in v katero vozlišče je treba namestiti ključ. Lahko je naključen ali urejen proces. Z obema vrstama politik delitve lahko Cassandra najde ravnovesje med obremenitvijo in optimizirano zmogljivostjo poizvedb.
  6. Doslednost. Replikacija otežuje doslednost. To je zato, ker morajo biti vsa vozlišča v vsakem trenutku posodobljena z najnovejšimi vrednostmi ali ob operaciji branja.
  7. Akcije branja/pisanja. Odjemalec pošlje poizvedbo enemu vozlišču. Vozlišče v skladu s politiko replikacije shrani podatke v gručo. Vsako vozlišče najprej spremeni podatke v dnevniku potrditev in posodobi strukturo tabele, obe spremembi se izvedeta sinhrono. Zahteva za branje se pošlje enemu samemu vozlišču, ki vsebuje podatke v skladu s politiko ločevanja/prerazporeditve.

Strukture indeksiranja

Strukture indeksiranja

Indeksiranje je postopek povezovanja ključa z lokacijo ustreznega podatkovnega zapisa v DBMS. V podatkovnih zbirkah NoSQL se uporabljajo številne strukture indeksiranja podatkov. Drevo B je eden od najpogostejši indeksnih struktur v DBMS. Notranjim vozliščem omogoča, da imajo spremenljivo število podrejenih vozlišč v vnaprej določenem obsegu.

Ena glavnih razlik v primerjavi z drugimi drevesnimi strukturami, kot je AVL, je ta, da B-tree omogoča spremenljivo število podrejenih vozlišč, kar pomeni manjše uravnoteženje drevesa, vendar večjo izgubo prostora. B+Tree je ena izmed najbolj priljubljenih različic B-Tree. Ta izboljšava (za razliko od drevesa B) zahteva, da so vsi ključi v listih.

Podatkovna struktura T-Trees je bila razvita z združitvijo funkcij AVL-Trees in B-Trees. Drevesa AVL so samouravnotežena binarna iskalna drevesa, medtem ko so drevesa B neuravnotežena in ima lahko vsako vozlišče različno število otrok.

Pri drevesih T je struktura zelo podobna drevesom AVL in drevesom B. V vsakem vozlišču je shranjen več kot en tuple {ključ-vrednost, kazalec}. Poleg tega se binarno iskanje uporablja v kombinaciji z vozlišči in številnimi kupolami, da se zagotovita boljši pomnilnik in zmogljivost.

Drevo T ima tri vrste vozlišč: z desnimi in levimi podrejenimi vozlišči, ciljno vozlišče brez podrejenih vozlišč in polovično listno vozlišče s samo enim podrejenim vozliščem. Za drevesa T velja, da imajo najboljšo splošno zmogljivost.

Pogoste napake pri uporabi podatkovne zbirke

Obstajajo trije Pogoste napake, ki jih organizacije uporabljajo pri uporabi podatkov NoSQL:

  1. NoSQL je več kot le skalabilnost, ne morete enačiti NoSQL z obsegom spleta. Predhodniki sodobnih nerelacijskih podatkovnih zbirk so bila podjetja, kot sta Google in Amazon, ki so se osredotočila na reševanje težav s skalabilnostjo v spletnem okolju.
  2. Razvijalci se morajo razvijati. Pri nekem vrhunskem spletnem projektu je slabo izbrana skupina za integracijo povzročila veliko težavo, za njeno odpravo pa je bil potreben čas in milijoni dolarjev.
  3. Zapleteno razmnoževanje. Znanje in izkušnje v procesu izvajanja ali upravljanja niso nadomestilo za znanje in izkušnje. Zgodi se, da se poizvedba, ki na lokalnem razvojnem računalniku deluje hitro, ne bo horizontalno razširila na več sto računalnikov. Sodobna aplikacija ima porazdeljeno arhitekturo in več uporabnikov hkrati, kar zahteva hitre odzive.

Prednosti NoSQL

Podatkovne zbirke NoSQL in SQL so konkurenčne, vendar imajo po mnenju številnih strokovnjakov prve več prednosti pred tradicionalnimi relacijskimi podatkovnimi zbirkami:

  1. imajo preprosto in prilagodljivo strukturo.
  2. Ni sheme.
  3. Temelji na parih "ključ-vrednost".
  4. Nekatere vrste vključujejo shranjevanje stolpcev, dokumentov, ključnih vrednosti, grafov, predmetov, XML in drugih načinov podatkov.
  5. Običajno ima vsaka vrednost v zbirki podatkov ključ. Nekatera skladišča omogočajo razvijalcem, da shranjujejo serializirane predmete in ne le preprostih vrednosti nizov.
  6. Odprtokodni sistemi NoSQL ne zahtevajo dragih licenčnin in lahko delujejo na poceni strojni opremi, zato je njihovo uvajanje stroškovno učinkovito.
  7. Z NoSQL, ne glede na to, ali gre za odprtokodne ali lastniške sisteme, je razširitev enostavnejša in cenejša, kot pri delovanju z relacijskimi podatkovnimi bazami. To se doseže s horizontalnim razširjanjem in porazdelitvijo obremenitve na vsa vozlišča namesto vertikalnega razširjanja, ki se običajno izvaja v sistemih relacijskih podatkovnih zbirk, pri čemer se glavni gostitelj nadomesti z zmogljivejšim.

Pomanjkljivosti sistema No-system

Podatkovne zbirke NoSQL delujejo različno, vse je odvisno od dokumentov, ki so v njih shranjeni, vendar lahko rečemo, da so pomembno orodje v sodobnih podjetjih, saj hranijo potrebne informacije o uporabnikih in operacijah.

Niso popolni, zato niso vedno pravilna izbira za programerje. С ena stran, Večina teh sistemov ne podpira funkcij zanesljivosti, ki so značilne za sisteme relacijskih podatkovnih zbirk. Te značilnosti zanesljivosti lahko povzamemo kot atomičnost, doslednost, izoliranost in trajnost. To pomeni, da se pri uporabi podatkov NoSQL, ki teh funkcij ne podpirajo, doslednost zamenjuje za zmogljivost in razširljivost.

Za podporo funkcijam zanesljivosti in doslednosti morajo razvijalci uvesti svojo lastno kodo, kar povečuje zapletenost sistema. To omejuje število aplikacij, ki se lahko zanašajo na NoSQL za varne in zanesljive transakcije, npr. bančni sistemi.

Aplikacija podatkovne zbirke NoSQL

Uporaba podatkovne zbirke NoSQL

Akademiki, inženirji, arhitekti programske opreme, oblikovalci aplikacij in programerji potrebujejo poglobljeno znanje o podatkovnih strukturah, ki prej ni bilo potrebno za relacijske podatkovne zbirke. Vodilni na trgu sta Hadoop in MongoDB, sledita jima "Cassandra", "Redis", CouchDB in "Riacom". Trenutne študije kažejo, da med sistemskimi inženirji, arhitekti in arhitekti prevladujeta dva izdelka NOSQL programska oprema, Razvijalci med ducatom podobnih tehnologij so MongoDB in Hadoop.

Trg kaže, da velika podjetja uporabljajo nove metodologije razvoja podatkovnih baz NoSQL in jih vključujejo v svoje izdelke (Oracle, IBM). Trg podatkovnih zbirk počasi postaja standard s sistemi PasS, Redis in MongoDB, Edlich. Izdelki, kot so Neo4j, MongoDb in CouchDb, so bili namenjeni podpori tveganega kapitala in naložbam.

Članki na tem področju