NoSQL (fillimisht duke iu referuar "jo- SQL " ose "jo-relacionale") është një qasje në projektimin e bazës së të dhënave që fokusohet në ofrimin e një mekanizmi për ruajtjen dhe marrjen e të dhënave që jane modeluar në menyra të tjera perveq marrëdhënieve tabelare të përdorura në bazat e të dhënave relacionale .Në vend të strukturës tipike tabelare të një baze të dhënash relacionale, bazat e të dhënave NoSQL ruajnë të dhënat brenda një strukture të vetme të dhënash. Për shkak se ky dizajn i bazës së të dhënave jo-relacionale nuk kërkon një skemë, ai ofron shkallëzim të shpejtë për të menaxhuar grupe të mëdha dhe zakonisht të pastrukturuara të të dhënave.[2]Sistemet NoSQL quhen gjithashtu nganjëherë "Jo vetëm SQL" për të theksuar se ato mund të mbështesin gjuhë kerkimi të ngjashme me SQL ose të funksionojnë paralelisht me bazat e të dhënave SQL në arkitektura poliglote me qëndrueshmëri.[3][4]

Bazat e të dhënave jo-relacionale ekzistojnë që nga fundi i viteve 1960, por termi "NoSQL" u krijua vetëm në fillim të viteve 2000, [5] i nxitur nga nevojat në rritje të kompanive të Web 2.0. [1][2] Aktualisht, bazat e të dhënave NoSQL përdoren gjithnjë e më shpesh në menaxhimin e të dhënave të mëdha dhe në aplikacione në internet me përpunim në kohë reale. [3]

Motivimet për këtë qasje përfshijnë thjeshtësinë e dizajnit, shkallëzimin më të thjeshtë "horizontal" në grupe serveresh (një sfidë për bazat e të dhënave relacionale),[1] kontroll më të mirë mbi disponueshmërinë dhe adresimin e mospërputhjeve të impedancës objekt-relacionale. [2]Strukturat e të dhënave të përdorura nga bazat e të dhënave NoSQL (si çiftet çelës-vlerë, kolonat e gjera, grafet ose dokumentet) janë të ndryshme nga ato që përdoren zakonisht në bazat e të dhënave relacionale, duke i bërë disa operacione më të shpejta në NoSQL. Përshtatshmëria specifike e një baze të dhënash NoSQL varet nga natyra e problemit që duhet zgjidhur. Për më tepër, strukturat e të dhënave të përdorura në bazat e të dhënave NoSQL shpesh konsiderohen si "më fleksibël" sesa tabelat tradicionale të bazave të të dhënave relacionale. [3]

Shumë baza të të dhënave NoSQL bëjnë kompromis në qëndrueshmëri (sipas teoremës CAP) në favor të disponueshmërisë, tolerancës ndaj ndarjeve dhe shpejtësisë. Pengesat për adoptimin më të gjerë të bazave të të dhënave NoSQL përfshijnë përdorimin e gjuhëve të pyetjeve të nivelit të ulët (në krahasim me SQL, për shembull), mungesën e aftësisë për të kryer bashkime ad hoc midis tabelave, mungesën e ndërfaqeve të standardizuara, si dhe investimet e mëdha të mëparshme në bazat ekzistuese të të dhënave relacionale. [1] .[2] Shumicës së bazave të të dhënave NoSQL u mungojnë transaksionet e plota ACID, megjithatë disa, si MongoDB i kanë integruar ato si pjesë thelbësore të modeleve të tyre. [2]

Në vend të kësaj, shumica e bazave të të dhënave NoSQL ofrojnë një koncept të " konsistencës eventuale ", në të cilin ndryshimet e bazës së të dhënave përhapen në të gjitha nyjet "përfundimisht" (zakonisht brenda milisekondave), kështu që pyetjet për të dhënat mund të mos kthejnë të dhëna të përditësuara menjëherë ose mund të rezultojnë në leximin e të dhënave që janë jo i saktë, një problem i njohur si lexim i ndenjur .[3] Për më tepër, disa sisteme NoSQL mund të shfaqin shkrime të humbura dhe forma të tjera të humbjes së të dhënave . [2] Disa sisteme NoSQL ofrojnë koncepte të tilla si regjistrimi paraprak për të shmangur humbjen e të dhënave. [3] Për përpunimin e transaksioneve të shpërndara nëpër baza të të dhënave të shumta, konsistenca e të dhënave është një sfidë edhe më e madhe që është e vështirë si për NoSQL ashtu edhe për bazat e të dhënave relacionale. Bazat e të dhënave relacionale "nuk lejojnë kufizimet e integritetit të referencës të përfshijnë bazat e të dhënave". [4] Pak sisteme ruajnë si transaksionet ACID ashtu edhe standardet X/Open XA për përpunimin e transaksioneve të shpërndara . [5] Bazat e të dhënave relacionale ndërvepruese ndajnë teknikat e analizës së rele konformacionale si një veçori të përbashkët. [6] Kufizimet brenda mjedisit të ndërfaqes janë kapërcyer duke përdorur protokollet e virtualizimit semantik, të tilla që shërbimet NoSQL janë të aksesueshme për shumicën e sistemeve operative .[4]

Historia

Redakto

Termi NoSQL u përdor për herë të parë nga Carlo Strozzi në vitin 1998 për të emërtuar bazën e tij të të dhënave të lehta relacionale Strozzi NoSQL, me burim të hapur, e cila nuk ekspozonte ndërfaqen standarde të gjuhës së strukturuar të pyetjeve (SQL), por mbetej ende relacionale.[5] Baza e tij e të dhënave NoSQL RDBMS ndryshon nga koncepti i përgjithshëm i bazave të të dhënave NoSQL, që u zhvillua rreth vitit 2009. Strozzi sugjeron se, duke qenë se lëvizja aktuale NoSQL "largohet nga modeli relacional, ajo duhet të quhej më saktë 'NoREL'", [2] duke iu referuar "jo-relacionale".

Johan Oskarsson, në atë kohë zhvillues në Last.fm, e rifuqizoi termin NoSQL në fillim të vitit 2009, kur organizoi një ngjarje për të diskutuar mbi "bazat e të dhënave të shpërndarame burim të hapur , jo-relacionale ".[6] Ky emër u përdor për të përshkruar shfaqjen e një numri gjithnjë në rritje të bazave të të dhënave jo-relacionale dhe të shpërndara, duke përfshirë klonet me burim të hapur të Bigtable dhe MapReduce të Google, si dhe DynamoDB të Amazon.

Llojet dhe shembujt

Redakto

Ka mënyra të ndryshme për të radhitur bazat e të dhënave NoSQL, me kategori dhe nënkategori të ndryshme, disa prej të cilave mund te jene te njejta. Ajo që vijon është një klasifikim jo shterues sipas modelit të të dhënave [7]

Dyqan me vlerë-çelës

Redakto

Dyqanet kryesore-vlerë (KV) përdorin grupin shoqërues (i quajtur gjithashtu një hartë ose fjalor) si modelin e tyre themelor të të dhënave. Në këtë model, të dhënat paraqiten si një koleksion çiftesh çelës-vlerë, ku çdo çelës i mundshëm shfaqet maksimumi një herë në koleksion. [1][2]

Modeli i vlerës-kyç është një nga modelet më të thjeshta të të dhënave jo-relacionale, dhe modelet më të pasura të të dhënave shpesh zbatojnë këtë model si një zgjerim të tij. Modeli çelës-vlerë mund të zgjerohet në një model të renditur në mënyrë diskrete që ruan çelësat në rend leksikografik. Ky zgjerim është i fuqishëm nga pikëpamja llogaritëse, pasi mund të merret në mënyrë efikase vargje selektive të çelësave. [1].[8]

Dyqanet me vlerë-kyç mund të përdorin modele konsistence që variojnë nga qëndrueshmëria eventuale deri te serializimi. Disa baza të të dhënave mbështesin renditjen e çelësave. Ka implementime të ndryshme harduerike dhe disa përdorues ruajnë të dhëna në memorie (RAM), ndërsa të tjerë në disqet e gjendjes së ngurtë (SSD) ose disqe rrotulluese (njëkohësisht të njohura si hard disk drive (HDD)).

Dyqan dokumentesh

Redakto

Koncepti qendror i një dyqani dokumentesh është ai i një "dokumenti". Ndërsa detajet e këtij përkufizimi ndryshojnë midis bazave të të dhënave të orientuara nga dokumenti, të gjitha ato supozojnë se dokumentet përmbledhin dhe kodojnë të dhënat (ose informacionin) në disa formate ose kodime standarde. Kodimet në përdorim përfshijnë XML, YAML dhe JSON dhe forma binare si BSON . Dokumentet adresohen në bazën e të dhënave nëpërmjet një çelësi unik që përfaqëson atë dokument. Një karakteristikë tjetër përcaktuese e një baze të dhënash të orientuar nga dokumenti është një API ose një gjuhë pyetjesh për të marrë dokumente bazuar në përmbajtjen e tyre.

Implementime të ndryshme ofrojnë mënyra të ndryshme për të organizuar dhe/grupuar dokumentet:

  • Koleksionet
  • Etiketat
  • Meta të dhëna jo të dukshme
  • Hierarkitë e drejtorive

Në krahasim me bazat e të dhënave relacionale, koleksionet mund të krahasohen me tabelat, ndërsa dokumentet me regjistrimet. Megjithatë, ato janë të ndryshme – çdo rekord në një tabelë ka të njëjtën strukturë fushash, ndërsa dokumentet në një koleksion mund të kenë fusha të ndryshme nga njëra-tjetra.

Grafiku

Redakto

Bazat e të dhënave të grafikut janë të dizajnuara për të ruajtur të dhëna, ku marrëdhëniet midis elementëve përfaqësohen si një grafik i lidhur me një numër të kufizuar marrëdhëniesh. Shembuj përfshijnë marrëdhëniet sociale, lidhjet e transportit publik, hartat rrugore, topologjitë e rrjetit, etj.

Bazat e të dhënave të grafikut dhe gjuha e tyre e pyetjeve

Performanca

Redakto

Performanca e bazave të të dhënave NoSQL zakonisht vlerësohet duke përdorur metrikën e xhiros, e cila matet si operacione për sekondë. Vlerësimi i performancës duhet të marrë parasysh standardet e duhura, siç janë konfigurimet e prodhimit, parametrat e bazave të të dhënave, vëllimi i parashikuar i të dhënave dhe ngarkesat e njëkohshme të punës së përdoruesit.

Ben Scofield vlerësoi kategori të ndryshme të bazave të të dhënave NoSQL si në vijim: [1]

Modeli i të dhënave Performanca Shkallueshmëria Fleksibiliteti Kompleksiteti Integriteti i të dhënave Funksionaliteti
Dyqan me vlerë-çelës lartë lartë lartë asnjë të ulëta variabël (asnjë)
Dyqan i orientuar nga kolona lartë lartë i moderuar të ulëta të ulëta minimale
Dyqan i orientuar drejt dokumenteve lartë e ndryshueshme (e lartë) lartë të ulëta të ulëta e ndryshueshme (e ulët)
Baza e të dhënave grafike e ndryshueshme e ndryshueshme lartë lartë me mjekësi të ulët teoria e grafikut
Baza e të dhënave relacionale e ndryshueshme e ndryshueshme të ulëta i moderuar lartë algjebër relacionale

Krahasimet e performancës dhe shkallëzueshmërisë zakonisht kryhen duke përdorur standardin YCSB.

Trajtimi i të dhënave relacionale

Redakto

Pasi shumica e bazave të të dhënave NoSQL nuk mbështesin bashkimet në pyetje, skema e bazës së të dhënave duhet të dizajnohet ndryshe. Ekzistojnë tre teknika kryesore për trajtimin e të dhënave relacionale në një bazë të dhënash NoSQL. (Shih tabelën për Bashkimet dhe Mbështetjen ACID për bazat e të dhënave NoSQL që mbështesin bashkimet.)

Pyetje të shumta

Redakto

Në vend që të merrni të gjitha të dhënat me një pyetje, është e zakonshme të bëhen disa pyetje për të marrë të dhënat e dëshiruara. Pyetjet NoSQL janë shpesh më të shpejta se kërkesat tradicionale SQL, kështu që kostoja e pyetjeve shtesë mund të jetë e pranueshme. Nëse do të ishte i nevojshëm një numër i tepërt i pyetjeve, një nga dy qasjet e tjera është më e përshtatshme.

Caching, replikim dhe të dhëna jo të normalizuara

Redakto

Në vend që të merrni të gjitha të dhënat me një pyetje, është e zakonshme të bëhen disa pyetje për të marrë të dhënat e dëshiruara. Pyetjet NoSQL janë shpesh më të shpejta se kërkesat tradicionale SQL, kështu që kostoja e pyetjeve shtesë mund të jetë e pranueshme. Nëse do të ishte i nevojshëm një numër i tepërt i pyetjeve, një nga dy qasjet e tjera është më e përshtatshme.

Mbledhja e të dhënave

Redakto

Me bazat e të dhënave të dokumenteve si MongoDB, është e zakonshme të ruani më shumë të dhëna në një numër më të vogël koleksionesh. Për shembull, në një aplikacion blogimi, mund të zgjidhet që komentet të ruhen brenda dokumentit të postimit të blogut, në mënyrë që me një rikthim të vetëm të merren të gjitha komentet. Kështu, në këtë qasje, një dokument përmban të gjitha të dhënat e nevojshme për një detyrë specifike

ACID dhe bashkohuni me mbështetjen

Redakto

Një bazë të dhënash mund të etiketohet si mbështetëse për ACID (Atomicitet, Konsistenca, Izolimi, Qëndrueshmëria) ose operacione të bashkuara nëse dokumentacioni i saj e bën këtë pohim. Megjithatë, kjo nuk do të thotë që kjo mbështetje është e njëjtë si në shumicën e bazave të të dhënave SQL, ku këto veçori janë më të forta dhe të garantuara në mënyrë rigoroze.

Optimizimi i pyetjeve dhe indeksimi në bazat e të dhënave NoSQL

Redakto

Baza të dhënash të ndryshme NoSQL, si DynamoDB, MongoDB, Cassandra, Couchbase, HBase dhe Redis, tregojnë sjellje të ndryshme kur kërkojnë fusha që nuk janë të indeksuara. Shumë prej tyre kryejnë skanime të plota të tabelave ose koleksioneve për këto pyetje, duke aplikuar operacione filtrimi pas marrjes së të dhënave. Megjithatë, bazat moderne të të dhënave NoSQL shpesh përfshijnë funksionalitete të avancuara për të optimizuar performancën e pyetjeve. Për shembull, MongoDB mbështet indekset e përbëra dhe strategjitë e optimizimit të pyetjeve, Cassandra ofron indekse dytësore dhe pamje të materializuara, dhe Redis përdor mekanizma indekse me porosi të përshtatur për raste specifike përdorimi. Sistemet si Elasticsearch përdorin indekse të përmbysura për kërkime efikase të bazuara në tekst, por ato ende mund të kërkojnë skanime të plota për fusha që nuk janë të indeksuara. Kjo sjellje reflekton fokusin e dizajnit të shumë sistemeve NoSQL në shkallëzueshmërinë dhe operacionet efikase të bazuara në çelësa, në vend të kërkimeve të optimizuara për fusha të tjera. Si pasojë, ndërsa këto baza të dhënash janë të shkëlqyera për operacionet themelore CRUD dhe kërkimet e bazuara në çelësa, përshtatshmëria e tyre për pyetje komplekse që përfshijnë bashkime ose filtrim të pa indeksuar ndryshon në varësi të llojit të bazës së të dhënave – dokument, vlerë-çelës, kolonë të gjerë ose grafik – dhe zbatimin specifik.

Shihni gjithashtu

Redakto
  • Teorema CAP
  • Krahasimi i sistemeve të menaxhimit të bazës së të dhënave të objekteve
  • Krahasimi i softuerit të strukturuar të ruajtjes
  • C++
  • Shkallueshmëria e bazës së të dhënave
  • Cache e shpërndarë
  • Kërkim i rrafshët
  • Baza e të dhënave MultiValue
  • Baza e të dhënave me shumë modele
  • Bazat e të dhënave skema-agnostike
  • Triplestore
  • Baza e të dhënave vektoriale

Referime

Redakto
  1. ^ Leavitt, Neal (2010). "Will NoSQL Databases Live Up to Their Promise?" (PDF). IEEE Computer. 43 (2): 12–14. doi:10.1109/MC.2010.58. {{cite journal}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  2. ^ Grolinger, K.; Higashino, W. A.; Tiwari, A.; Capretz, M. A. M. (2013). "Data management in cloud environments: NoSQL and NewSQL data stores" (PDF). Aira, Springer. Marrë më 8 janar 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  3. ^ "Jepsen: MongoDB stale reads". Aphyr.com. 2015-04-20. Marrë më 2017-03-06. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  4. ^ Lawrence, Integration and virtualization of relational SQL and NoSQL systems including MySQL and MongoDB (2014). "Integration and virtualization of relational SQL and NoSQL systems including MySQL and MongoDB". International Conference on Computational Science and Computational Intelligence 1. {{cite journal}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  5. ^ Lith, Adam; Mattson, Jakob (2010). "Investigating storage solutions for large data: A comparison of well performing and scalable data storage solutions for real time extraction and batch insertion of data" (PDF). Göteborg: Department of Computer Science and Engineering, Chalmers University of Technology. fq. 70. Marrë më 12 maj 2011. Carlo Strozzi first used the term NoSQL in 1998 as a name for his open source relational database that did not offer a SQL interface[…] {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  6. ^ "NoSQL 2009". Blog.sym-link.com. 12 maj 2009. Arkivuar nga origjinali më 16 korrik 2011. Marrë më 29 mars 2010. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  7. ^ Strauch, Christof. "NoSQL Databases" (PDF). fq. 23–24. Marrë më 2017-08-27. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  8. ^ Katsov, Ilya (1 mars 2012). "NoSQL Data Modeling Techniques". Ilya Katsov. Marrë më 8 maj 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)

Lexim të mëtejshëm

Redakto

Lidhje të jashtme

Redakto
  NODES
INTERN 2