logo

Įvadas į NoSQL

NoSQL yra duomenų bazių valdymo sistemos (DBVS) tipas, skirtas tvarkyti ir saugoti didelius nestruktūrizuotų ir pusiau struktūrizuotų duomenų kiekius. Skirtingai nuo tradicinių reliacinių duomenų bazių, kuriose duomenims saugoti naudojamos lentelės su iš anksto nustatytomis schemomis, NoSQL duomenų bazėse naudojami lankstūs duomenų modeliai, kurie gali prisitaikyti prie duomenų struktūrų pokyčių ir gali keisti mastelį horizontaliai, kad galėtų apdoroti didėjantį duomenų kiekį.

Terminas „NoSQL“ iš pradžių reiškė ne SQL arba ne reliacines duomenų bazes, tačiau nuo to laiko šis terminas reiškė ne tik SQL, nes NoSQL duomenų bazės išsiplėtė ir apima daugybę skirtingų duomenų bazių architektūrų ir duomenų modelių.

NoSQL duomenų bazės paprastai skirstomos į keturias pagrindines kategorijas:

  1. Dokumentų duomenų bazės: Šiose duomenų bazėse duomenys saugomi kaip pusiau struktūriniai dokumentai, pvz., JSON arba XML, ir gali būti pateikiamos užklausos naudojant į dokumentus orientuotas užklausų kalbas.
  2. Pagrindinės vertės parduotuvės: Šios duomenų bazės saugo duomenis kaip raktų ir reikšmių poras ir yra optimizuotos paprastoms ir greitoms skaitymo / rašymo operacijoms.
  3. Kolonėlės-šeimos parduotuvės: Šios duomenų bazės saugo duomenis kaip stulpelių šeimas, kurios yra stulpelių rinkiniai, traktuojami kaip vienas objektas. Jie yra optimizuoti greitam ir efektyviam didelio duomenų kiekio užklausoms.
  4. Grafikų duomenų bazės: Šios duomenų bazės saugo duomenis kaip mazgus ir briaunas ir yra skirtos sudėtingiems duomenų santykiams tvarkyti.

„NoSQL“ duomenų bazės dažnai naudojamos programose, kuriose yra daug duomenų, kuriuos reikia apdoroti ir analizuoti realiuoju laiku, pavyzdžiui, socialinės žiniasklaidos analizė, el. prekyba ir žaidimai. Jie taip pat gali būti naudojami kitoms programoms, tokioms kaip turinio valdymo sistemos, dokumentų valdymas ir ryšių su klientais valdymas.



Tačiau NoSQL duomenų bazės gali būti netinkamos visoms programoms, nes jos gali nesuteikti tokio paties lygio duomenų nuoseklumo ir sandorių garantijų kaip tradicinės reliacinės duomenų bazės. Renkantis duomenų bazių valdymo sistemą svarbu atidžiai įvertinti konkrečius programos poreikius.

NoSQL iš pradžių reiškia ne SQL arba ne reliacinį, tai yra duomenų bazė, kuri suteikia duomenų saugojimo ir gavimo mechanizmą. Šie duomenys modeliuojami kitomis priemonėmis nei reliacinėse duomenų bazėse naudojami lentelių santykiai. Tokios duomenų bazės atsirado septintojo dešimtmečio pabaigoje , tačiau gavo NoSQL pravardę tik išpopuliarėjo dvidešimt pirmojo amžiaus pradžioje. NoSQL duomenų bazės naudojamos realaus laiko žiniatinklio programose ir dideliuose duomenyse, o jų naudojimas laikui bėgant didėja.

  • NoSQL sistemos taip pat kartais vadinamos ne tik SQL, siekiant pabrėžti faktą, kad jos gali palaikyti į SQL panašias užklausų kalbas. NoSQL duomenų bazė apima dizaino paprastumą, paprastesnį horizontalų mastelio keitimą į mašinų grupes, turi ir tikslesnė pasiekiamumo kontrolė. Duomenų struktūros, naudojamos NoSQL duomenų bazėse, skiriasi nuo tų, kurios pagal numatytuosius nustatymus naudojamos reliacinėse duomenų bazėse, todėl kai kurios operacijos NoSQL yra greitesnės. Konkrečios NoSQL duomenų bazės tinkamumas priklauso nuo problemos, kurią ji turėtų išspręsti.
  • NoSQL duomenų bazės, dar žinomos kaip ne tik SQL duomenų bazės, yra naujo tipo duomenų bazių valdymo sistema, kuri turi , pastaraisiais metais išpopuliarėjo. Skirtingai nuo tradicinių reliacinių duomenų bazių, NoSQL duomenų bazės yra skirtos tvarkyti didelius nestruktūrizuotų arba pusiau struktūrizuotų duomenų kiekius ir gali pritaikyti dinaminius duomenų modelio pakeitimus. Dėl to NoSQL duomenų bazės puikiai tinka šiuolaikinėms žiniatinklio programoms, realaus laiko analizei ir didelių duomenų apdorojimui.
  • Duomenų struktūros, naudojamos NoSQL duomenų bazėse, kartais taip pat laikomos lankstesnėmis nei reliacinės duomenų bazių lentelės. Daugelis „NoSQL“ parduotuvių daro kompromisą dėl nuoseklumo dėl prieinamumo, greičio, , ir pertvarų tolerancija. Kliūtys plačiau naudoti NoSQL parduotuves yra žemo lygio užklausų kalbų naudojimas, standartizuotų sąsajų trūkumas ir didžiulės ankstesnės investicijos į esamas reliacines duomenų bazes.
  • Daugumoje NoSQL parduotuvių trūksta tikrų ACID (atomumo, nuoseklumo, izoliacijos, patvarumo) operacijų, tačiau kelios duomenų bazės, tokios kaip MarkLogic, Aerospike, FairCom c-treeACE, Google Spanner (nors techniškai yra NewSQL duomenų bazė), Symas LMDB ir OrientDB, jas sukūrė. jų dizaino pagrindas.
  • Dauguma NoSQL duomenų bazių siūlo galimo nuoseklumo koncepciją, kai duomenų bazės pakeitimai perduodami visiems mazgams, todėl užklausos dėl duomenų gali ne iš karto grąžinti atnaujintus duomenis arba gali nuskaityti duomenis, kurie nėra tikslūs, o tai yra problema, vadinama pasenusiu skaitymu. Taip pat turi kai kuriose NoSQL sistemose gali būti prarasti įrašai ir kiti duomenų praradimo būdai. Kai kurios NoSQL sistemos siūlo tokias sąvokas kaip įrašymas į priekį, kad būtų išvengta duomenų praradimo.
  • Vienas paprastas NoSQL duomenų bazės pavyzdys yra dokumentų duomenų bazė. Dokumentų duomenų bazėje duomenys saugomi dokumentuose, o ne lentelėse. Kiekviename dokumente gali būti skirtingas laukų rinkinys, todėl lengva prisitaikyti prie besikeičiančių duomenų reikalavimų
  • Pavyzdžiui, paimkite, pavyzdžiui, duomenų bazę, kurioje saugomi duomenys apie darbuotojus. Reliacinėje duomenų bazėje ši informacija gali būti saugoma lentelėse, kuriose viena lentelė skirta informacijai apie darbuotojus, o kita – skyriaus informacijai. Dokumentų duomenų bazėje kiekvienas darbuotojas būtų saugomas kaip atskiras dokumentas, o visa jo informacija būtų įtraukta į dokumentą.
  • NoSQL duomenų bazės yra palyginti naujo tipo duomenų bazių valdymo sistema a pastaraisiais metais išpopuliarėjo dėl savo mastelio ir lankstumo. Jie skirti tvarkyti didelius nestruktūrizuotų arba pusiau struktūrizuotų duomenų kiekius ir gali tvarkyti dinaminius duomenų modelio pakeitimus. Dėl to NoSQL duomenų bazės puikiai tinka šiuolaikinėms žiniatinklio programoms, realaus laiko analizei ir didelių duomenų apdorojimui.

Pagrindinės NoSQL savybės:

  1. Dinaminė schema: NoSQL duomenų bazėse nėra fiksuotos schemos ir jos gali prisitaikyti prie besikeičiančių duomenų struktūrų, nereikalaujant perkėlimo ar schemos pakeitimų.
  2. Horizontalus mastelio keitimas: „NoSQL“ duomenų bazės sukurtos taip, kad būtų padidintos mastelį, pridedant daugiau mazgų prie duomenų bazės klasterio, todėl jos puikiai tinka tvarkyti didelius duomenų kiekius ir didelį srautą.
  3. Dokumentų pagrindu: Kai kurios NoSQL duomenų bazės, pvz., MongoDB, naudoja dokumentais pagrįstą duomenų modelį, kuriame duomenys saugomi pusiau struktūrizuotu formatu be schemų, pvz., JSON arba BSON.
  4. Pagal rakto vertę: Kitos NoSQL duomenų bazės, pvz., Redis, naudoja rakto-reikšmių duomenų modelį, kuriame duomenys saugomi kaip raktų ir reikšmių porų rinkinys.
  5. Pagal stulpelius: Kai kurios NoSQL duomenų bazės, pvz., Cassandra, naudoja stulpeliais pagrįstą duomenų modelį, kai duomenys suskirstomi į stulpelius, o ne eilutes.
  6. Paskirstytas ir didelis prieinamumas: NoSQL duomenų bazės dažnai yra sukurtos taip, kad būtų labai prieinamos ir automatiškai tvarkytų mazgų gedimus bei duomenų replikaciją keliuose mazguose duomenų bazės klasteryje.
  7. Lankstumas: „NoSQL“ duomenų bazės leidžia kūrėjams lanksčiai ir dinamiškai saugoti ir gauti duomenis, palaikant kelis duomenų tipus ir keičiant duomenų struktūras.
  8. Spektaklis: NoSQL duomenų bazės yra optimizuotos siekiant didelio našumo ir gali apdoroti didelį skaitymo ir rašymo kiekį, todėl jos tinka dideliems duomenims ir realaus laiko programoms.

„NoSQL“ pranašumai: Yra daug privalumų dirbant su NoSQL duomenų bazėmis, tokiomis kaip MongoDB ir Cassandra. Pagrindiniai privalumai yra didelis mastelio keitimas ir didelis prieinamumas.

  1. Didelis mastelio keitimas: NoSQL duomenų bazės naudoja dalijimąsi horizontaliam mastelio keitimui. Duomenų skaidymas ir jų talpinimas keliuose kompiuteriuose taip, kad būtų išsaugota duomenų tvarka, yra suskaidymas. Vertikalus mastelio keitimas reiškia, kad esamam įrenginiui reikia pridėti daugiau išteklių, o horizontalus mastelio keitimas reiškia, kad reikia pridėti daugiau įrenginių duomenims apdoroti. Vertikalus mastelio keitimas nėra taip paprasta įgyvendinti, bet horizontalų mastelį lengva įgyvendinti. Horizontalaus mastelio keitimo duomenų bazių pavyzdžiai yra „MongoDB“, „Cassandra“ ir kt. „NoSQL“ gali apdoroti didžiulį duomenų kiekį dėl mastelio, nes duomenims didėjant NoSQL mastelis Automobilis pati efektyviai tvarkyti tuos duomenis.
  2. Lankstumas: NoSQL duomenų bazės yra skirtos tvarkyti nestruktūrizuotus arba pusiau struktūrinius duomenis, o tai reiškia, kad jos gali pritaikyti dinaminius duomenų modelio pakeitimus. Dėl to NoSQL duomenų bazės puikiai tinka programoms, kurioms reikia tvarkyti kintančius duomenų reikalavimus.
  3. Didelis prieinamumas: Automobilis , replikacijos funkcija NoSQL duomenų bazėse daro ją labai prieinamą, nes bet kokio gedimo atveju duomenys atkartoja į ankstesnę nuoseklią būseną.
  4. Mastelio keitimas: NoSQL duomenų bazės yra labai keičiamos, o tai reiškia, kad jos gali lengvai valdyti didelius duomenų kiekius ir srautą. Dėl to jie puikiai tinka programoms, kurioms reikia tvarkyti didelius duomenų kiekius arba srautą
  5. Spektaklis: „NoSQL“ duomenų bazės yra sukurtos valdyti didelius duomenų kiekius ir srautą, o tai reiškia, kad jos gali pasiūlyti geresnį našumą, palyginti su tradicinėmis reliacinėmis duomenų bazėmis.
  6. Kainos efektyvumas: NoSQL duomenų bazės dažnai yra ekonomiškesnės nei tradicinės reliacinės duomenų bazės, nes jos paprastai yra ne tokios sudėtingos ir nereikalauja brangios techninės ar programinės įrangos.
  7. Agility: Idealiai tinka judriam vystymuisi.

NoSQL trūkumai: NoSQL turi šiuos trūkumus.

  1. Standartizacijos trūkumas: Yra daug skirtingų NoSQL duomenų bazių tipų, kurių kiekviena turi savo unikalias stipriąsias ir silpnąsias puses. Dėl standartizacijos trūkumo gali būti sunku pasirinkti tinkamą duomenų bazę konkrečiai programai
  2. RŪGŠTIS atitikties trūkumas: NoSQL duomenų bazės nėra visiškai suderinamos su ACID, o tai reiškia, kad jos negarantuoja duomenų nuoseklumo, vientisumo ir patvarumo. Tai gali būti trūkumas programoms, kurioms reikalingos tvirtos duomenų nuoseklumo garantijos.
  3. Siauras fokusas: NoSQL duomenų bazės yra labai siauros, nes jos daugiausia skirtos saugojimui, tačiau teikia labai mažai funkcijų. Reliacinės duomenų bazės yra geresnis pasirinkimas operacijų valdymo srityje nei NoSQL.
  4. Atviro kodo: NoSQL yra duomenų bazėje atvirojo kodo duomenų bazė. Patikimo NoSQL standarto dar nėra. Kitaip tariant, dvi duomenų bazių sistemos greičiausiai bus nelygios.
  5. Sudėtingų užklausų palaikymo trūkumas: NoSQL duomenų bazės nėra skirtos sudėtingoms užklausoms tvarkyti, o tai reiškia, kad jos netinkamos programoms, kurioms reikalinga sudėtinga duomenų analizė ar ataskaitų teikimas.
  6. Subrendimo trūkumas: NoSQL duomenų bazės yra palyginti naujos ir joms trūksta tradicinių reliacinių duomenų bazių brandos. Dėl to jos gali būti mažiau patikimos ir mažiau saugios nei tradicinės duomenų bazės.
  7. Valdymo iššūkis: Didžiųjų duomenų įrankių paskirtis – kuo paprastesnį didelio duomenų kiekio valdymą. Bet tai nėra taip paprasta. Duomenų valdymas NoSQL yra daug sudėtingesnis nei reliacinėje duomenų bazėje. Visų pirma „NoSQL“ turi reputaciją dėl to, kad ją diegti sudėtinga, o kasdien valdyti – dar labiau įtemptą.
  8. GUI negalima: GUI režimo įrankiai, leidžiantys pasiekti duomenų bazę, nėra lanksčiai prieinami rinkoje.
  9. Atsarginė kopija: Atsarginė kopija yra puiki kai kurių NoSQL duomenų bazių, tokių kaip MongoDB, silpnoji vieta. MongoDB neturi nuoseklaus duomenų atsarginės kopijos kūrimo metodo.
  10. Didelis dokumento dydis: Kai kurios duomenų bazių sistemos, tokios kaip MongoDB ir CouchDB, saugo duomenis JSON formatu. Tai reiškia, kad dokumentai yra gana dideli (BigData, tinklo pralaidumas, greitis), o aprašomieji raktų pavadinimai iš tikrųjų kenkia, nes jie padidina dokumento dydį.

NoSQL duomenų bazės tipai: NoSQL duomenų bazių tipai ir duomenų bazių sistemos, kuri patenka į tą kategoriją, pavadinimas:

  1. Grafikų duomenų bazės : Pavyzdžiai – Amazon Neptune, Neo4j
  2. Pagrindinės vertės saugykla: Pavyzdžiai – „Memcached“, „Redis“, „Coherence“.
  3. Stulpelis: Pavyzdžiai – Hbase, Big Table, Accumulo
  4. Dokumentų pagrindu: Pavyzdžiai – MongoDB, CouchDB, Cloudant

Kada reikia naudoti NoSQL:

  1. Kai reikia saugoti ir atkurti didžiulį duomenų kiekį.
  2. Ryšys tarp jūsų saugomų duomenų nėra toks svarbus
  3. Duomenys laikui bėgant keičiasi ir nėra struktūrizuoti.
  4. Apribojimų ir sujungimų palaikymas duomenų bazės lygiu nereikalingas
  5. Duomenys nuolat auga ir jums reikia reguliariai keisti duomenų bazę, kad galėtumėte tvarkyti duomenis.

Apibendrinant galima pasakyti, kad NoSQL duomenų bazės, palyginti su tradicinėmis reliacinėmis duomenų bazėmis, turi keletą pranašumų, tokių kaip mastelio keitimas, lankstumas ir ekonomiškumas. Tačiau jie taip pat turi keletą trūkumų, tokių kaip standartizacijos trūkumas, ACID atitikties trūkumas ir sudėtingų užklausų palaikymo trūkumas. Renkantis konkrečios programos duomenų bazę, svarbu atidžiai pasverti privalumus ir trūkumus, kad būtų galima nustatyti tinkamiausią.