Id-DBMSs b'ħafna mudelli huma l-bażi ta' sistemi ta' informazzjoni moderni?

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.

Id-DBMSs b'ħafna mudelli huma l-bażi ta' sistemi ta' informazzjoni moderni?


Kontenut

Persistenza poliglotta
Multi-mudell
DBMS multi-mudell ibbażat fuq il-mudell relazzjonali
     Mudell tad-dokument fl-MS SQL Server
     Mudell tal-grafika f'MS SQL Server
DBMS multi-mudell ibbażat fuq il-mudell tad-dokument
     Mudell relazzjonali f'MarkLogic
     Mudell tal-grafika f'MarkLogic
DBMS b'ħafna mudelli "mingħajr mudell ewlieni"
     ArangoDB
     OrientDB
     Azure CosmosDB
DBMS multi-mudell ibbażat fuq mudell graff?
Konklużjoni
Poll

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, l-awtur numru ta’ kotba famużi u wieħed minn ko-awturi 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.

Id-DBMSs b'ħafna mudelli huma l-bażi ta' sistemi ta' informazzjoni moderni?

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, hawn.

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:

Jidher li din id-darba l-analisti ta’ Gartner kellhom raġun bit-tbassir tagħhom. Jekk tmur fil-paġna ma klassifikazzjoni prinċipali 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.

DBMSMudell inizjaliMudelli addizzjonali
OracleRelazzjonaliGraff, dokument
MS SQLRelazzjonaliGraff, dokument
PostgreSQLRelazzjonaliGraff*, dokument
MarkLogicDokumentarjuGraff, relazzjonali
MongoDBDokumentarjuValur ewlieni, graff*
DataStaxWide-kolonnaDokumentarju, graff
Ddistribwit mill-Valur ewlieniDokumentarju, 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 ibbażat fuqha, 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 ($lookup, $graphLookup) 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 RedisGraph.

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:

  • JSON_VALUE biex jiġu estratti valuri ta' attribut skalari,
  • JSON_QUERY 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 FOR JSON PATH - 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 OPENJSON. 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 prevedibbli: 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.

Id-DBMSs b'ħafna mudelli huma l-bażi ta' sistemi ta' informazzjoni moderni? 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" MarkLogic.

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 mudell tal-wiri (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 indiċi tad-dokumenti. Preċedentement, MarkLogic kellu fehmiet relazzjonali limitati, għal kollox ibbażat fuq indiċi 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 mudell tal-wiri 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:

  1. DBMS jista 'jkun ħażna separata sħiħa ta' data RDF (triplets fiha se jissejħu ġestiti b’kuntrast ma’ dawk deskritti hawn fuq estratt).
  2. RDF f'serialization speċjali jista 'sempliċement jiddaħħal f'dokumenti XML jew JSON (u mbagħad jissejħu triplets mhux immaniġġjat). Din hija probabbilment alternattiva għall-mekkaniżmi idref eċċ

Idea tajba ta 'kif l-affarijiet "verament" jaħdmu f'MarkLogic tingħata minn API ottiċi, 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 ArangoDB, OrientDB (mill-2018 il-kumpanija tal-iżvilupp tappartjeni lil SAP) u CosmosDB (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é: JINGĦADD fid-databases NoSQL.

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 COLLECT):

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 opportunità 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 identifikaturi tas-sistema 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 ħfief, u mhux se jikkorrispondi għal dokument separat).

Data mhux ipproċessata

F'format qrib format dump 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 bl-użu 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_name

Ir-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 UNWIND():

[
  { "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 :

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_name

Il-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: ARS (“atom-record-sequence”), li hija wkoll qrib dik tad-dokument.

Id-DBMSs b'ħafna mudelli huma l-bażi ta' sistemi ta' informazzjoni moderni?

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:

Id-DBMSs b'ħafna mudelli huma l-bażi ta' sistemi ta' informazzjoni moderni?

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’ pubblikazzjoni preċedenti). 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 tkellempereżempju David McGovern:

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:

  1. Qed nitkellmu dwar l-appoġġ ta 'mudelli tradizzjonali jew xi tip ta' mudell "ibridu"?
  2. Il-mudelli huma "ugwali", jew waħda minnhom hija s-suġġett tal-oħrajn?
  3. 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ġ. Idħol, 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

Żid kumment