Ky artikull është një përkthim i përafërt nga një gjuhë tjetër. Përkthimi është prodhuar automatikisht dhe mund të mos jetë i saktë. Ju lutemindihmoni në përmirësimin e këtij përkthimi. |
NoSQL (fillimisht duke iu referuar "jo-SQL " ose "jo-relacionale") është një qasje në projektimin ebazës së të dhënave që fokusohet në ofrimin e një mekanizmi përruajtjen 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 meSQL 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ë edizajnit, 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, siMongoDB 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 silexim 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 esistemeve operative .[4]
TermiNoSQL 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 relacionaleStrozzi 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 NoSQLRDBMS 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 terminNoSQL 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 dheMapReduce të Google, si dheDynamoDB të Amazon.
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]
Dyqanetkryesore-vlerë (KV) përdoringrupin 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 ivlerë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 mevlerë-kyç mund të përdorin modele konsistence që variojnë ngaqëndrueshmëria eventuale deri teserializimi. 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) osedisqe rrotulluese (njëkohësisht të njohura sihard disk drive (HDD)).
Koncepti qendror i një dyqanidokumentesh ë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 dheJSON dhe formabinare siBSON . 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:
Në krahasim me bazat e të dhënave relacionale,koleksionet mund të krahasohen metabelat, ndërsadokumentet meregjistrimet. 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.
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.
Performanca e bazave të të dhënave NoSQL zakonisht vlerësohet duke përdorur metrikën exhiros, 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 eperformancës dheshkallëzueshmërisë zakonisht kryhen duke përdorur standardinYCSB.
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ërBashkimet dheMbështetjen ACID për bazat e të dhënave NoSQL që mbështesin bashkimet.)
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.
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.
Me bazat e të dhënave të dokumenteve siMongoDB, ë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
Një bazë të dhënash mund të etiketohet si mbështetëse përACID (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ënaveSQL, ku këto veçori janë më të forta dhe të garantuara në mënyrë rigoroze.
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.
{{cite journal}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite journal}}:Mungon ose është bosh parametri|language= (Ndihmë!)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ë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!);Shiko vlerat e datave në:|date= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!){{cite web}}:Mungon ose është bosh parametri|language= (Ndihmë!)