Is-sistemi moderni tal-informazzjoni huma pjuttost kumplessi. Mhux l-inqas, il-kumplessità tagħhom hija dovuta għall-kumplessità tad-dejta pproċessata fihom. Il-kumplessità tad-dejta ħafna drabi tinsab fil-varjetà tal-mudelli tad-dejta użati. Allura, pereżempju, meta d-dejta ssir "kbir", waħda mill-karatteristiċi problematiċi mhix biss il-volum tagħha ("volum"), iżda wkoll il-varjetà tagħha ("varjetà").
Jekk għadek ma ssibx difett fir-raġunament, imbagħad aqra.

Kontenut
Persistenza poliglotta
Dan t'hawn fuq iwassal għall-fatt li xi drabi anke fi ħdan il-qafas ta 'sistema waħda huwa meħtieġ li jintużaw diversi DBMSs differenti biex jaħżnu d-dejta u jsolvu diversi problemi ta' pproċessarhom, li kull waħda tappoġġja l-mudell tad-dejta tagħha stess. Bl-id ħafifa ta’ M. Fowler, numru ta’ kotba famużi u wieħed minn Agile Manifest, din is-sitwazzjoni tissejjaħ ħażna multi-varjanti (“persistenza poliglotta”).
Fowler għandu wkoll l-eżempju li ġej ta 'organizzazzjoni tal-ħażna tad-dejta f'applikazzjoni sħiħa u b'tagħbija għolja fil-qasam tal-kummerċ elettroniku.

Dan l-eżempju, ovvjament, huwa kemmxejn esaġerat, iżda jistgħu jinstabu xi kunsiderazzjonijiet favur l-għażla ta 'DBMS wieħed jew ieħor għall-iskop korrispondenti, pereżempju, .
Jidher ċar li li tkun qaddej f’tali zoo mhix faċli.
- L-ammont ta 'kodiċi li jwettaq ħażna tad-dejta jikber fi proporzjon għan-numru ta' DBMSs użati; l-ammont ta 'data ta' sinkronizzazzjoni tal-kodiċi huwa tajjeb jekk mhux proporzjonali għall-kwadru ta 'dan in-numru.
- Bħala multiplu tan-numru ta 'DBMSs użati, l-ispejjeż biex jiġu pprovduti karatteristiċi ta' intrapriża (skalabbiltà, tolleranza għall-ħsarat, disponibbiltà għolja) ta 'kull wieħed mid-DBMSs użati jiżdiedu.
- Huwa impossibbli li jiġu żgurati l-karatteristiċi tal-intrapriża tas-subsistema tal-ħażna kollha kemm hi - speċjalment it-tranżazzjoni.
Mil-lat tad-direttur taż-żoo, kollox jidher bħal dan:
- Żieda multipla fl-ispiża tal-liċenzji u l-appoġġ tekniku mill-manifattur tad-DBMS.
- Persunal żejjed u skadenzi miżjuda.
- Telf finanzjarju dirett jew penali minħabba inkonsistenza tad-dejta.
Hemm żieda sinifikanti fl-ispiża totali tas-sjieda (TCO) tas-sistema. Hemm xi mod kif toħroġ mis-sitwazzjoni ta '"għażliet ta' ħażna multipli"?
Multi-mudell
It-terminu "ħażna multivarjata" daħal fl-użu fl-2011. L-għarfien tal-problemi tal-approċċ u t-tfittxija għal soluzzjoni ħadu bosta snin, u sal-2015, permezz tal-fomm tal-analisti Gartner, it-tweġiba ġiet ifformulata:
- Minn ""
Il-futur tad-DBMSs, l-arkitetturi tagħhom u l-modi kif jużawhom huwa multi-mudell.
- Minn ""
DBMSs operattivi ewlenin se joffru mudelli multipli—relazzjonali u mhux relazzjonali—bħala parti minn pjattaforma waħda.
Jidher li din id-darba l-analisti ta’ Gartner kellhom raġun bit-tbassir tagħhom. Jekk tmur fil-paġna ma DBMS fuq DB-Engines, tista 'tara danоĦafna mill-mexxejja tagħha jpoġġu lilhom infushom speċifikament bħala DBMSs b'ħafna mudelli. L-istess jista 'jidher fuq il-paġna bi kwalunkwe klassifikazzjoni privata.
It-tabella hawn taħt turi d-DBMS - il-mexxejja f'kull waħda mill-klassifikazzjonijiet privati, li jsostnu li huma multi-mudell. Għal kull DBMS, il-mudell oriġinali appoġġjat (li darba kien l-uniku wieħed) u flimkien miegħu l-mudelli appoġġjati bħalissa huma indikati. Huma elenkati wkoll DBMSs li jpoġġu lilhom infushom bħala "oriġinarjament multi-mudell" u, skont il-ħallieqa, m'għandhom l-ebda mudell inizjali wiret.
| DBMS | Mudell inizjali | Mudelli addizzjonali |
|---|---|---|
| Oracle | Relazzjonali | Graff, dokument |
| MS SQL | Relazzjonali | Graff, dokument |
| PostgreSQL | Relazzjonali | Graff*, dokument |
| MarkLogic | Dokumentarju | Graff, relazzjonali |
| MongoDB | Dokumentarju | Valur ewlieni, graff* |
| DataStax | Wide-kolonna | Dokumentarju, graff |
| Ddistribwit mill- | Valur ewlieni | Dokumentarju, graff* |
| ArangoDB | - | Graff, dokument |
| OrientDB | - | Graff, dokument, relazzjonali |
| Azure CosmosDB | - | Graff, dokument, relazzjonali |
Noti fuq il-mejda
L-asterisks fit-tabella jimmarkaw dikjarazzjonijiet li jeħtieġu riżervi:
- Il-DBMS PostgreSQL ma jappoġġjax il-mudell tad-dejta tal-graff, iżda dan il-prodott jappoġġjah , bħal AgensGraph.
- Fir-rigward ta 'MongoDB, huwa aktar korrett li titkellem dwar il-preżenza ta' operaturi tal-grafiċi fil-lingwa tal-mistoqsija (, ) milli dwar l-appoġġ tal-mudell tal-graff, għalkemm, ovvjament, l-introduzzjoni tagħhom kienet teħtieġ xi ottimizzazzjonijiet fil-livell tal-ħażna fiżika fid-direzzjoni tal-appoġġ tal-mudell tal-graff.
- Fir-rigward ta’ Redis, irridu nfissru l-estensjoni .
Sussegwentement, għal kull waħda mill-klassijiet, se nuru kif l-appoġġ għal diversi mudelli huwa implimentat fid-DBMS minn din il-klassi. Se nikkunsidraw il-mudelli relazzjonali, tad-dokumenti u tal-grafiċi bħala l-aktar importanti u nużaw eżempji ta 'DBMSs speċifiċi biex nuru kif "dawk neqsin" huma implimentati.
DBMS multi-mudell ibbażat fuq il-mudell relazzjonali
L-DBMSs ewlenin bħalissa huma relazzjonali t-tbassir ta 'Gartner ma setgħetx titqies vera jekk RDBMSs ma wrewx moviment fid-direzzjoni ta' multi-mudellar. U juru. Issa l-idea li DBMS b'ħafna mudelli hija bħal sikkina Żvizzera, li ma tista 'tagħmel xejn tajjeb, tista' tiġi diretta direttament lil Larry Ellison.
L-awtur, madankollu, jippreferi l-implimentazzjoni ta 'multi-mudellar f'Microsoft SQL Server, li fuq l-eżempju tiegħu se jiġi deskritt l-appoġġ RDBMS għal mudelli ta' dokumenti u graffs.
Mudell tad-dokument fl-MS SQL Server
Diġà kien hemm żewġ artikoli eċċellenti dwar Habré dwar kif MS SQL Server jimplimenta l-appoġġ għall-mudell tad-dokument.
Il-mod kif tappoġġja l-mudell tad-dokument fl-MS SQL Server huwa pjuttost tipiku għal DBMSs relazzjonali: dokumenti JSON huma proposti li jinħażnu f'oqsma ta 'test ordinarji. L-appoġġ għall-mudell tad-dokument huwa li jipprovdi operaturi speċjali biex janalizzaw dan il-JSON:
- biex jiġu estratti valuri ta' attribut skalari,
- biex jiġu estratti sotto-dokumenti.
It-tieni argument taż-żewġ operaturi huwa espressjoni f'sintassi bħal JSONPath.
Astrattament, nistgħu ngħidu li d-dokumenti maħżuna b'dan il-mod mhumiex "entitajiet tal-ewwel klassi" f'DBMS relazzjonali, b'differenza tuples. Speċifikament, f'MS SQL Server bħalissa m'hemm l-ebda indiċi fuq l-oqsma tad-dokumenti JSON, li jagħmilha diffiċli li tgħaqqad it-tabelli billi tuża l-valuri ta 'dawn l-oqsma u anke tagħżel dokumenti li jużaw dawn il-valuri. Madankollu, huwa possibbli li tinħoloq kolonna kkalkulata għal qasam bħal dan u indiċi fuqha.
Barra minn hekk, MS SQL Server jipprovdi l-abbiltà li jibni b'mod konvenjenti dokument JSON mill-kontenut tat-tabelli bl-użu tal-operatur - possibbiltà, f'ċertu sens, opposta għal dik preċedenti, ħażna konvenzjonali. Huwa ċar li ma jimpurtax kemm hu mgħaġġel RDBMS, dan l-approċċ jikkontradixxi l-ideoloġija tad-DBMSs ta 'dokumenti, li essenzjalment jaħżnu tweġibiet lesti għal mistoqsijiet popolari, u jistgħu biss isolvu problemi ta' faċilità ta 'żvilupp, iżda mhux veloċità.
Fl-aħħarnett, MS SQL Server jippermettilek issolvi l-problema inversa tal-kostruzzjoni tad-dokumenti: tista 'tiddekomponi JSON f'tabelli billi tuża . Jekk id-dokument ma jkunx kompletament ċatt, ser ikollok bżonn tuża CROSS APPLY.
Mudell tal-grafika f'MS SQL Server
L-appoġġ għall-mudell tal-graff (LPG) huwa wkoll implimentat bis-sħiħ f'Microsoft SQL Server : Huwa propost li jintużaw tabelli speċjali biex jinħażnu n-nodi u biex jinħażnu t-truf tal-graffs. Tabelli bħal dawn huma maħluqa bl-użu ta 'espressjonijiet CREATE TABLE AS NODE и CREATE TABLE AS EDGE rispettivament.
Tabelli tal-ewwel tip huma simili għal tabelli ordinarji għall-ħażna tar-rekords, bl-unika differenza esterna tkun li t-tabella fiha qasam tas-sistema $node_id — identifikatur uniku ta' nodu tal-graff fid-database.
Bl-istess mod, it-tabelli tat-tieni tip għandhom oqsma tas-sistema $from_id и $to_id, entrati f'tabelli bħal dawn jiddefinixxu b'mod ċar il-konnessjonijiet bejn in-nodi. Tabella separata tintuża biex taħżen relazzjonijiet ta 'kull tip.
Ejja nuru dan b'eżempju. Ħalli d-dejta tal-graff ikollha tqassim bħal dak muri fil-figura. Imbagħad biex toħloq l-istruttura korrispondenti fid-database għandek bżonn tmexxi l-mistoqsijiet DDL li ġejjin:
CREATE TABLE Person (
ID INTEGER NOT NULL,
name VARCHAR(100)
) AS NODE;
CREATE TABLE Cafe (
ID INTEGER NOT NULL,
name VARCHAR(100),
) AS NODE;
CREATE TABLE likes (
rating INTEGER
) AS EDGE;
CREATE TABLE friendOf
AS EDGE;
ALTER TABLE likes
ADD CONSTRAINT EC_LIKES CONNECTION (Person TO Cafe);L-ispeċifiċità ewlenija ta 'tabelli bħal dawn hija li fi mistoqsijiet kontrihom huwa possibbli li jintużaw mudelli ta' graff b'sintassi bħal Cypher (madankollu, "*"eċċ. għadhom mhumiex appoġġjati). Ibbażat fuq il-kejl tal-prestazzjoni, wieħed jista’ jassumi wkoll li l-mod kif id-dejta tinħażen f’dawn it-tabelli huwa differenti mill-mod kif id-dejta tinħażen f’tabelli regolari u hija ottimizzata biex tesegwixxi tali mistoqsijiet tal-graffs.
SELECT Cafe.name
FROM Person, likes, Cafe
WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
AND Person.name = 'John';Barra minn hekk, huwa pjuttost diffiċli li ma tużax dawn il-mudelli tal-graff meta taħdem ma 'tabelli bħal dawn, peress li f'mistoqsijiet SQL ordinarji biex issolvi problemi simili jkun meħtieġ li jsiru sforzi addizzjonali biex jinkisbu identifikaturi tan-nodi "graff" tas-sistema ($node_id, $from_id, $to_id; Għall-istess raġuni, mistoqsijiet għall-inserzjoni tad-data mhumiex murija hawnhekk peress li huma ingombranti bla bżonn).
Biex tiġbor fil-qosor id-deskrizzjoni tal-implimentazzjonijiet tad-dokument u l-mudelli tal-graff f'MS SQL Server, nixtieq ninnota li implimentazzjonijiet bħal dawn ta 'mudell wieħed fuq ieħor ma jidhrux ta' suċċess, primarjament mil-lat tad-disinn tal-lingwa. Huwa meħtieġ li tiġi estiża lingwa ma' oħra, il-lingwi mhumiex kompletament "ortogonali", ir-regoli ta 'kompatibilità jistgħu jkunu pjuttost strambi.
DBMS multi-mudell ibbażat fuq il-mudell tad-dokument
F'din it-taqsima, nixtieq turi l-implimentazzjoni ta 'multi-mudell fid-dokument DBMSs bl-użu ta' l-eżempju ta 'l-aktar popolari minnhom, MongoDB (kif intqal, għandu biss operaturi graffs kondizzjonali $lookup и $graphLookup, ma jaħdmux fuq kollezzjonijiet sharded), iżda bl-użu ta 'l-eżempju ta' DBMS aktar matur u "intrapriża" .
Allura, ħalli l-kollezzjoni jkun fiha sett ta 'dokumenti XML tat-tip li ġej (MarkLogic jippermettilek ukoll taħżen dokumenti JSON):
<Person INN="631803299804">
<name>John</name>
<surname>Smith</surname>
</Person>Mudell relazzjonali f'MarkLogic
Veduta relazzjonali ta 'ġbir ta' dokumenti tista 'tinħoloq bl-użu (kontenut ta' elementi value fl-eżempju hawn taħt jista' jkun hemm XPath arbitrarju):
<template >
<context>/Person</context>
<rows>
<row>
<view-name>Person</view-name>
<columns>
<column>
<name>SSN</name>
<value>@SSN</value>
<type>string</type>
</column>
<column>
<name>name</name>
<value>name</value>
</column>
<column>
<name>surname</name>
<value>surname</value>
</column>
</columns>
</row>
<rows>
</template>Tista' tindirizza l-veduta maħluqa b'mistoqsija SQL (per eżempju, permezz ta' ODBC):
SELECT name, surname FROM Person WHERE name="John"Sfortunatament, il-veduta relazzjonali maħluqa mill-mudell tal-wiri hija ta 'qari biss. Meta tipproċessa talba għaliha, MarkLogic jipprova juża . Preċedentement, MarkLogic kellu fehmiet relazzjonali limitati, għal kollox u jistgħu jinkitbu, iżda issa huma meqjusa bħala deprecated.
Mudell tal-grafika f'MarkLogic
Bl-appoġġ għall-mudell tal-graff (RDF), kollox huwa madwar l-istess. Għal darb'oħra bl-għajnuna Tista' toħloq rappreżentazzjoni RDF ta' ġabra ta' dokumenti mill-eżempju ta' hawn fuq:
<template >
<context>/Person</context>
<vars>
<var>
<name>PREFIX</name>
<val>"http://example.org/example#"</val>
</var>
</vars>
<triples>
<triple>
<subject><value>sem:iri( $PREFIX || @SSN )</value></subject>
<predicate><value>sem:iri( $PREFIX || surname )</value></predicate>
<object><value>xs:string( surname )</value></object>
</triple>
<triple>
<subject><value>sem:iri( $PREFIX || @SSN )</value></subject>
<predicate><value>sem:iri( $PREFIX || name )</value></predicate>
<object><value>xs:string( name )</value></object>
</triple>
</triples>
</template>Tista' tindirizza l-grafika RDF li tirriżulta b'mistoqsija SPARQL:
PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
:631803299804 :name ?name ; :surname ?surname .
}B'differenza minn dik relazzjonali, MarkLogic jappoġġja l-mudell tal-graff b'żewġ modi oħra:
- DBMS jista 'jkun ħażna separata sħiħa ta' data RDF (triplets fiha se jissejħu b’kuntrast ma’ dawk deskritti hawn fuq ).
- RDF f'serialization speċjali jista 'sempliċement jiddaħħal f'dokumenti XML jew JSON (u mbagħad jissejħu triplets ). Din hija probabbilment alternattiva għall-mekkaniżmi
idrefeċċ
Idea tajba ta 'kif l-affarijiet "verament" jaħdmu f'MarkLogic tingħata minn , f'dan is-sens, huwa ta 'livell baxx, għalkemm l-iskop tiegħu huwa pjuttost l-oppost - li jipprova jastratta mill-mudell tad-data użat, biex jiżgura xogħol konsistenti ma' data f'mudelli differenti, transazzjonalità, eċċ.
DBMS b'ħafna mudelli "mingħajr mudell ewlieni"
Hemm ukoll DBMSs fis-suq li jippożizzjonaw lilhom infushom bħala inizjalment multi-mudell, mingħajr ebda mudell prinċipali wiret. Dawn jinkludu , (mill-2018 il-kumpanija tal-iżvilupp tappartjeni lil SAP) u (servizz bħala parti mill-pjattaforma cloud Microsoft Azure).
Fil-fatt, hemm mudelli "qalba" f'ArangoDB u OrientDB. Fiż-żewġ każijiet, dawn huma l-mudelli tad-dejta tagħhom stess, li huma ġeneralizzazzjonijiet tad-dokument wieħed. Il-ġeneralizzazzjonijiet huma prinċipalment biex jiffaċilitaw l-abbiltà li jitwettqu mistoqsijiet ta 'natura graffika u relazzjonali.
Dawn il-mudelli huma l-uniċi disponibbli għall-użu fid-DBMS speċifikati il-lingwi tal-mistoqsijiet tagħhom stess huma ddisinjati biex jaħdmu magħhom. Naturalment, mudelli u DBMSs bħal dawn huma promettenti, iżda n-nuqqas ta 'kompatibilità ma' mudelli u lingwi standard jagħmilha impossibbli li jintużaw dawn id-DBMSs f'sistemi legacy—biex jissostitwixxu d-DBMSs diġà użati hemmhekk.
Diġà kien hemm artiklu mill-isbaħ dwar ArangoDB u OrientDB fuq Habré: .
ArangoDB
ArangoDB jitlob appoġġ għal mudell tad-dejta tal-graff.
In-nodi ta' graff f'ArangoDB huma dokumenti ordinarji, u t-truf huma dokumenti ta' tip speċjali li, flimkien ma' oqsma tas-sistema regolari, għandhom (_key, _id, _rev) oqsma tas-sistema _from и _to. Id-dokumenti fid-DBMSs tad-dokumenti huma tradizzjonalment magħquda f'kollezzjonijiet. Kollezzjonijiet ta 'dokumenti li jirrappreżentaw it-truf jissejħu kollezzjonijiet tat-tarf f'ArangoDB. Mill-mod, id-dokumenti tal-ġbir tat-tarf huma wkoll dokumenti, għalhekk it-truf f'ArangoDB jistgħu jaġixxu wkoll bħala nodi.
Data mhux ipproċessata
Ejjew ikollna kollezzjoni persons, li d-dokumenti tagħhom jidhru bħal dan:
[
{
"_id" : "people/alice" ,
"_key" : "alice" ,
"name" : "Алиса"
},
{
"_id" : "people/bob" ,
"_key" : "bob" ,
"name" : "Боб"
}
]Ħalli jkun hemm ukoll ġabra cafes:
[
{
"_id" : "cafes/jd" ,
"_key" : "jd" ,
"name" : "Джон Донн"
},
{
"_id" : "cafes/jj" ,
"_key" : "jj" ,
"name" : "Жан-Жак"
}
]Imbagħad il-ġbir likes jista' jidher bħal dan:
[
{
"_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
}
]Mistoqsijiet u riżultati
Mistoqsija ta' stil ta' graff fil-lingwa AQL użata f'ArangoDB, li tirritorna f'forma li tinqara mill-bniedem informazzjoni dwar min jħobb liema kafetterija, tidher bħal din:
FOR p IN persons
FOR c IN OUTBOUND p likes
RETURN { person : p.name , likes : c.name }Fi stil relazzjonali, fejn inkunu qed "inkunu qed nikkomputaw" relazzjonijiet aktar milli naħżnuhom, din il-mistoqsija tista' tinkiteb mill-ġdid hekk (mill-mod, mingħajr il-ġbir likes tista’ tagħmel mingħajr):
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 }Ir-riżultat fiż-żewġ każijiet se jkun l-istess:
[
{ "person" : "Алиса" , likes : "Жан-Жак" } ,
{ "person" : "Алиса" , likes : "Джон Донн" } ,
{ "person" : "Боб" , likes : "Джон Донн" }
]Aktar mistoqsijiet u riżultati
Jekk il-format tar-riżultat ta’ hawn fuq jidher li huwa aktar tipiku għal DBMS relazzjonali milli għal DBMS ta’ dokument, tista’ tipprova din il-mistoqsija (jew tista’ tuża ):
FOR p IN persons
RETURN {
person : p.name,
likes : (
FOR c IN OUTBOUND p likes
RETURN c.name
)
}Ir-riżultat se jidher bħal dan:
[
{ "person" : "Алиса" , likes : ["Жан-Жак" , "Джон Донн"] } ,
{ "person" : "Боб" , likes : ["Джон Донн"] }
]OrientDB
Il-bażi għall-implimentazzjoni ta 'mudell ta' graff fuq mudell ta 'dokument f'OrientDB hija oqsma tad-dokumenti, minbarra valuri skalari aktar jew inqas standard, għandhom ukoll valuri ta 'tipi bħal LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. Il-valuri ta 'dawn it-tipi huma links jew kollezzjonijiet ta' links għal dokumenti.
L-identifikatur tad-dokument assenjat mis-sistema għandu "tifsira fiżika", li jindika l-pożizzjoni tar-rekord fid-database, u jidher xi ħaġa bħal din: @rid : #3:16. Għalhekk, il-valuri tal-proprjetajiet ta 'referenza huma verament indikaturi (bħal fil-mudell tal-graff) aktar milli kundizzjonijiet tal-għażla (bħal fil-mudell relazzjonali).
Bħal ArangoDB, it-truf f'OrientDB huma rappreżentati bħala dokumenti separati (għalkemm jekk tarf ma jkollux il-proprjetajiet tiegħu, jista 'jsir , u mhux se jikkorrispondi għal dokument separat).
Data mhux ipproċessata
F'format qrib Database OrientDB, id-dejta mill-eżempju preċedenti għal ArangoDB tidher xi ħaġa bħal din:
[
{
"@type": "document",
"@rid": "#11:0",
"@class": "Person",
"name": "Алиса",
"out_likes": [
"#30:1",
"#30:2"
],
"@fieldTypes": "out_likes=LINKBAG"
},
{
"@type": "document",
"@rid": "#12:0",
"@class": "Person",
"name": "Боб",
"out_likes": [
"#30:3"
],
"@fieldTypes": "out_likes=LINKBAG"
},
{
"@type": "document",
"@rid": "#21:0",
"@class": "Cafe",
"name": "Жан-Жак",
"in_likes": [
"#30:2",
"#30:3"
],
"@fieldTypes": "in_likes=LINKBAG"
},
{
"@type": "document",
"@rid": "#22:0",
"@class": "Cafe",
"name": "Джон Донн",
"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"
}
]Kif nistgħu naraw, vertiċi jaħżnu wkoll informazzjoni dwar it-truf deħlin u ħerġin. Fl Id-Dokument API trid timmonitorja l-integrità referenzjali hija stess, u l-Graph API tieħu dan ix-xogħol. Imma ejja naraw kif jidher l-aċċess għal OrientDB f’lingwi ta’ mistoqsijiet “puri” li mhumiex integrati f’lingwi ta’ programmar.
Mistoqsijiet u riżultati
Mistoqsija simili fl-iskop għall-mistoqsija mill-eżempju għal ArangoDB f'OrientDB tidher bħal din:
SELECT name AS person_name, OUT('likes').name AS cafe_name
FROM Person
UNWIND cafe_nameIr-riżultat se jinkiseb fil-forma li ġejja:
[
{ "person_name": "Алиса", "cafe_name": "Джон Донн" },
{ "person_name": "Алиса", "cafe_name": "Жан-Жак" },
{ "person_name": "Боб", "cafe_name": "Жан-Жак" }
]Jekk il-format tar-riżultat għal darb'oħra jidher wisq "relazzjonali", għandek bżonn tneħħi l-linja ma :
[
{ "person_name": "Алиса", "cafe_name": [ "Джон Донн", "Жан-Жак" ] },
{ "person_name": "Боб", "cafe_name": [ "Жан-Жак" ' }
]Il-lingwa tal-mistoqsija ta' OrientDB tista' tiġi deskritta bħala SQL b'inserzjonijiet simili għal Gremlin. Fil-verżjoni 2.2, dehret formola ta' talba bħal 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_nameIl-format tar-riżultat se jkun l-istess bħal fit-talba preċedenti. Aħseb dwar dak li jeħtieġ li jitneħħa biex tagħmilha aktar "relazzjonali", bħal fl-ewwel mistoqsija.
Azure CosmosDB
Sa ċertu punt, dak li ntqal hawn fuq dwar ArangoDB u OrientDB japplika għal Azure CosmosDB. CosmosDB jipprovdi l-APIs ta 'aċċess għad-dejta li ġejjin: SQL, MongoDB, Gremlin u Cassandra.
SQL API u MongoDB API huma użati biex jaċċessaw id-dejta fil-mudell tad-dokument. Gremlin API u Cassandra API - għall-aċċess tad-dejta f'formati ta 'graff u kolonna, rispettivament. Id-dejta fil-mudelli kollha tiġi ffrankata fil-format tal-mudell intern tal-CosmosDB: (“atom-record-sequence”), li hija wkoll qrib dik tad-dokument.

Iżda l-mudell tad-dejta magħżul mill-utent u l-API użata huma ffissati fil-ħin tal-ħolqien ta 'kont fis-servizz. Mhux possibbli li wieħed jaċċessa dejta mgħobbija f'mudell wieħed f'format ta' mudell ieħor, kif muri minn xi ħaġa bħal din:

Għalhekk, multi-mudell f'Azure CosmosDB illum huwa biss il-kapaċità li tuża diversi databases li jappoġġjaw mudelli differenti minn manifattur wieħed, li ma ssolvix il-problemi kollha ta 'ħażna multi-varjanti.
DBMS multi-mudell ibbażat fuq mudell graff?
Ta’ min jinnota huwa l-fatt li m’hemm l-ebda DBMSs b’ħafna mudelli fis-suq li għadhom ibbażati fuq mudell ta’ graff (ħlief għall-appoġġ multi-mudell għal simultanjament żewġ mudelli ta’ graff: RDF u LPG; ara dan f’ ). L-akbar diffikultajiet huma kkawżati mill-implimentazzjoni ta 'mudell ta' dokument fuq mudell ta 'graff, aktar milli wieħed relazzjonali.
Il-mistoqsija dwar kif jiġi implimentat mudell relazzjonali fuq il-mudell tal-graff kienet ikkunsidrata anke waqt il-formazzjoni ta 'dan tal-aħħar. Kif pereżempju :
M'hemm xejn inerenti fl-approċċ tal-graff li jipprevjeni l-ħolqien ta 'saff (eż., permezz ta' indiċjar adattat) fuq database tal-graff li jippermetti ħarsa relazzjonali bi (1) irkupru ta 'tuples mill-pari tas-soltu ta' valuri ewlenin u (2) grupp ta ' tupli skond it-tip ta' relazzjoni.
Meta timplimenta mudell ta' dokument fuq mudell ta' graff, trid iżżomm f'moħħok, pereżempju, dan li ġej:
- Elementi ta 'array JSON huma kkunsidrati ordnati, iżda dawk li joħorġu mill-vertiċi ta' tarf tal-graff mhumiex;
- Id-dejta fil-mudell tad-dokument normalment tkun denormalizzata; xorta ma tridx taħżen diversi kopji tal-istess dokument inkorporat, u s-sottodokumenti ġeneralment ma jkollhomx identifikaturi;
- Min-naħa l-oħra, l-ideoloġija tad-DBMSs tad-dokumenti hija li d-dokumenti huma "aggregati" lesti li m'għandhomx għalfejn jinbnew mill-ġdid kull darba. Huwa meħtieġ li jipprovdi l-mudell tal-graff bil-kapaċità li jikseb malajr subgrafu li jikkorrispondi għad-dokument lest.
Ftit reklamar
L-awtur tal-artiklu huwa relatat mal-iżvilupp tad-DBMS NitrosBase, li l-mudell intern tiegħu huwa graff, u l-mudelli esterni - relazzjonali u dokument - huma r-rappreżentazzjonijiet tiegħu. Il-mudelli kollha huma ugwali: kważi kull data hija disponibbli fi kwalunkwe wieħed minnhom bl-użu ta' lingwa ta' mistoqsija li hija naturali għaliha. Barra minn hekk, fi kwalunkwe fehma, id-data tista 'tiġi mibdula. Il-bidliet se jkunu riflessi fil-mudell intern u, għaldaqstant, f'opinjonijiet oħra.
Nispera li niddeskrivi kif jidher it-tqabbil tal-mudell f'NitrosBase f'wieħed mill-artikoli li ġejjin.
Konklużjoni
Nittama li l-kontorni ġenerali ta 'dak li jissejjaħ multi-modeling saru xi ftit jew wisq ċari għall-qarrej. DBMSs b'ħafna mudelli huma pjuttost differenti, u "appoġġ multi-mudell" jista 'jidher differenti. Biex tifhem dak li jissejjaħ "multi-mudell" f'kull każ speċifiku, huwa utli li twieġeb il-mistoqsijiet li ġejjin:
- Qed nitkellmu dwar l-appoġġ ta 'mudelli tradizzjonali jew xi tip ta' mudell "ibridu"?
- Il-mudelli huma "ugwali", jew waħda minnhom hija s-suġġett tal-oħrajn?
- Il-mudelli huma "indifferenti" għal xulxin? Tista' dejta miktuba f'mudell wieħed tinqara f'ieħor jew saħansitra miktuba mill-ġdid?
Naħseb li l-mistoqsija dwar ir-rilevanza ta 'DBMS multi-mudell diġà tista' tiġi mwieġba b'mod pożittiv, iżda l-mistoqsija interessanti hija liema tipi minnhom se jkunu aktar fid-domanda fil-futur qarib. Jidher li DBMSs b'ħafna mudelli li jappoġġjaw mudelli tradizzjonali, primarjament relazzjonali, se jkunu f'domanda akbar; Il-popolarità ta 'DBMSs b'ħafna mudelli, li joffru mudelli ġodda li jgħaqqdu l-vantaġġi ta' dawk tradizzjonali varji, hija kwistjoni ta 'futur aktar imbiegħed.
Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. , ta 'xejn.
Tuża DBMS multi-mudell?
Aħna ma nużawhx, naħżnu kollox f'DBMS wieħed u f'mudell wieħed
Aħna nużaw kapaċitajiet multi-mudell ta 'DBMSs tradizzjonali
Aħna nipprattikaw il-persistenza poliglotta
Aħna nużaw DBMS b'ħafna mudelli ġodda (Arango, Orient, CosmosDB)
Ivvutaw 19 utent. 4 utent astjenew.
Sors: www.habr.com
