Sistemet moderne të informacionit janë mjaft të komplikuara. Një nga arsyet kryesore për këtë kompleksitet është natyra e dhënave që ato përpunojnë. Kompleksiteti i dhënave shpesh qëndron në larmishmërinë e modeleve të dhënash që përdoren. Për shembull, kur të dhënat bëhen "të mëdha", një nga karakteristikat që shkakton shqetësim është jo vetëm volume i tyre, por edhe larmishmëria e tyre.
Nëse akoma nuk po gjeni ndonjë gabim në arsyetimet, vazhdoni të lexoni.

Përmbajtja
    Â
    Â
    Â
    Â
    Â
    Â
    Â
Ruajtja polyglot
E thënë më sipër tregon se në disa raste, madje brenda një sistemi, për ruajtjen e të dhënave dhe zgjidhjen e detyrave të ndryshme të përpunimit, duhet të përdoren disa sisteme të ndryshme menaxhimi të të dhënave, secila prej të cilave mbështet modelin e vet të të dhënave. Me kontributin e M. Fowler, seri librash të njohur dhe një prej Agile Manifesto, kjo situatë mori emrin ruajtjes multi-model («polyglot persistence»).
Fowler gjithashtu ofron shembuj për organizimin e ruajtjes së të dhënave në një aplikacion plotësisht funksional dhe me ngarkesë të lartë në fushën e tregtisë elektronike.

Ky shembull është, sigurisht, disi i ekzagjeruar, por disa konsiderata për zgjedhjen e një sistemi të caktuar të menaxhimit të të dhënave për qëllime të caktuara mund të gjenden, për shembull, .
ĂshtĂ« e qartĂ« se tĂ« jesh menaxher nĂ« njĂ« tĂ« tillĂ« âzooparkâ nuk Ă«shtĂ« e lehtĂ«.
- Vëllimi i kodit që kryen ruajtjen e të dhënave rritet në proporcion me numrin e sistemeve të menaxhimit të të dhënave të përdorura; vëllimi i kodit që sinkronizon të dhënat - është mirë nëse nuk është në proporcion me katrorin e këtij numri.
- Kostoja e shfrytëzimit të DBMS rritet për të siguruar karakteristika enterprise (masë, qëndrueshmëri, disponueshmëri e lartë) për çdo DBMS të përdorur.
- Nuk Ă«shtĂ« e mundur tĂ« sigurohen karakteristikat enterprise tĂ« njĂ« nĂ«n-sistemi ruajtjeje nĂ« tĂ«rĂ«si â sidomos transaksionaliteti.
Nga këndvështrimi i drejtorit të kopshtit zoologjik, gjithçka duket kështu:
- Rritja e kësaj kostoje licencash dhe mbështetjeje teknike nga prodhuesi i DBMS.
- Rritja e numrit të punonjësve dhe zgjedhja e afateve.
- Humjet direkte financiare ose sanksionet për shkak të mos përputhjes së të dhënave.
Ka një rritje të konsiderueshme të kostos totale të pronësisë (TCO) të sistemit. A ka një dalje nga situata e "ruajtjes së shumëllojshme"?
Multimodeliteti
Termi "ruajtje e shumëllojshme" hyri në përdorim në vitin 2011. Kuptimi i problemeve të qasjes dhe kërkimi për një zgjidhje zgjati disa vite, dhe deri në vitin 2015, me gojën e analistëve të Gartner, përgjigjja u formulua:
- Nga "»:
E ardhmja e DBMS, arkitekturave tĂ« tyre dhe mĂ«nyrave tĂ« pĂ«rdorimit â multimodeliteti.
- Nga "»:
Sistemat e udhĂ«hequra tĂ« DB do tĂ« ofrojnĂ« disa modele â relacional dhe jo-relacional â nĂ« njĂ« platformĂ« tĂ« vetme.
Duket se kĂ«tĂ« herĂ« analistĂ«t e Gartner nuk kanĂ« gabuar me parashikimin. NĂ«se hyni nĂ« faqen me tĂ« DB-ve nĂ« DB-Engines, mund tĂ« shihni se shumica e liderĂ«ve tĂ« tij pozicionohen si sisteme DB multimodel. E njĂ«jta gjĂ« mund tĂ« shihet edhe nĂ« faqen me çdo vlerĂ«sim tĂ« veçantĂ«.oNĂ« tabelĂ«n mĂ« poshtĂ« janĂ« renditur sistemet DB â liderĂ« nĂ« çdo vlerĂ«sim tĂ« veçantĂ«, tĂ« cilĂ«t deklarojnĂ« multimodelizimin e tyre. PĂ«r çdo sistem DB janĂ« dhĂ«nĂ« modeli fillestar i mbĂ«shtetur (dhe dikur i vetmi) dhe, pĂ«rveç tij, modelet qĂ« mbĂ«shteten tani. Gjithashtu janĂ« pĂ«rfshirĂ« sistemet DB qĂ« pozicionohen si "fillimisht multimodel", pa ndonjĂ« model tĂ« trashĂ«guar sipas deklaratave tĂ« krijuesve.
Modeli fillestar
| DBMS | Modelet shtesë | Modelet shtesë |
|---|---|---|
| Oracle | Relacional | Grafik, dokumentar |
| MS SQL | Relacional | Grafik, dokumentar |
| PostgreSQL | Relacional | Grafik*, dokumentar |
| MarkLogic | Dokumentar | Grafik, relacional |
| MongoDB | Dokumentar | ĂelĂ«s-vlerĂ«, grafik* |
| DataStax | Kolonë e gjerë | Dokumentar, grafik |
| Redis | ĂelĂ«s-vlerĂ« | Dokumentar, grafik* |
| ArangoDB | â | Grafik, dokumentar |
| OrientDB | â | Grafik, dokumentare, relacionale |
| Azure CosmosDB | â | Grafik, dokumentare, relacionale |
Shënime për tabelën
Njëshja e tabelës është shënjuar me yje për përfundimet që kërkojnë sqarime:
- Sistemi i Menaxhimit të Bazës së të Dhënave PostgreSQL nuk mbështet modelin grafik të të dhënave, por një produkt i tillë , si, për shembull, AgensGraph.
- Sa i përket MongoDB, është më e saktë të flasim për praninë e operatorëve grafikë në gjuhën e pyetjeve (, ), sesa për mbështetje të modelit grafik, megjithëse, sigurisht, hyrja e tyre kërkonte disa optimizime në nivelin e ruajtjes fizike drejt mbështetjes së modelit grafik.
- Sa i përket Redis, i referohet zgjerimit .
MĂ« pas, pĂ«r secilĂ«n nga klasat do tĂ« tregojmĂ« se si realizohet mbĂ«shtetja pĂ«r disa modele nĂ« sistemet e menaxhimit tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave nga kjo klasĂ«. Modelet mĂ« tĂ« rĂ«ndĂ«sishme do tĂ« konsiderohen ato relacionale, dokumentare dhe grafike, dhe do tĂ« ilustrohen me shembuj nga sistemet specifike tĂ« menaxhimit tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave se si realizohen âtĂ« munguaritâ.
Sistemet multimodel mbi bazën e modelit relacional
Sistemet më të njohura të menaxhimit të bazave të dhënash aktualisht janë ato relacional, parashikimi i Gartner-it nuk do të konsiderohej i realizuar nëse DBMS-të relacionalë nuk do të tregonin lëvizje drejt multimode. Dhe ato e bëjnë këtë. Tani, mendimet që DBMS multimoidal është si një thikë zvicerane, me të cilën nuk mund të bësh asgjë mirë, mund të drejtohen menjëherë te Larry Ellison.
Megjithatë, autorit i pëlqen më shumë implementimi i multimodelit në Microsoft SQL Server, për shembullin e të cilit do të përshkruhet mbështetje e DBMS-ve për modelet dokumentar dhe grafike.
Modeli dokumentar në MS SQL Server
Për atë se si është realizuar mbështetja e modelit dokumentar në MS SQL Server, në Habrë tashmë ka qenë dy artikuj të shkëlqyer, do të bëj një përmbledhje të shkurtër dhe një koment:
Mënyra e mbështetjes së modelit dokumentar në MS SQL Server është mjaft tipike për DBMS-të relacional: dokumentet JSON propozohet të ruhen në fusha të zakonshme të tekstit. Mbështetja e modelit dokumentar konsiston në ofrimin e operatorëve të veçantë për analizimin e këtij JSON:
- për të nxjerrë vlera skalarë të atributeve,
- për të nxjerrë nën-dokumentet.
Argumenti i dytë i të dy operatorëve është një shprehje në sintaksën e ngjashme me JSONPath.
Në mënyrë abstrakte, mund të thuhet se dokumentet e ruajtura në këtë mënyrë nuk janë "entitete të klasës së parë" në një DBMS relational, për dallim nga tuple. Konkretisht, në MS SQL Server aktualisht mungojnë indekset për fushat e dokumenteve JSON, gjë që e bën të vështirë kryerjen e operacioneve të bashkimeve të tabelave mbi vlerat e këtyre fushave dhe madje edhe marrjen e dokumenteve mbi këto vlera. Megjithatë, është e mundur të krijohet një kolonë e llogaritur mbi një fushë të tillë dhe një indeks mbi të.
PĂ«r mĂ« tepĂ«r, MS SQL Server ofron mundĂ«sinĂ« e ndĂ«rtimit tĂ« lehtĂ« tĂ« njĂ« dokumenti JSON nga pĂ«rmbajtja e tabelave me ndihmĂ«n e operatorit â njĂ« mundĂ«si, nĂ« njĂ« farĂ« mĂ«nyre e kundĂ«rt me ruajtjen konvencionale. ĂshtĂ« e qartĂ« se, sa do e shpejtĂ« tĂ« jetĂ« RDBMS, ky qasje Ă«shtĂ« nĂ« kundĂ«rshtim me ideologjinĂ« e DBMS-ve dokumentar, qĂ« nĂ« thelb ruajnĂ« pĂ«rgjigje tĂ« gatshme pĂ«r kĂ«rkesat popullore, dhe mund tĂ« zgjidhĂ« vetĂ«m probleme tĂ« zhvillimit tĂ« lehtĂ«, por jo tĂ« shpejtĂ«sisĂ«.
Më në fund, MS SQL Server lejon zgjidhjen e detyrës, e cila është e kundërt me ndërtimin e dokumentit: është e mundur të shpërndahen të dhënat JSON në tabela me ndihmën e . Nëse dokumenti nuk është plote flat, do të nevojitet përdorimi i CROSS APPLY.
Modeli grafik në MS SQL Server
Mbështetje për modelin grafik (LPG) është realizuar gjithashtu në Microsoft SQL Server : rekomandohet përdorimi i tabelave speciale për ruajtjen e node-ve dhe për ruajtjen e skajet e grafit. Të tilla tabela krijohen duke përdorur shprehjet CREATE TABLE AS NODE dhe CREATE TABLE AS EDGE përkatësisht.
TĂ« dhĂ«nat e llojit tĂ« parĂ« janĂ« tĂ« ngjashme me tabelat e zakonshme pĂ«r ruajtjen e regjistrimeve me atĂ« ndryshim tĂ« jashtĂ«m qĂ« nĂ« tabelĂ« ka njĂ« fushĂ« sistematike $node_id â njĂ« identifikues unik brenda bazĂ«s sĂ« tĂ« dhĂ«nave pĂ«r nodet e grafit.
Po ashtu, tabelat e llojit të dytë kanë fusha sistematike $from_id dhe $to_id, regjistrimet në këto tabela në mënyrë të qartë përcaktojnë lidhjet midis node-ve. Për ruajtjen e lidhjeve të çdo lloji përdoret një tabelë e veçantë.
Le të ilustrojmë këtë me një shembull. Supozoni se të dhënat grafike kanë një skemë si në figurën e dhënë. Atëherë, për të krijuar strukturën përkatëse në bazën e të dhënave, duhet të ekzekutoni kërkesat DDL-të vijues:
KRIJONI TABELĂN Person (
ID INTEGER NOT NULL,
emër VARCHAR(100)
) SI NODE;
KRIJONI TABELĂN Cafe (
ID INTEGER NOT NULL,
emër VARCHAR(100),
) SI NODE;
KRIJONI TABELĂN likes (
vlerësim INTEGER
) SI EDGE;
KRIJONI TABELĂN friendOf
SI EDGE;
MODIFIKO TABELĂN likes
SHTO KUSHTIN EC_LIKES LIDHJE (Person TE Cafe);Specifika kryesore e këtyre tabelave është se në kërkesat ndaj tyre është e mundur të përdoren modele grafike me sintaksë të ngjashme me Cypher (me sa duket, "*" dhe të tjera akoma nuk mbështeten). Në bazë të matjeve të performancës, gjithashtu mund të supozojmë se mënyra e ruajtjes së të dhënave në këto tabela ndryshon nga mekanizmi i ruajtjes së të dhënave në tabelat e zakonshme dhe është optimizuar për realizimin e kërkesave të tilla grafike.
ZGJIDH CAFE.emër
NGA Person, likes, Cafe
KU KALON (Person-(friendOf)-(likes)->Cafe)
DHE Person.emĂ«r = 'John';PĂ«r mĂ« tepĂ«r, Ă«shtĂ« mjaft e vĂ«shtirĂ« gjatĂ« punĂ«s me kĂ«to tabela tĂ« mos pĂ«rdoren kĂ«to modele grafike, pasi nĂ« kĂ«rkesat e zakonshme SQL pĂ«r zgjidhjen e detyrave tĂ« ngjashme do tĂ« nevojitet tĂ« bĂ«hen pĂ«rpjekje tĂ« tjera pĂ«r tĂ« marrĂ« identifikuesit âgrafikâ sistematikĂ« tĂ« nyjeve ($node_id, $from_id, $to_id; pĂ«r kĂ«tĂ« arsye, kĂ«rkesat pĂ«r futjen e tĂ« dhĂ«nave nuk janĂ« paraqitur kĂ«tu si tepĂ«r tĂ« ngarkuara).
Duke pĂ«rmbledhjes sĂ« realizimeve tĂ« modeleve dokumentar dhe grafik nĂ« MS SQL Server, do tĂ« theksoja se kĂ«to realizime tĂ« njĂ« modeli mbi njĂ« tjetĂ«r nuk duken tĂ« suksesshme kryesisht nga pikĂ«pamja e dizajnit gjuhĂ«sor. ĂshtĂ« e nevojshme qĂ« njĂ« gjuhĂ« tĂ« shtrihet mbi tjetrĂ«n, gjuhĂ«t nuk janĂ« plotĂ«sisht "ortogonale", rregullat e pĂ«rputhshmĂ«risĂ« mund tĂ« jenĂ« mjaft tĂ« çuditshme.
Sistemet multimodel mbi bazën e modelit dokumentar
Në këtë seksion, dua të ilustroj realizimin e multimodelitetit në DBMS dokumentar duke marrë si shembull një nga ato më pak të njohura, MongoDB (siç u tha, ajo ka vetëm operatorë të kushtëzuar grafikë, $lookup dhe $graphLookup, që nuk funksionojnë në koleksionet e ndara), por duke bërë krahasimin me një DBMS më të pjekur dhe "enterprise". .
Prandaj, le të themi se koleksioni përmban një grup XML-dokumentesh të këtij lloji (MarkLogic po ashtu lejon ruajtjen e dokumenteve JSON):
John
SmithModeli relacional në MarkLogic
Paraqitja relacionale e koleksionit të dokumenteve mund të krijohet me anë të (përmbajtja e elementeve vlera në shembullin më poshtë mund të jetë një XPath të rastësishëm):
/Person
Person
SSN
@SSN
string
emri
name
mbiemri
surnameSQL- запŃĐŸŃ mund tĂ« adresohet nĂ« pamjen e krijuar (pĂ«r shembull, pĂ«rmes ODBC):
SELECT name, surname FROM Person WHERE name="John"Fatkeqësisht, pamja e marrë nga modeli është vetëm për lexim. Kur trajton një kërkesë ndaj saj, MarkLogic do të përpiqet të përdorë . Përpara, MarkLogic kishte dhe pamje të kufizuara relacionale, të ndërtuara krejtësisht dhe të aksesueshme për shkrim, por tani ato konsiderohen si të vjetra.
Modeli grafik në MarkLogic
Me mbështetje për modelin grafik (RDF) situata është shumë e ngjashme. Po ashtu me ndihmën e mund të krijoni një pamje RDF të koleksionit të dokumenteve nga shembulli më sipër:
/Person
PREFIX
"http://example.org/example#"
sem:iri( $PREFIX || @SSN )
sem:iri( $PREFIX || surname )
sem:iri( $PREFIX || @SSN )
sem:iri( $PREFIX || name )
SPARQL-i mund të dërgohet në grafikun RDF të përfituar:
PREFIX :
SELECT ?name ?surname {
:631803299804 :name ?name ; :surname ?surname .
}Ndryshe nga modeli relacional, modeli grafik i MarkLogic mbështet gjithashtu në dy mënyra të tjera:
- DBMS mund të jetë një depo e plotë e të dhënave RDF (trupat në të do të quhen në kundërshtim me ato të përshkruara më sipër ).
- RDF në një serializim të veçantë mund të thjesht shtohet në dokumente XML ose JSON (dhe trupat atëherë do të quhen ). Një alternativë e tillë është mekanizmat
idrefetj.
Një ide e mirë se si 'realiteti' funksionon në MarkLogic jep , në këtë kuptim ajo është me nivel të ulët, megjithatë qëllimi i saj është më shumë anomal, për të provuar të abstrahojë nga modelimi i të dhënave të përdorur, për të siguruar një funksionim të qëndrushëm me të dhënat në modele të ndryshme, transaksionet etj.
Sistemet multimodel "pa modelin kryesor"
Në treg gjithashtu janë të pranishme DBMS të cilat pozicionohen si fillimisht multimodel, pa pasur ndonjë model bazë të trashëguar. Ndër to janë , (që nga viti 2018, kompania zhvilluese i përket SAP) dhe (shërbim pjesë e platformës cloud Microsoft Azure).
Në të vërtetë, modelet "themelore" në ArangoDB dhe OrientDB ekzistojnë. Në të dy rastet, janë modelet e veta të të dhënave, të cilat janë përmbledhje të modelit dokumentar. Përmbledhjet lidhen kryesisht me lehtësimin e mundësive për të bërë kërkesa grafike dhe relacionale.
KĂ«to modele janĂ« tĂ« vetmet tĂ« disponueshme pĂ«r pĂ«rdorim nĂ« sistemet e specifikuara tĂ« menaxhimit tĂ« tĂ« dhĂ«nave, dhe janĂ« destinuar pĂ«r t'u pĂ«rdorur me gjuhĂ«t e tyre tĂ« kĂ«rkimit. Pa dyshim, kĂ«to modele dhe sistemet e menaxhimit tĂ« tĂ« dhĂ«nave janĂ« tĂ« perspektivshme, megjithatĂ« mungesa e pĂ«rputhshmĂ«risĂ« me modelet dhe gjuhĂ«t standarde e bĂ«n tĂ« pamundur pĂ«rdorimin e kĂ«tyre sistemeve tĂ« menaxhimit tĂ« tĂ« dhĂ«nave nĂ« sistemet trashĂ«guese â zĂ«vendĂ«simi i sistemeve tĂ« menaxhimit tĂ« tĂ« dhĂ«nave tĂ« pĂ«rdorura atje.
Për ArangoDB dhe OrientDB në Habra ka pasur një artikull të shkëlqyer: .
ArangoDB
ArangoDB deklaron mbështetje për modelin e të dhënave grafike.
Njësitë e grafit në ArangoDB janë dokumente të zakonshme, ndërsa dhjetëra janë dokumente të një lloji të veçantë, të cilat kanë, përveç fushave të zakonshme sistemike (_key, _id, _rev) fusha sistemike _from dhe _to. Dokumentet në sistemet e menaxhimit të të dhënave dokumente tradicionale grupohen në koleksione. Koleksionet e dokumenteve që përfaqësojnë dhjetëra në ArangoDB quhen edge-koleksione. Për më tepër, dokumentet e edge-koleksioneve janë gjithashtu dokumente, kështu që dhjetëra në ArangoDB mund të funksionojnë edhe si njësitë.
Të dhënat fillestare
Le të supozojmë se kemi një koleksion persons, dokumentet e të cilit duken kështu:
[
{
"_id" : "people/alice" ,
"_key" : "alice" ,
"name" : "Alisa"
},
{
"_id" : "people/bob" ,
"_key" : "bob" ,
"name" : "Bob"
}
]Të ketë gjithashtu një koleksion kafesh:
[
{
"_id" : "cafes/jd" ,
"_key" : "jd" ,
"name" : "John Donne"
},
{
"_id" : "cafes/jj" ,
"_key" : "jj" ,
"name" : "Jean-Jacques"
}
]Atëherë koleksioni pëlqime mund të duket si në vijim:
[
{
"_id" : "likes/1" ,
"_key" : "1" ,
"_from" : "persons/alice" ,
"_to" : "cafes/jd",
"since" : 2010
},
{
"_id" : "likes/2" ,
"_key" : "2" ,
"_from" : "persons/alice" ,
"_to" : "cafes/jj",
"since" : 2011
} ,
{
"_id" : "likes/3" ,
"_key" : "3" ,
"_from" : "persons/bob" ,
"_to" : "cafes/jd",
"since" : 2012
}
]Kërkesat dhe rezultatet
Një kërkesë në stilin grafit në gjuhën AQL të përdorur në ArangoDB, e cila kthen në një format të lexueshëm nga njeriu informacionet se kujt i pëlqen cila kafe, duket kështu:
FOR p IN persons
FOR c IN OUTBOUND p likes
RETURN { person : p.name , likes : c.name }Në stilin relacionale, kur ne të bëjmë më shumë "lidhje" të llogaritur, sesa i ruajmë ato, kjo kërkesë mund të rishtrohet kështu (duke e përmendur, pa koleksionin pëlqime mund të ishim mjaftuar):
FOR p IN persons
FOR l IN likes
FILTER p._key == l._from
FOR c IN cafes
FILTER l._to == c._key
RETURN { person : p.name , likes : c.name }Rezultati në të dyja rastet do të jetë i njëjtë:
[
{ "person" : "Alice" , likes : "Jean-Jacques" } ,
{ "person" : "Alice" , likes : "John Donne" } ,
{ "person" : "Bob" , likes : "John Donne" }
]Kërkesa dhe rezultate të tjera
Nëse duket se formati i rezultatit më shumë i përshtatet një DBMS relacional sesa një dokumentar, mund të provoni kështu një kërkesë (ose mund të përdorni ):
PĂR p NĂ persons
KTHYER {
person : p.name,
likes : (
PĂR c NĂ OUTBOUND p likes
KTHYER c.name
)
}Rezultati do të ketë këtë pamje:
[
{ "person" : "Alisa" , likes : ["Jean-Jacques" , "John Donne"] } ,
{ "person" : "Bob" , likes : ["John Donne"] }
]OrientDB
NĂ« thelb tĂ« implementimit tĂ« modelit grafik mbi dokumentar nĂ« OrientDB qĂ«ndron fushat e dokumenteve tĂ« kenĂ« pĂ«rveç vlerave standarde skalarĂ«, edhe vlera tĂ« tilla si LIDHJE, LISTA E LIDHJVE, GRUPI I LIDHJVE, MAPA E LIDHJVE dhe ĂANTĂ LIDHJESH. Vlerat e kĂ«tyre tipeve janĂ« referenca ose koleksione referencash ndaj e dokumenteve.
Identifikuesi që i cakton sistemi dokumentit ka "kuptim fizik", duke treguar pozitat e regjistrimit në bazë, dhe duket diçka si: @rid : #3:16. Kështu, vlerat e pronave referencuese me të vërtetë janë më shumë si tregues (si në modelin grafik), sesa kushte filtrimi (si në relacionale).
Si në ArangoDB, në OrientDB qoshet paraqiten si dokumente të veçanta (ndonëse nëse një qoshe nuk ka pronarët e saj, mund ta bëni , dhe nuk do të përputhet me një dokument të veçantë).
Të dhënat fillestare
Në një format më të afërt me të bazës OrientDB, të dhënat nga shembulli i mëparshëm për ArangoDB do të duken kështu:
[
{
"@type": "document",
"@rid": "#11:0",
"@class": "Person",
"name": "Alisa",
"out_likes": [
"#30:1",
"#30:2"
],
"@fieldTypes": "out_likes=LINKBAG"
},
{
"@type": "document",
"@rid": "#12:0",
"@class": "Person",
"name": "Bob",
"out_likes": [
"#30:3"
],
"@fieldTypes": "out_likes=LINKBAG"
},
{
"@type": "document",
"@rid": "#21:0",
"@class": "Cafe",
"name": "Zhan-Zhak",
"in_likes": [
"#30:2",
"#30:3"
],
"@fieldTypes": "in_likes=LINKBAG"
},
{
"@type": "document",
"@rid": "#22:0",
"@class": "Cafe",
"name": "Xhon Don",
"in_likes": [
"#30:1"
],
"@fieldTypes": "in_likes=LINKBAG"
},
{
"@type": "document",
"@rid": "#30:1",
"@class": "likes",
"in": "#22:0",
"out": "#11:0",
"since": 1262286000000,
"@fieldTypes": "in=LINK,out=LINK,since=date"
},
{
"@type": "document",
"@rid": "#30:2",
"@class": "likes",
"in": "#21:0",
"out": "#11:0",
"since": 1293822000000,
"@fieldTypes": "in=LINK,out=LINK,since=date"
},
{
"@type": "document",
"@rid": "#30:3",
"@class": "likes",
"in": "#21:0",
"out": "#12:0",
"since": 1325354400000,
"@fieldTypes": "in=LINK,out=LINK,since=date"
}
]Siç shohim, edhe kulmet mbajnë informacion rreth skajeve që hyjnë dhe dalin. Me API i dokumenteve për integritetin e lidhjeve kërkon mbikëqyrje manuale, ndërsa Graph API merr këtë punë mbi vete. Por le të shikojmë se si duket një kërkesë për OrientDB në gjuhë kërkese "të pastër", të paintegruara në gjuhët e programimit.
Kërkesat dhe rezultatet
Një kërkesë e ngjashme me atë që u dha për ArangoDB, në OrientDB duket kështu:
SELECT name AS person_name, OUT('likes').name AS cafe_name
FROM Person
UNWIND cafe_nameRezultati do të merret në formën e mëposhtme:
[
{ "person_name": "Alisa", "cafe_name": "John Donne" },
{ "person_name": "Alisa", "cafe_name": "Jean-Jacques" },
{ "person_name": "Bob", "cafe_name": "Jean-Jacques" }
]Nëse formati i rezultatit përsëri duket shumë "relacional", duhet të hiqet rreshti me :
[
{ "person_name": "Alisa", "cafe_name": [ "John Donne", "Jean-Jacques" ] },
{ "person_name": "Bob", "cafe_name": [ "Jean-Jacques" ] }
]Gjuha e kërkesave për OrientDB mund të karakterizohet si SQL me shtesa të ngjashme me Gremlin. Në versionin 2.2 u prezantua një formë kërkese e ngjashme me Cypher, :
MATCH {CLASS: Person, AS: person}-likes->{CLASS: Cafe, AS: cafe}
RETURN person.name AS person_name, LIST(cafe.name) AS cafe_name
GROUP BY person_nameFormati i rezultatit do të jetë i njëjtë si në kërkesën e mëparshme. Mendoni se çfarë duhet të hiqet për ta bërë atë më "relacional", si në kërkesën e parë.
Azure CosmosDB
Në një masë më të vogël, ajo që u tha më lart për ArangoDB dhe OrientDB i referohet gjithashtu Azure CosmosDB. CosmosDB ofron këto API për qasje në të dhëna: SQL, MongoDB, Gremlin dhe Cassandra.
SQL API dhe MongoDB API pĂ«rdoren pĂ«r qasje nĂ« tĂ« dhĂ«na nĂ« modelin dokumentar. Gremlin API dhe Cassandra API â pĂ«r qasje nĂ« tĂ« dhĂ«na pĂ«rkatĂ«sisht nĂ« modelin grafik dhe kolumnar. TĂ« dhĂ«nat nĂ« tĂ« gjitha modelet ruhen nĂ« formatin e modelit tĂ« brendshĂ«m tĂ« CosmosDB: («atom-record-sequence»), i cili Ă«shtĂ« gjithashtu i ngjashĂ«m me modelin dokumentar.

Por modeli i të dhënave të zgjedhur nga përdoruesi dhe API e përdorur janë të fiksuara në momentin e krijimit të llogarisë në shërbim. Nuk është e mundur të aksesosh të dhënat e ngarkuara në një model, në formatin e një modeli tjetër, gjë që do të ilustrohej me një skicë të tillë:

Në këtë mënyrë, multimodeliteti në Azure CosmosDB aktualisht paraqet vetëm një mundësi për të përdorur disa baza të dhënash, që mbështesin modele të ndryshme, nga një prodhues, gjë që nuk zgjidh të gjitha problemet e ruajtjes multi-variant.
Sistemet multimodel mbi bazën e modelit grafik?
Tërheq vëmendjen fakti se ende nuk ka DBM multisenoriale në treg që ka si bazë modelin graf. (përveç nëse numërojmë mbështetje multisenoriale për dy modele grafike: RDF dhe LPG; shihni për këtë në ). Zhvillimi më i madh paraqet realizimin mbi modelin graf të dokumentit dhe jo të relacionit.
ĂĂ«shtja se si tĂ« realizohet njĂ« model relacioni mbi modelin graf u shqyrtua qĂ« nĂ« kohĂ«t e formimit tĂ« kĂ«tij tĂ« fundit. Si , pĂ«r shembull, :
Nuk ka asgjë të inherentë në qasjen grafike që ndalon krijimin e një shtrese (e.g., me indeksem të duhur) mbi një bazë të të dhënash grafike që lejon një pamje relacioni me (1) rikuperimin e tupleve nga çifti i zakonshëm të çelësit dhe (2) grupimin e tupleve sipas llojit të relacionit.
Në realizimin e modelit të dokumentit mbi graf duhet të kemi parasysh, për shembull, gjithashtu:
- Elementet e JSON-array merren si tĂ« renditura, ndĂ«rsa ato qĂ« dalin nga maja e skelĂ«s grafike â nuk janĂ«;
- Të dhënat në modelin e dokumentit zakonisht janë denormalizuar, nuk do të doja të ruaja disa kopje të një dokumenti të njëjtë të thelluar, ndërsa për nën-dokumentet zakonisht nuk ka identifikues.
- Në anën tjetër, ideologjia e DBMS dokumenteve qëndron në faktin se dokumentet janë "agregate" të gatshme që nuk kërkojnë ndërtim të ri çdo herë. Duhet të sigurohet që në modelin graf i jepet mundësia për të marrë shpejt një nën-graf që përputhet me dokumentin e gatshëm.
Pak reklamë
Autori i artikullit Ă«shtĂ« i pĂ«rfshirĂ« nĂ« zhvillimin e DBMS NitrosBase, modeli i brendshĂ«m i tĂ« cilit Ă«shtĂ« grafor, ndĂ«rsa modelet e jashtme â relacional dhe dokumentar â janĂ« pĂ«rfaqĂ«sime tĂ« tij. TĂ« gjitha modelet janĂ« tĂ« barabarta: pothuajse çdo tĂ« dhĂ«na Ă«shtĂ« e disponueshme nĂ« cilĂ«ndo prej tyre duke pĂ«rdorur gjuhĂ«n e kĂ«rkimit qĂ« i pĂ«rshtatet. MĂ« shumĂ« se kaq, nĂ« çfarĂ«do pĂ«rfaqĂ«simi, tĂ« dhĂ«nat mund tĂ« ndryshojnĂ«. Ndryshimet do tĂ« reflektohen nĂ« modelin e brendshĂ«m dhe, pĂ«r rrjedhojĂ«, nĂ« pĂ«rfaqĂ«simet e tjera.
Se si duket pĂ«rputhja e modeleve nĂ« NitrosBase â do ta pĂ«rshkruaj, shpresoj, nĂ« njĂ« nga artikujt e ardhshĂ«m.
Përfundimi
Shpresoj se konturet e përgjithshme të asaj që quhet multimodelitet janë bërë më të qarta për lexuesin. SBU vazhdojnë të jenë mjaft të ndryshme, dhe "mbështetje për modele të shumta" mund të duket në mënyra të ndryshme. Për të kuptuar se çfarë quhet "multimodelitet" në çdo rast të caktuar, ndihmon të përgjigjemi për pyetje të mëposhtme:
- "A bëhet fjalë për mbështetje të modeleve tradicionale apo për një lloj "modeli hibrid"?"
- "A janë modelet "të barabarta", apo njëra prej tyre është e nënshtroshme për të tjerat?"
- "A janë modelet "të padëshirueshme" për njëra-tjetrën? A mund të lexohen të dhënat e shkruara në një model në një tjetër apo madje të rishkruhen?"
Mendoj se tashmë është e mundur të jepet një përgjigje pozitive për pyetjen në lidhje me relevancën e DBM-multimodel, por është interesante të dimë se cilat variacione të tyre do të kërkohen më shumë në të ardhmen e afërt. Duket se do të jenë më të kërkuara DBM-multimodel që mbështesin modelet tradicionale, së pari, atë relacional; popullariteti i DBM-multimodel që ofrojnë modele të reja që kombinojnë përfitimet e modeleve tradicionale, është një çështje e një të ardhmeje më të largët.
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , ju lutemi.
A përdorni DBM-multimodel?
Nuk përdorim, ruajmë gjithçka në një DBM dhe në një model.
Përdorim mundësitë multimodel të DBM tradicionale.
Praktikojmë ruajtjen e shumëllojshme (polyglot persistence).
Përdorim DBM-multimodel të reja (Arango, Orient, CosmosDB).
Votuan 19 përdorues. I abstenuan 4 përdorues.
Burimi: habr.com
