An bhfuil DBMSanna ilmhúnla mar bhonn le córais faisnéise nua-aimseartha?

Tá córais faisnéise nua-aimseartha casta go leor. Go háirithe, tá a gcastacht mar gheall ar chastacht na sonraí a phróiseáiltear iontu. Is minic a luíonn castacht na sonraí le héagsúlacht na múnlaí sonraí a úsáidtear. Mar sin, mar shampla, nuair a éiríonn sonraí “mór”, ceann de na tréithe fadhbacha ní hamháin a toirt (“toirt”), ach freisin a éagsúlacht (“éagsúlacht”).

Mura bhfuil locht agat ar an réasúnaíocht fós, léigh ansin.

An bhfuil DBMSanna ilmhúnla mar bhonn le córais faisnéise nua-aimseartha?


Ábhar

Marthanacht polyglot
Il-mhúnla
Il-mhúnla DBMS bunaithe ar an tsamhail choibhneasta
     Múnla doiciméad i MS SQL Server
     Múnla graf i MS SQL Server
DBMS Ilshamhail bunaithe ar mhúnla an doiciméid
     Múnla coibhneasta i MarkLogic
     Múnla graf i MarkLogic
Ilmhúnla DBMS “gan príomhmhúnla”
     ArangoDB
     OrientDB
     Azure CosmosDB
Il-mhúnla DBMS bunaithe ar mhúnla graf?
Conclúid
Опрос

Marthanacht polyglot

Is é an toradh atá ar an méid thuas ná go mbíonn gá uaireanta fiú faoi chuimsiú córas amháin a úsáid chun sonraí a stóráil agus chun fadhbanna éagsúla a bhaineann le próiseáil a réiteach, agus tacaíonn gach ceann acu lena shamhail sonraí féin. Le lámh éadrom M. Fowler, an t-údar roinnt leabhar cáiliúla agus ceann de comh-údair Agile Manifesto, ar a dtugtar an staid seo stórála il-athraitheach (“dianseasmhacht polyglot”).

Tá an sampla seo a leanas ag Fowler freisin maidir le stóráil sonraí a eagrú in iarratas lán-feiceáil agus ard-ualach i réimse na ríomhthráchtála.

An bhfuil DBMSanna ilmhúnla mar bhonn le córais faisnéise nua-aimseartha?

Tá an sampla seo, ar ndóigh, beagán áibhéil, ach is féidir teacht ar roinnt breithnithe i bhfabhar DBMS amháin nó eile a roghnú chun na críche comhfhreagracha, mar shampla, anseo.

Is léir nach bhfuil sé éasca a bheith i do sheirbhíseach i zú den sórt sin.

  • Méadaíonn an méid cód a fheidhmíonn stóráil sonraí i gcomhréir le líon na DBMSanna a úsáidtear; tá méid na sonraí sioncrónaithe cód go maith mura bhfuil sé comhréireach le cearnóg na huimhreach seo.
  • Mar iolraí ar líon na DBMSanna a úsáidtear, méadaíonn na costais a bhaineann le saintréithe fiontair a sholáthar (inscálaitheacht, lamháltas lochtanna, infhaighteacht ard) gach ceann de na DBMSanna a úsáidtear.
  • Tá sé dodhéanta tréithe fiontair an fhochórais stórála ina iomláine a áirithiú - go háirithe idirbheartaíocht.

Ó thaobh stiúrthóir an zú de, tá cuma ar gach rud mar seo:

  • Méadú iolrach ar chostas ceadúnas agus tacaíocht theicniúil ón monaróir DBMS.
  • An iomarca foirne agus spriocdhátaí méadaithe.
  • Caillteanais airgeadais dhíreacha nó pionóis mar gheall ar neamhréireacht sonraí.

Tá méadú suntasach ar chostas iomlán úinéireachta an chórais (TCO). An bhfuil aon bhealach amach as staid na “ilroghanna stórála”?

Il-mhúnla

Tháinig an téarma “stóráil ilathraithe” in úsáid in 2011. Thóg sé roinnt blianta anuas feasacht ar fhadhbanna an chur chuige agus an cuardach ar réiteach, agus faoi 2015, trí bhéal na n-anailísithe Gartner, foirmíodh an freagra:

Dealraíonn sé go raibh an ceart ag anailísithe Gartner an uair seo lena réamhaisnéis. Má théann tú go dtí an leathanach le príomhrátáil DBMS ar DB-Engines, is féidir leat é sin a fheiceáilоSeasann an chuid is mó dá gceannairí iad féin go sonrach mar DBMSanna ilmhúnla. Is féidir an rud céanna a fheiceáil ar an leathanach le haon rátáil phríobháideach.

Léiríonn an tábla thíos an DBMS - na ceannairí i ngach ceann de na rátálacha príobháideacha, a mhaíonn a bheith il-mhúnla. I gcás gach DBMS, léirítear an tsamhail bhunaidh tacaithe (a bhí tráth amháin) agus in éineacht leis na múnlaí a dtacaítear leo faoi láthair. Liostaítear freisin DBMSanna a sheasann mar “ilmhúnla ar dtús” agus, dar leis na cruthaitheoirí, nach bhfuil aon samhail oidhreachta tosaigh acu.

DBMSMúnla tosaighSamhlacha breise
OracleGaolmharGraf, doiciméad
MS SQLGaolmharGraf, doiciméad
PostgreSQLGaolmharGraf*, doiciméad
MarkLogicClár faisnéiseGraf, gaolmhar
MongoDBClár faisnéiseLuach eochrach, graf*
DataStaxColún leathanClár faisnéise, graf
RedisEochair-luachClár faisnéise, graf*
ArangoDB-Graf, doiciméad
OrientDB-Graf, doiciméad, gaol
Azure CosmosDB-Graf, doiciméad, gaol

Nótaí ar an mbord

Marcálann réiltíní sa tábla ráitis a dteastaíonn áirithintí uathu:

  • Ní thacaíonn DBMS PostgreSQL leis an tsamhail sonraí graf, ach tacaíonn an táirge seo leis bunaithe air, mar AgensGraph.
  • Maidir le MongoDB, tá sé níos ceart labhairt faoi láithreacht oibreoirí graif sa teanga cheist ($lookup, $graphLookup) ná tacaíocht a thabhairt don mhúnla graif, cé gur theastaigh roinnt leas iomlán a bhaint as a dtabhairt isteach ag an leibhéal stórála fisiceach chun tacú leis an tsamhail ghraf.
  • Maidir le Redis, is éard atá i gceist againn an síneadh RedisGraph.

Ansin, i gcás gach ceann de na ranganna, taispeánfaimid an chaoi a gcuirtear tacaíocht do roinnt samhlacha i bhfeidhm sa DBMS ón rang seo. Breathnóidh muid ar na samhlacha coibhneasta, doiciméad agus graif mar na cinn is tábhachtaí agus úsáidfimid samplaí de DBMSanna sonracha chun a thaispeáint conas a chuirtear na “cinn atá ar iarraidh” i bhfeidhm.

Il-mhúnla DBMS bunaithe ar an tsamhail choibhneasta

Tá na príomh- DBMSanna coibhneasta faoi láthair; ní fhéadfaí a mheas go bhfuil réamhaisnéis Gartner fíor mura dtaispeánfadh RDBMSanna gluaiseacht i dtreo ilmhúnlaithe. Agus léiríonn siad. Anois is féidir an smaoineamh go bhfuil DBMS il-mhúnla cosúil le scian na hEilvéise, nach féidir aon rud a dhéanamh go maith, a threorú go díreach chuig Larry Ellison.

Is fearr leis an údar, áfach, ilmhúnlú a chur i bhfeidhm i Microsoft SQL Server, ar an sampla a dhéanfar cur síos ar thacaíocht RDBMS do mhúnlaí doiciméad agus graif.

Múnla doiciméad i MS SQL Server

Tá dhá alt den scoth cheana féin ar Habré faoi conas a chuireann MS SQL Server tacaíocht i bhfeidhm don mhúnla doiciméad;

Tá an bealach chun tacú leis an tsamhail doiciméad i MS SQL Server sách tipiciúil do DBMSanna coibhneasta: tá sé beartaithe doiciméid JSON a stóráil i ngnáthréimsí téacs. Tugtar tacaíocht don mhúnla doiciméad chun oibreoirí speisialta a sholáthar chun an JSON seo a pharsáil:

  • JSON_VALUE chun luachanna aitreabúide scálach a bhaint as,
  • JSON_QUERY chun fo-dhoiciméid a bhaint as.

Is léiriú é dara argóint an dá oibreoir i gcomhréir cosúil le JSONPath.

Go hachomair, is féidir linn a rá nach “eintitis den chéad scoth” iad doiciméid a stóráiltear ar an mbealach seo i DBMS coibhneasta, murab ionann agus tuples. Go sonrach, i MS SQL Server níl aon innéacsanna ar réimsí doiciméad JSON faoi láthair, rud a fhágann go bhfuil sé deacair táblaí a chomhcheangal ag baint úsáide as luachanna na réimsí seo agus fiú doiciméid a roghnú ag baint úsáide as na luachanna seo. Mar sin féin, is féidir colún ríofa a chruthú le haghaidh réimse den sórt sin agus innéacs air.

Ina theannta sin, soláthraíonn MS SQL Server an cumas doiciméad JSON a thógáil go háisiúil as ábhar na dtáblaí ag baint úsáide as an oibreoir FOR JSON PATH - féidearthacht, i gciall áirithe, contrártha leis an gceann roimhe seo, gnáthstóráil. Is léir, is cuma cé chomh tapa agus atá RDBMS, go dtagann an cur chuige seo salach ar idé-eolaíocht na ndoiciméad DBMS, a stórálann go bunúsach freagraí réamhdhéanta ar cheisteanna coitianta, agus ní féidir leo ach fadhbanna a bhaineann le héascaíocht forbartha a réiteach, ach ní luas.

Ar deireadh, ligeann MS SQL Server duit an fhadhb eile maidir le tógáil doiciméad a réiteach: is féidir leat JSON a dhianscaoileadh i dtáblaí ag baint úsáide as OPENJSON. Mura bhfuil an doiciméad go hiomlán cothrom, beidh ort é a úsáid CROSS APPLY.

Múnla graf i MS SQL Server

Cuirtear tacaíocht don mhúnla graf (LPG) i bhfeidhm go hiomlán freisin i Microsoft SQL Server intuartha: Tá sé beartaithe táblaí speisialta a úsáid chun nóid a stóráil agus imill ghraf a stóráil. Cruthaítear táblaí den sórt sin ag baint úsáide as nathanna cainte CREATE TABLE AS NODE и CREATE TABLE AS EDGE faoi ​​seach.

Tá táblaí den chéad chineál cosúil le gnáth-tháblaí chun taifid a stóráil, agus is é an t-aon difríocht sheachtrach ná go bhfuil réimse córais sa tábla $node_id — aitheantóir uathúil nód graf laistigh den bhunachar sonraí.

Mar an gcéanna, tá réimsí córais ag táblaí den dara cineál $from_id и $to_id, sainmhíníonn iontrálacha i dtáblaí den sórt sin go soiléir na naisc idir nóid. Úsáidtear tábla ar leith chun caidrimh de gach cineál a stóráil.

An bhfuil DBMSanna ilmhúnla mar bhonn le córais faisnéise nua-aimseartha? Lig dúinn é seo a léiriú le sampla. Bíodh leagan amach cosúil leis an gceann a thaispeántar san fhíor ag sonraí an ghraif. Ansin chun an struchtúr comhfhreagrach a chruthú sa bhunachar sonraí ní mór duit na ceisteanna DDL seo a leanas a rith:

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);

Is í an phríomhshainiúlacht a bhaineann le táblaí den sórt sin ná gur féidir, i bhfiosruithe ina gcoinne, patrúin ghraf a úsáid le comhréir cosúil le Cypher (áfach, “*"srl. nach bhfuil tacaíocht fós). Bunaithe ar thomhais feidhmíochta, is féidir glacadh leis freisin go bhfuil an bealach a stóráiltear sonraí sna táblaí seo difriúil ón mbealach a stóráiltear sonraí i dtáblaí rialta agus go bhfuil sé optamaithe chun fiosrúcháin ghraif den sórt sin a dhéanamh.

SELECT Cafe.name
  FROM Person, likes, Cafe
  WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
  AND Person.name = 'John';

Ina theannta sin, tá sé deacair go leor gan na patrúin graf seo a úsáid agus tú ag obair le táblaí dá leithéid, mar i ngnáthcheisteanna SQL chun fadhbanna comhchosúla a réiteach beidh sé riachtanach iarrachtaí breise a dhéanamh chun aitheantóirí nód “graf” córais a fháil ($node_id, $from_id, $to_id; Ar an gcúis chéanna, ní léirítear fiosruithe maidir le sonraí a chur isteach anseo mar go bhfuil siad an-chúngrach gan ghá).

Chun achoimre a dhéanamh ar fheidhmiú na múnlaí doiciméad agus graif in MS SQL Server, ba mhaith liom a thabhairt faoi deara nach bhfuil an chuma air go n-éiríonn le cur i bhfeidhm samhail amháin ar bharr múnla eile, go príomha ó thaobh dearadh teanga de. Is gá teanga amháin a leathnú go teanga eile, níl na teangacha go hiomlán “orthogonal”, is féidir leis na rialacha comhoiriúnachta a bheith aisteach go leor.

DBMS Ilshamhail bunaithe ar mhúnla an doiciméid

Sa chuid seo, ba mhaith liom cur i bhfeidhm il-mhúnla i DBMSs doiciméad a léiriú ag baint úsáide as an sampla nach bhfuil tóir orthu, MongoDB (mar a dúradh, níl aige ach oibreoirí grafacha coinníollach $lookup и $graphLookup, gan a bheith ag obair ar bhailiúcháin ghearrtha), ach ag baint úsáide as an sampla de DBMS níos aibí agus “fiontar” MarkLogic.

Mar sin, lig do bhailiúchán doiciméad XML den chineál seo a leanas a bheith sa bhailiúchán (cuireann MarkLogic ar do chumas doiciméid JSON a stóráil freisin):

<Person INN="631803299804">
  <name>John</name>
  <surname>Smith</surname>
</Person>

Múnla coibhneasta i MarkLogic

Is féidir dearcadh coibhneasta ar bhailiúchán doiciméad a chruthú trí úsáid a bhaint as teimpléad taispeána (ábhar na ndúl value sa sampla thíos is féidir XPath treallach a bheith ann):

<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>

Is féidir leat aghaidh a thabhairt ar an radharc cruthaithe le ceist SQL (mar shampla, trí ODBC):

SELECT name, surname FROM Person WHERE name="John"

Ar an drochuair, is inléite amháin é an radharc coibhneasta a chruthaíonn an teimpléad taispeána. Agus iarratas á phróiseáil aige, déanfaidh MarkLogic iarracht é a úsáid innéacsanna doiciméad. Roimhe seo, bhí tuairimí coibhneasta teoranta ag MarkLogic, go hiomlán innéacs-bhunaithe agus inscríofa, ach anois meastar go bhfuil siad dímheasta.

Múnla graf i MarkLogic

Le tacaíocht don mhúnla graf (RDF), tá gach rud mar an gcéanna. Arís le cabhair teimpléad taispeána is féidir leat léiriú RDF de bhailiúchán doiciméad a chruthú ón sampla thuas:

<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>

Is féidir leat aghaidh a thabhairt ar an ngraf RDF mar thoradh air le fiosrú SPARQL:

PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
  :631803299804 :name ?name ; :surname ?surname .
}

Murab ionann agus an ceann gaolmhar, tacaíonn MarkLogic leis an tsamhail ghraif ar dhá bhealach eile:

  1. Is féidir le DBMS a bheith ina stór iomlán ar leith de shonraí RDF (cuirfear triplets air bainistithe i gcodarsnacht leo siúd a bhfuil cur síos orthu thuas bhaintear).
  2. Is féidir RDF i sraithiú speisialta a chur isteach go simplí i ndoiciméid XML nó JSON (agus glaofar triplets ansin gan bhainistiú). Is dócha gur rogha eile é seo ar mheicníochtaí idref etc

Tá smaoineamh maith ar conas a oibríonn rudaí “i ndáiríre” i MarkLogic tugtha ag Optúil API, sa chiall seo, tá sé ar leibhéal íseal, cé go bhfuil a chuspóir in áit a mhalairt - chun iarracht a dhéanamh achomaireacht ón tsamhail sonraí a úsáidtear, chun obair chomhsheasmhach le sonraí i múnlaí éagsúla, idirbheartaíocht, etc.

Ilmhúnla DBMS “gan príomhmhúnla”

Tá DBMSanna ar an margadh freisin a sheasann dóibh féin mar ilmhúnlaí ar dtús, gan aon phríomhshamhail a fuarthas le hoidhreacht. Ina measc seo tá ArangoDB, OrientDB (ó 2018 baineann an chuideachta forbartha le SAP) agus CosmosDB (seirbhís mar chuid d'ardán scamall Microsoft Azure).

Go deimhin, tá múnlaí “croílárnacha” in ArangoDB agus OrientDB. Sa dá chás, is samhlacha sonraí dá gcuid féin iad seo, ar ginearáluithe iad ar dhoiciméad a haon. Is é is príomhchuspóir leis na ginearáluithe ná an cumas ceisteanna de chineál graf agus coibhneasta a dhéanamh.

Is iad na samhlacha seo na cinn amháin atá ar fáil le húsáid sa DBMS sonraithe; Ar ndóigh, tá na samhlacha agus na DBMSanna sin geallta, ach fágann easpa comhoiriúnachta le samhlacha caighdeánacha agus teangacha go bhfuil sé dodhéanta na DBMSanna seo a úsáid i gcórais oidhreachta—chun na DBMSanna a úsáideadh ansin cheana féin a athsholáthar.

Bhí alt iontach cheana féin faoi ArangoDB agus OrientDB ar Habré: Glac páirt i mbunachair shonraí NoSQL.

ArangoDB

Éilíonn ArangoDB tacaíocht do shamhail sonraí graf.

Is gnáthdhoiciméid iad nóid ghraif in ArangoDB, agus is doiciméid de chineál speisialta iad na himill a bhfuil, mar aon le gnáthréimsí córais, (_key, _id, _rev) réimsí córais _from и _to. Go traidisiúnta déantar doiciméid atá i ndoiciméid DBMS a chomhcheangal i mbailiúcháin. Tugtar bailiúcháin chiumhais ar bhailiúcháin doiciméad a léiríonn imeall in ArangoDB. Dála an scéil, is doiciméid iad doiciméid bailithe imeall freisin, agus mar sin is féidir le himill in ArangoDB feidhmiú mar nóid freisin.

Sonraí tosaigh

Lig dúinn bailiúchán persons, a bhfuil cuma mar seo ar a ndoiciméid:

[
  {
    "_id"  : "people/alice" ,
    "_key" : "alice" ,
    "name" : "Алиса"
  },
  {
    "_id"  : "people/bob" ,
    "_key" : "bob" ,
    "name" : "Боб"  
  }
]

Bíodh bailiúchán ann freisin cafes:

[
  {
    "_id" : "cafes/jd" ,
    "_key" : "jd" ,
    "name" : "Джон Донн"  
  },
  {
    "_id" : "cafes/jj" ,
    "_key" : "jj" ,
    "name" : "Жан-Жак"
  }
]

Ansin an bailiúchán likes d'fhéadfadh sé seo a bheith:

[
  {
    "_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 
  }
]

Ceisteanna agus torthaí

Iarratas ar stíl ghraif sa teanga AQL a úsáidtear in ArangoDB, ag filleadh i bhfoirm inléite daonna faisnéis faoi cé a thaitníonn leis an gcaife, a bhreathnaíonn mar seo:

FOR p IN persons
  FOR c IN OUTBOUND p likes
  RETURN { person : p.name , likes : c.name }

I stíl choibhneasta, ina bhfuilimid ag “ríomh” caidrimh seachas iad a stóráil, is féidir an cheist seo a athscríobh mar seo (dála an scéil, gan an bailiúchán likes d'fhéadfadh a dhéanamh gan):

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 }

Beidh an toradh sa dá chás mar an gcéanna:

[
  { "person" : "Алиса" , likes : "Жан-Жак" } ,
  { "person" : "Алиса" , likes : "Джон Донн" } ,
  { "person" : "Боб" , likes : "Джон Донн" }
]

Tuilleadh ceisteanna agus torthaí

Más cosúil go bhfuil formáid an toraidh thuas níos tipiciúla do DBMS coibhneasta ná do dhoiciméad DBMS, is féidir leat an cheist seo a thriail (nó is féidir leat úsáid a bhaint as COLLECT):

FOR p IN persons
  RETURN {
    person : p.name,
    likes : (
      FOR c IN OUTBOUND p likes
      RETURN c.name
    )
}

Breathnóidh an toradh mar seo:

[
  { "person" : "Алиса" , likes : ["Жан-Жак" , "Джон Донн"]  } ,
  { "person" : "Боб" , likes : ["Джон Донн"] }
]

OrientDB

Is é an bunús le múnla graf a chur i bhfeidhm ar bharr múnla doiciméid in OrientDB deis réimsí doiciméad, chomh maith le níos mó nó níos lú luachanna caighdeánacha scálach, freisin tá luachanna de chineálacha ar nós LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. Is iad luachanna na gcineálacha seo naisc nó bailiúcháin de naisc chuig aitheantóirí córais doiciméid.

Tá “brí fisiceach” ag an aitheantóir doiciméid atá sannta ag an gcóras, rud a léiríonn suíomh an taifid sa bhunachar sonraí, agus tá rud éigin mar seo ag baint leis: @rid : #3:16. Mar sin, is leideanna iad luachanna na n-airíonna tagartha i ndáiríre (mar atá sa mhúnla graf) seachas coinníollacha roghnúcháin (mar atá sa tsamhail choibhneasta).

Cosúil le ArangoDB, léirítear imill in OrientDB mar dhoiciméid ar leith (cé nach bhfuil a airíonna féin ag imeall, is féidir é a dhéanamh éadrom, agus ní fhreagraíonn sé do dhoiciméad ar leith).

Sonraí tosaigh

I bhformáid gar do formáid dumpála Bunachar sonraí OrientDB, bheadh ​​cuma mar seo ar na sonraí ón sampla roimhe seo do ArangoDB:

[
     {
      "@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"
    }
  ]

Mar a fheicimid, stórálann reanna faisnéis faoi imill isteach agus amach freisin. Ag ag baint úsáide as Ní mór don Doiciméad API monatóireacht a dhéanamh ar shláine tagartha féin, agus glacann an Graph API an obair seo. Ach féachaimis cén chuma atá ar rochtain ar OrientDB i dteangacha fiosrúcháin “íona” nach bhfuil comhtháite i dteangacha ríomhchlárúcháin.

Ceisteanna agus torthaí

Is é seo an chuma atá ar cheist atá cosúil ó thaobh cuspóir leis an gceist ón sampla do ArangoDB in OrientDB:

SELECT name AS person_name, OUT('likes').name AS cafe_name
   FROM Person
   UNWIND cafe_name

Gheofar an toradh san fhoirm seo a leanas:

[
  { "person_name": "Алиса", "cafe_name": "Джон Донн" },
  { "person_name": "Алиса", "cafe_name": "Жан-Жак" },
  { "person_name": "Боб",  "cafe_name": "Жан-Жак" }
]

Más cosúil arís go bhfuil formáid an toraidh ró-“ghaolmhar”, ní mór duit an líne a bhaint le UNWIND():

[
  { "person_name": "Алиса", "cafe_name": [ "Джон Донн", "Жан-Жак" ] },
  { "person_name": "Боб",  "cafe_name": [ "Жан-Жак" ' }
]

Is féidir cur síos a dhéanamh ar theanga cheist OrientDB mar SQL le hiontáin cosúil le Gremlin. I leagan 2.2, bhí foirm iarratais cosúil le Cypher le feiceáil, 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

Beidh formáid an toraidh mar an gcéanna leis an iarratas roimhe seo. Smaoinigh ar cad is gá a bhaint chun é a dhéanamh níos “gaolmhar”, mar a bhí sa chéad cheist.

Azure CosmosDB

Go pointe níos lú, baineann an méid a dúradh thuas faoi ArangoDB agus OrientDB le Azure CosmosDB. Soláthraíonn CosmosDB na APIanna rochtana sonraí seo a leanas: SQL, MongoDB, Gremlin agus Cassandra.

Úsáidtear SQL API agus MongoDB API chun rochtain a fháil ar shonraí sa mhúnla doiciméad. Gremlin API agus Cassandra API - chun rochtain a fháil ar shonraí i bhformáidí graif agus colúin, faoi seach. Déantar sonraí i ngach múnla a shábháil i bhformáid mhúnla inmheánach CosmosDB: ARS (“atom-record-seicheamh”), atá gar do dhoiciméad a haon freisin.

An bhfuil DBMSanna ilmhúnla mar bhonn le córais faisnéise nua-aimseartha?

Ach tá an tsamhail sonraí a roghnaíonn an t-úsáideoir agus an API a úsáidtear socraithe ag an am a cruthaíodh cuntas sa tseirbhís. Ní féidir rochtain a fháil ar shonraí a lódáiltear i múnla amháin i bhformáid mhúnla eile, mar atá léirithe ag rud éigin mar seo:

An bhfuil DBMSanna ilmhúnla mar bhonn le córais faisnéise nua-aimseartha?

Mar sin, níl il-mhúnla i Azure CosmosDB inniu ach an cumas chun roinnt bunachair shonraí a úsáid a thacaíonn le samhlacha éagsúla ó mhonaróir amháin, rud nach réitíonn na fadhbanna go léir a bhaineann le stóráil ilathraitheach.

Il-mhúnla DBMS bunaithe ar mhúnla graf?

Is fiú a thabhairt faoi deara nach bhfuil aon DBMSanna ilmhúnla ar an margadh go fóill atá bunaithe ar mhúnla graif (seachas tacaíocht ilshamhail le haghaidh dhá mhúnla graf ag an am céanna: RDF agus LPG; féach é seo i foilseachán roimhe seo). Is iad na deacrachtaí is mó is cúis le cur i bhfeidhm samhail doiciméid ar bharr múnla graif, seachas samhail choibhneasta.

Breithníodh an cheist maidir le conas múnla coibhneasta a chur i bhfeidhm ar bharr an mhúnla graif fiú le linn an dara ceann a fhoirmiú. Conas a dúirt, mar shampla, David McGovern:

Níl aon rud bunúsach i gcur chuige an ghraif a chuireann cosc ​​​​ar chiseal a chruthú (m.sh., trí innéacsú oiriúnach) ar bhunachar sonraí graif a chumasaíonn dearcadh coibhneasta le (1) tuples a aisghabháil ó na péirí eochairluacha is gnách agus (2) grúpáil de tuples de réir cineáil gaoil.

Agus múnla doiciméad á chur i bhfeidhm ar bharr múnla graif, ní mór duit na nithe seo a leanas a choinneáil i gcuimhne, mar shampla:

  • Meastar go bhfuil gnéithe d'eagar JSON ordaithe, ach ní hionann iad siúd a thagann ó rinn imeall an ghraif;
  • De ghnáth déantar sonraí sa mhúnla doiciméid a dhínormalú; níl tú fós ag iarraidh go leor cóipeanna den doiciméad leabaithe céanna a stóráil, agus de ghnáth ní bhíonn aitheantóirí ag fodhoiciméid;
  • Ar an láimh eile, is é idé-eolaíocht doiciméad DBMSanna gur “comhiomláin” réidh iad na doiciméid nach gá a thógáil as an nua gach uair. Ní mór an tsamhail ghraif a sholáthar leis an gcumas foghraf a fháil go tapa a fhreagraíonn don doiciméad críochnaithe.

Beagán fógraíochta

Tá baint ag údar an ailt le forbairt an NitrosBase DBMS, a bhfuil an tsamhail inmheánach de ghraf, agus is iad na samhlacha seachtracha - coibhneasta agus doiciméad - a léiriúcháin. Tá na samhlacha uile comhionann: tá beagnach aon sonraí ar fáil in aon cheann acu ag baint úsáide as teanga fiosrúcháin atá nádúrtha dó. Thairis sin, in aon dearcadh, is féidir na sonraí a athrú. Léireofar athruithe sa mhúnla inmheánach agus, dá réir sin, i dtuairimí eile.

Tá súil agam go ndéanfaidh mé cur síos ar an gcuma atá ar mheaitseáil mhúnla in NitrosBase i gceann de na hailt seo a leanas.

Conclúid

Tá súil agam go bhfuil cur síos ginearálta ar an rud ar a dtugtar ilmhúnlú níos soiléire don léitheoir. Tá DBMSanna ilmhúnla an-difriúil, agus is féidir go mbeadh cuma difriúil ar “tacaíocht ilshamhail”. Chun tuiscint a fháil ar an rud ar a dtugtar "ilmhúnla" i ngach cás ar leith, tá sé úsáideach na ceisteanna seo a leanas a fhreagairt:

  1. An bhfuilimid ag caint faoi thacaíocht a thabhairt do mhúnlaí traidisiúnta nó samhail “hibrideach” éigin?
  2. An bhfuil na samhlacha “comhionann”, nó an bhfuil ceann acu ina ábhar do na samhlacha eile?
  3. An bhfuil na samhlacha “neamhdhifriúil” lena chéile? An féidir sonraí atá scríofa i múnla amháin a léamh i múnla eile nó fiú iad a fhorscríobh?

Sílim gur féidir an cheist faoi ábharthacht DBMS il-mhúnla a fhreagairt go dearfach cheana féin, ach is é an cheist suimiúil ná na cineálacha díobh a mbeidh éileamh níos mó orthu go luath amach anseo. Dealraíonn sé go mbeidh éileamh níos mó ar DBMSanna ilmhúnla a thacaíonn le samhlacha traidisiúnta, samhlacha coibhneasta go príomha; Is ábhar níos faide i gcéin é an tóir a bhí ar DBMSanna ilmhúnla, ag tairiscint samhlacha nua a chomhcheanglaíonn na buntáistí a bhaineann le cinn traidisiúnta éagsúla.

Ní féidir ach le húsáideoirí cláraithe páirt a ghlacadh sa suirbhé. Sínigh isteach, le do thoil.

An úsáideann tú DBMS ilmhúnla?

  • Ní úsáidimid é, stóráilimid gach rud in aon DBMS amháin agus i múnla amháin

  • Bainimid úsáid as cumais il-mhúnla de DBMSanna traidisiúnta

  • Cleachtaimid dianseasmhacht polyglot

  • Bainimid úsáid as DBMS ilshamhail nua (Arango, Orient, CosmosDB)

Vótáil 19 úsáideoir. Staon 4 úsáideoir.

Foinse: will.com

Add a comment