A bheil DBMSan ioma-mhodail mar bhunait air siostaman fiosrachaidh an latha an-diugh?

Tha siostaman fiosrachaidh ùr-nodha gu math iom-fhillte. Gu dearbh, tha an iom-fhillteachd aca mar thoradh air iom-fhillteachd an dàta a tha air a phròiseasadh annta. Bidh iom-fhillteachd dàta gu tric na laighe anns na diofar mhodalan dàta a thathar a’ cleachdadh. Mar sin, mar eisimpleir, nuair a thig dàta gu bhith “mòr”, chan e a-mhàin an tomhas-lìonaidh (tomhas-lìonaidh) a th’ ann am fear de na feartan trioblaideach, ach cuideachd am measgachadh (“caochladh”).

Mura h-eil thu fhathast air locht a lorg san reusanachadh, leugh air adhart.

A bheil DBMSan ioma-mhodail mar bhunait air siostaman fiosrachaidh an latha an-diugh?


Clàr-innse

Seasmhachd polyglot
Ioma-mhodail
DBMS ioma-mhodail stèidhichte air a 'mhodail dàimh
     Modail sgrìobhainnean ann an MS SQL Server
     Modail graf ann an MS SQL Server
DBMS ioma-mhodail stèidhichte air modail na sgrìobhainn
     Modail dàimheil ann an MarkLogic
     Modail graf ann an MarkLogic
DBMS ioma-mhodail “às aonais prìomh mhodail”
     ArangoDB
     OrientDB
     CosmosDB Azure
DBMS ioma-mhodail stèidhichte air modail graf?
co-dhùnadh
Poll

Seasmhachd polyglot

Tha na tha gu h-àrd a 'ciallachadh gu bheil uaireannan eadhon taobh a-staigh frèam aon shiostam feumar grunn DBMSan eadar-dhealaichte a chleachdadh gus dàta a stòradh agus fuasgladh fhaighinn air diofar dhuilgheadasan làimhseachaidh, agus tha gach fear dhiubh a' toirt taic don mhodail dàta aige fhèin. Le lamh aotrom M. Fowler, ùghdar grunn leabhraichean ainmeil agus aon de co-ùghdaran Agile Manifesto, canar an suidheachadh seo stòradh ioma-chaochlaideach ("leantuinn polyglot").

Tha an eisimpleir a leanas aig Fowler cuideachd air stòradh dàta a chuir air dòigh ann an tagradh làn-nochdadh agus làn luchd ann an raon e-malairt.

A bheil DBMSan ioma-mhodail mar bhunait air siostaman fiosrachaidh an latha an-diugh?

Tha an eisimpleir seo, gu dearbh, car àibheiseach, ach lorgar cuid de bheachdachaidhean airson DBMS aon no tè eile a thaghadh airson an adhbhar co-fhreagarrach, mar eisimpleir, an seo.

Tha e soilleir nach eil e furasta a bhith nad sheirbhiseach ann an sùgh mar sin.

  • Bidh an ìre de chòd a bhios a’ stòradh dàta a’ fàs ann an co-rèir ris an àireamh de DBMS a thathar a’ cleachdadh; tha an ìre de chòd sioncronaidh dàta math mura h-eil e co-rèireach ri ceàrnag an àireamh seo.
  • Mar iomadachadh den àireamh de DBMSn a thathar a’ cleachdadh, tha na cosgaisean airson feartan iomairt a sholarachadh (scalability, fulangas sgàinidhean, ruigsinneachd àrd) gach aon de na DBMSan a thathar a’ cleachdadh ag àrdachadh.
  • Tha e do-dhèanta dèanamh cinnteach à feartan iomairt an fho-shiostam stòraidh gu h-iomlan - gu sònraichte gnìomhachd.

Bho shealladh stiùiriche an sù, tha a h-uile dad a ’coimhead mar seo:

  • Àrdachadh iomadach ann an cosgais ceadan agus taic theicnigeach bhon neach-dèanamh DBMS.
  • Barrachd luchd-obrach agus cinn-ama nas àirde.
  • Call ionmhasail dìreach no peanasan mar thoradh air neo-chunbhalachd dàta.

Tha àrdachadh mòr ann an cosgais seilbh iomlan an t-siostaim (TCO). A bheil dòigh sam bith a-mach à suidheachadh “ioma roghainnean stòraidh”?

Ioma-mhodail

Thàinig am facal “stòradh ioma-chaochlaideach” gu feum ann an 2011. Thug mothachadh air duilgheadasan an dòigh-obrach agus lorg fuasgladh grunn bhliadhnaichean, agus ro 2015, tro bheul luchd-anailis Gartner, chaidh am freagairt a dhealbhadh:

Tha e coltach gu robh luchd-anailis Gartner an turas seo ceart leis an ro-aithris aca. Ma thèid thu dhan duilleag le prìomh rangachadh DBMS air DB-Engines, chì thu sinоBidh a’ mhòr-chuid de na stiùirichean aca gan suidheachadh fhèin gu sònraichte mar DBMSan ioma-mhodail. Tha an aon rud ri fhaicinn air an duilleag le rangachadh prìobhaideach sam bith.

Tha an clàr gu h-ìosal a 'sealltainn an DBMS - na stiùirichean anns gach rangachadh prìobhaideach, a tha ag ràdh gu bheil iad ioma-mhodail. Airson gach DBMS, tha am modail tùsail le taic (a bha uaireigin mar an aon fhear) agus còmhla ris na modalan a tha a’ faighinn taic an-dràsta air an comharrachadh. Cuideachd air an liostadh tha DBMSn a tha gan suidheachadh fhèin mar “ioma-mhodail bho thùs” agus, a rèir an luchd-cruthachaidh, aig nach eil modal tùsail sam bith.

DBMS Modail tùsail Modailean a bharrachd
Oracle Dàimheach Graf, sgrìobhainn
MS SQL Dàimheach Graf, sgrìobhainn
PostgreSQL Dàimheach Graf*, sgrìobhainn
MarkLogic Aithriseach Graf, dàimheil
MongoDB Aithriseach Prìomh-luach, graf*
DàtaStax Colbh farsaing Aithriseach, graf
Redis Prìomh-luach Prògram aithriseach, graf*
ArangoDB - Graf, sgrìobhainn
OrientDB - Graf, sgrìobhainn, dàimh
CosmosDB Azure - Graf, sgrìobhainn, dàimh

Notaichean air a ' bhòrd a

Tha rionnagan sa chlàr a’ comharrachadh aithrisean a dh’ fheumas teagamhan:

  • Chan eil am PostgreSQL DBMS a’ toirt taic don mhodail dàta graf, ach tha an toradh seo a’ toirt taic dha stèidhichte air, leithid AgensGraph.
  • A thaobh MongoDB, tha e nas ceart bruidhinn mu làthaireachd luchd-obrachaidh grafaichean ann an cànan na ceiste ($lookup, $graphLookup) na bhith a’ toirt taic don mhodail ghraf, ged, gu dearbh, bha feum aig an ro-ràdh aca air cuid de optimizations aig ìre stòraidh fiosaigeach a thaobh taic a thoirt don mhodail ghraf.
  • A thaobh Redis, tha sinn a 'ciallachadh an leudachadh Dearg-ghraf.

An ath rud, airson gach aon de na clasaichean, seallaidh sinn mar a tha taic airson grunn mhodalan air a bhuileachadh anns an DBMS bhon chlas seo. Beachdaichidh sinn air na modalan co-cheangailte, sgrìobhainn agus graf mar an fheadhainn as cudromaiche agus cleachdaidh sinn eisimpleirean de DBMS sònraichte gus sealltainn mar a tha na “feadhainn a tha a dhìth” air an cur an gnìomh.

DBMS ioma-mhodail stèidhichte air a 'mhodail dàimh

Tha na prìomh DBMSn an-dràsta càirdeach; cha b’ urrainnear beachdachadh air ro-aithris Gartner fìor mura do sheall RDBMSn gluasad a dh’ionnsaigh ioma-mhodail. Agus tha iad a 'nochdadh. A-nis faodar am beachd gu bheil DBMS ioma-mhodail coltach ri sgian Eilbheis, nach urrainn dad a dhèanamh gu math, a stiùireadh gu dìreach gu Larry Ellison.

Is fheàrr leis an ùghdar, ge-tà, cur an gnìomh ioma-mhodail ann an Microsoft SQL Server, air an eisimpleir air an tèid iomradh a thoirt air taic RDBMS airson modalan sgrìobhainn is graf.

Modail sgrìobhainnean ann an MS SQL Server

Tha dà artaigil sàr-mhath air a bhith ann mu thràth air Habré mu mar a bhios MS SQL Server a ’cur an gnìomh taic airson modail na sgrìobhainn; cuingichidh mi mi fhìn gu ath-aithris goirid agus aithris:

Tha an dòigh air taic a thoirt don mhodail sgrìobhainn ann an MS SQL Server gu math àbhaisteach airson DBMSs co-cheangailte: Thathas a’ moladh sgrìobhainnean JSON a stòradh ann an raointean teacsa àbhaisteach. Is e taic don mhodail sgrìobhainn a bhith a’ toirt seachad gnìomhaichean sònraichte gus an JSON seo a pharsadh:

  • JSON_VALUE gus luachan feartan sgalar a thoirt a-mach,
  • JSON_QUERY gus fo-sgrìobhainnean a thoirt a-mach.

Tha an dàrna argamaid aig an dà ghnìomhaiche na abairt ann an co-chòrdadh coltach ri JSONPath.

Gu h-aithghearr, faodaidh sinn a ràdh nach eil sgrìobhainnean a tha air an stòradh san dòigh seo nan “buidhnean den chiad ìre” ann an DBMS dàimheach, eu-coltach ri tuples. Gu sònraichte, ann an MS SQL Server chan eil clàran-amais ann an-dràsta air raointean sgrìobhainnean JSON, a tha ga dhèanamh duilich a dhol còmhla ri bùird a ’cleachdadh luachan nan raointean sin agus eadhon sgrìobhainnean a thaghadh a’ cleachdadh na luachan sin. Ach, tha e comasach colbh àireamhaichte a chruthachadh airson a leithid de raon agus clàr-amais air.

A bharrachd air an sin, tha MS SQL Server a’ toirt seachad comas sgrìobhainn JSON a thogail gu h-iomchaidh bho shusbaint chlàran a ’cleachdadh a’ ghnìomhaiche FOR JSON PATH - comas, ann an dòigh shònraichte, mu choinneamh an fhear roimhe, stòradh àbhaisteach. Tha e soilleir, ge bith dè cho luath ‘s a tha RDBMS, gu bheil an dòigh-obrach seo a’ dol an-aghaidh ideòlas sgrìobhainnean DBMS, a bhios gu bunaiteach a ’stòradh freagairtean deiseil do cheistean mòr-chòrdte, agus nach urrainn ach fuasgladh fhaighinn air duilgheadasan leasachaidh furasta, ach chan ann aig astar.

Mu dheireadh, leigidh MS SQL Server leat fuasgladh fhaighinn air an duilgheadas eile a thaobh togail sgrìobhainnean: faodaidh tu JSON a bhriseadh sìos gu bùird le bhith a ’cleachdadh OPENJSON. Mura h-eil an sgrìobhainn gu tur rèidh, feumaidh tu a chleachdadh CROSS APPLY.

Modail graf ann an MS SQL Server

Tha taic don mhodail graf (LPG) cuideachd air a làn bhuileachadh ann am Microsoft SQL Server ro-innseach: Thathas a 'moladh bùird sònraichte a chleachdadh airson nodan a stòradh agus oirean grafa a stòradh. Tha clàran mar seo air an cruthachadh a 'cleachdadh abairtean CREATE TABLE AS NODE и CREATE TABLE AS EDGE fa leth.

Tha clàran den chiad sheòrsa coltach ri clàran àbhaisteach airson clàran a stòradh, agus is e an aon eadar-dhealachadh bhon taobh a-muigh gu bheil raon siostam anns a’ chlàr $node_id - aithnichear sònraichte de nód graf taobh a-staigh an stòr-dàta.

San aon dòigh, tha raointean siostam aig clàran den dàrna seòrsa $from_id и $to_id, tha inntrigidhean ann an clàran mar sin a’ mìneachadh gu soilleir na ceanglaichean eadar nodan. Tha clàr air leth air a chleachdadh airson dàimhean de gach seòrsa a stòradh.

A bheil DBMSan ioma-mhodail mar bhunait air siostaman fiosrachaidh an latha an-diugh? Leig dhuinn seo a mhìneachadh le eisimpleir. Leig le cruth dàta a’ ghraf mar an tè a chithear san fhigear. An uairsin gus an structar co-fhreagarrach a chruthachadh san stòr-dàta feumaidh tu na ceistean DDL a leanas a ruith:

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 e prìomh shònrachas chlàran mar sin ann an ceistean nan aghaidh gu bheil e comasach pàtrain grafa a chleachdadh le co-chòrdadh coltach ri Cypher (ge-tà, “*chan eil "msaa a' faighinn taic fhathast). Stèidhichte air tomhasan coileanaidh, faodar gabhail ris cuideachd gu bheil an dòigh anns a bheil dàta air a stòradh anns na clàran sin eadar-dhealaichte bhon dòigh anns a bheil dàta air a stòradh ann an clàran cunbhalach agus air a bharrrachadh airson a leithid de cheistean grafa a choileanadh.

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

A bharrachd air an sin, tha e gu math duilich gun a bhith a’ cleachdadh na pàtrain grafa sin nuair a bhios tu ag obair le clàran mar sin, oir ann an ceistean àbhaisteach SQL gus fuasgladh fhaighinn air duilgheadasan coltach ris bidh e riatanach oidhirpean a bharrachd a dhèanamh gus aithnichearan nòta “graf” siostam fhaighinn ($node_id, $from_id, $to_id; Airson an aon adhbhar, chan eil ceistean airson dàta a chuir a-steach air an sealltainn an seo oir tha iad gun fheum).

Gus geàrr-chunntas a dhèanamh air an tuairisgeul air buileachadh nam modalan sgrìobhainn agus graf ann an MS SQL Server, bheirinn an aire nach eil coltas gu bheil buileachadh aon mhodail a bharrachd air fear eile soirbheachail, gu sònraichte a thaobh dealbhadh cànain. Feumar aon chànan a leudachadh le cànan eile, chan eil na cànanan gu tur “orthogonal”, faodaidh na riaghailtean co-chòrdalachd a bhith gu math neònach.

DBMS ioma-mhodail stèidhichte air modail na sgrìobhainn

Anns an earrainn seo, bu mhath leam a bhith a’ sealltainn buileachadh ioma-mhodail ann an sgrìobhainn DBMSs a’ cleachdadh an eisimpleir den fheadhainn nach eil cho mòr-chòrdte dhiubh, MongoDB (mar a chaidh a ràdh, chan eil aige ach gnìomhaichean grafa cumhach. $lookup и $graphLookup, gun a bhith ag obair air cruinneachaidhean gearraichte), ach a’ cleachdadh an eisimpleir de DBMS nas aibidh agus “iomairt” MarkLogic.

Mar sin, leig leis a’ chruinneachadh seata de sgrìobhainnean XML den t-seòrsa a leanas (Leigidh MarkLogic leat cuideachd sgrìobhainnean JSON a stòradh):

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

Modail dàimheil ann an MarkLogic

Faodar sealladh dàimheach de chruinneachadh de sgrìobhainnean a chruthachadh a’ cleachdadh teamplaid taisbeanaidh (susbaint nan eileamaidean value anns an eisimpleir gu h-ìosal faodaidh XPath neo-riaghailteach a bhith 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>

Faodaidh tu dèiligeadh ris an t-sealladh cruthaichte le ceist SQL (mar eisimpleir, tro ODBC):

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

Gu mì-fhortanach, tha an sealladh dàimheach a chruthaich an teamplaid taisbeanaidh ri leughadh a-mhàin. Nuair a bhios tu a’ giullachd iarrtas air a shon, feuchaidh MarkLogic ri chleachdadh clàran-amais sgrìobhainnean. Roimhe sin, cha robh mòran bheachdan dàimh aig MarkLogic, gu tur stèidhichte air clàr-amais agus sgriobhta, ach a nis tha iad air am meas neo-mhothachail.

Modail graf ann an MarkLogic

Le taic don mhodail graf (RDF), tha a h-uile dad timcheall air an aon rud. A-rithist le cuideachadh teamplaid taisbeanaidh Faodaidh tu riochdachadh RDF de chruinneachadh de sgrìobhainnean a chruthachadh bhon eisimpleir gu h-àrd:

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

Faodaidh tu dèiligeadh ris a’ ghraf RDF a thig às le ceist SPARQL:

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

Eu-coltach ris an fhear càirdeach, tha MarkLogic a’ toirt taic don mhodail ghraf ann an dà dhòigh eile:

  1. Faodaidh DBMS a bhith na stòradh làn-chuimsichte de dhàta RDF (thèid triplets ann a ghairm riaghladh an taca ris an fheadhainn a chaidh a mhìneachadh gu h-àrd air a thoirt a-mach).
  2. Faodar RDF ann an sreathachadh sònraichte a chuir a-steach do sgrìobhainnean XML no JSON (agus thèid triplets a ghairm an uairsin gun riaghladh). Is dòcha gur e seo roghainn eile seach innealan idref agus feadhainn eile.

Tha deagh bheachd air mar a tha cùisean “dha-rìribh” ag obair ann am MarkLogic air a thoirt seachad le Optical API, anns an t-seagh seo, tha e aig ìre ìosal, ged a tha an adhbhar aige gu math eadar-dhealaichte - feuchainn ri tarraing a-mach às a’ mhodail dàta a chaidh a chleachdadh, gus dèanamh cinnteach à obrachadh cunbhalach le dàta ann an diofar mhodalan, gnìomhachd, msaa.

DBMS ioma-mhodail “às aonais prìomh mhodail”

Tha DBMSan air a’ mhargaidh cuideachd a tha gan suidheachadh fhèin mar ioma-mhodail an toiseach, às aonais prìomh mhodail sam bith a chaidh a shealbhachadh. Nam measg tha ArangoDB, OrientDB (bho 2018 buinidh a’ chompanaidh leasachaidh do SAP) agus CosmosDB (seirbheis mar phàirt de àrd-ùrlar sgòthan Microsoft Azure).

Gu dearbh, tha modalan “bunaiteach” ann an ArangoDB agus OrientDB. Anns gach suidheachadh, is iad sin na modalan dàta aca fhèin, a tha nan coitcheannachadh den sgrìobhainn aon. Tha na coitcheannachadh gu ìre mhòr airson a bhith comasach air ceistean de ghraf agus nàdar dàimheach a dhèanamh.

Is e na modailean sin an aon fheadhainn a tha rim faighinn airson an cleachdadh anns an DBMS ainmichte; tha na cànanan ceiste aca fhèin air an dealbhadh gus obrachadh leotha. Gu dearbh, tha modalan mar seo agus DBMSn gealltanach, ach tha dìth co-chòrdalachd le modalan àbhaisteach agus cànanan ga dhèanamh do-dhèanta na DBMS sin a chleachdadh ann an siostaman dìleab - gus na DBMSan a chaidh a chleachdadh an sin a chuir an àite.

Bha artaigil iongantach ann mu thràth mu ArangoDB agus OrientDB air Habré: Thig còmhla ri stòran-dàta NoSQL.

ArangoDB

Tha ArangoDB a’ tagradh taic airson modal dàta graf.

Is e sgrìobhainnean àbhaisteach a th’ ann an nodan graf ann an ArangoDB, agus tha na h-oirean nan sgrìobhainnean de sheòrsa sònraichte a tha, còmhla ri raointean siostam àbhaisteach, aig (_key, _id, _rev) raointean siostam _from и _to. Tha sgrìobhainnean ann an sgrìobhainnean DBMS gu traidiseanta air an cur còmhla ann an cruinneachaidhean. Canar cruinneachaidhean iomall ann an ArangoDB ri cruinneachaidhean de sgrìobhainnean a tha a’ riochdachadh oirean. Air an t-slighe, tha sgrìobhainnean cruinneachadh iomall cuideachd nan sgrìobhainnean, agus mar sin faodaidh oirean ann an ArangoDB a bhith nan nodan cuideachd.

Fiosrachadh cruaidh

Leig leinn cruinneachadh a bhith againn persons, aig a bheil na sgrìobhainnean a’ coimhead mar seo:

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

Leig le cruinneachadh a bhith ann cuideachd cafes:

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

An uairsin an cruinneachadh likes coltas mar seo:

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

Ceistean agus toraidhean

Ceist ann an stoidhle graf anns a’ chànan AQL a thathar a’ cleachdadh ann an ArangoDB, a’ tilleadh ann an cruth a ghabhas leughadh le daoine fiosrachadh mu cò as toil leis a’ chafaidh, a’ coimhead mar seo:

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

Ann an stoidhle dàimh, far a bheil sinn “a’ dèanamh coimpiutaireachd ”dàimhean seach a bhith gan stòradh, faodar a’ cheist seo ath-sgrìobhadh mar seo (co-dhiù, às aonais a’ cho-chruinneachadh likes Dh'fhaodadh seo a dhèanamh às aonais):

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 }

Bidh an toradh anns an dà chùis mar an ceudna:

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

Barrachd cheistean agus toraidhean

Ma tha coltas gu bheil cruth an toraidh gu h-àrd nas àbhaistiche airson DBMS dàimheach na airson sgrìobhainn DBMS, faodaidh tu a’ cheist seo fheuchainn (no faodaidh tu a chleachdadh COLLECT):

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

Bidh an toradh a 'coimhead mar seo:

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

OrientDB

Is e am bunait airson modal grafa a chuir an gnìomh a bharrachd air modail sgrìobhainn ann an OrientDB cothrom raointean sgrìobhainnean, a bharrachd air barrachd no nas lugha de luachan sgalar àbhaisteach, cuideachd tha luachan de sheòrsan leithid LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. Is e luachan nan seòrsachan seo ceanglaichean no cruinneachaidhean de cheanglaichean gu aithnichearan siostam sgrìobhainnean.

Tha “brìgh corporra” aig an aithnichear sgrìobhainn a chaidh a shònrachadh leis an t-siostam, a’ nochdadh suidheachadh a’ chlàir san stòr-dàta, agus tha e a’ coimhead rudeigin mar seo: @rid : #3:16. Mar sin, tha luachan feartan iomraidh nan comharran dha-rìribh (mar a tha sa mhodail ghraf) seach suidheachaidhean taghaidh (mar a tha sa mhodail dàimh).

Coltach ri ArangoDB, tha oirean ann an OrientDB air an riochdachadh mar sgrìobhainnean fa leth (ged mura h-eil na feartan aige fhèin aig oir, faodar a dhèanamh aotrom, agus cha bhith e a’ freagairt ri sgrìobhainn air leth).

Fiosrachadh cruaidh

Ann an cruth faisg air cruth dump Stòr-dàta OrientDB, bhiodh an dàta bhon eisimpleir roimhe airson ArangoDB a’ coimhead rudeigin mar seo:

[
     {
      "@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 chì sinn, bidh vertices cuideachd a’ stòradh fiosrachadh mu oirean a-steach is a-mach. Aig a ’cleachdadh Feumaidh an Document API sùil a chumail air ionracas iomraidh fhèin, agus bidh an Graph API a’ gabhail ris an obair seo. Ach chì sinn cò ris a tha ruigsinneachd gu OrientDB coltach ann an cànanan ceiste “fìor-ghlan” nach eil air am filleadh a-steach do chànanan prògramaidh.

Ceistean agus toraidhean

Tha ceist coltach ris a’ cheist bhon eisimpleir airson ArangoDB ann an OrientDB a’ coimhead mar seo:

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

Gheibhear an toradh anns an fhoirm a leanas:

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

Ma tha coltas gu bheil cruth an toraidh a-rithist ro “càirdeil”, feumaidh tu an loidhne a thoirt air falbh le UNWIND():

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

Faodar cànan ceist OrientDB a mhìneachadh mar SQL le cuir a-steach coltach ri Gremlin. Ann an dreach 2.2, nochd foirm-iarrtais coltach ri 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

Bidh cruth an toraidh mar a bha e san iarrtas roimhe. Smaoinich air na dh’ fheumar a thoirt air falbh gus a dhèanamh nas “càirdeil”, mar a bha sa chiad cheist.

CosmosDB Azure

Gu ìre nas lugha, tha na chaidh a ràdh gu h-àrd mu ArangoDB agus OrientDB a’ buntainn ri Azure CosmosDB. Tha CosmosDB a’ toirt seachad na APIan ruigsinneachd dàta a leanas: SQL, MongoDB, Gremlin agus Cassandra.

Bithear a’ cleachdadh SQL API agus MongoDB API gus faighinn gu dàta anns a’ mhodail sgrìobhainn. Gremlin API agus Cassandra API - airson faighinn gu dàta ann an cruthan grafa is colbh, fa leth. Tha dàta anns a h-uile modal air a shàbhaladh ann an cruth modail a-staigh CosmosDB: ARS (“atom-record-sequence”), a tha cuideachd faisg air an sgrìobhainn a h-aon.

A bheil DBMSan ioma-mhodail mar bhunait air siostaman fiosrachaidh an latha an-diugh?

Ach tha am modail dàta a thagh an neach-cleachdaidh agus an API a chaidh a chleachdadh stèidhichte aig àm cruthachadh cunntas san t-seirbheis. Chan eil e comasach faighinn gu dàta air a luchdachadh ann an aon mhodail ann an cruth modail eile, mar a chithear le rudeigin mar seo:

A bheil DBMSan ioma-mhodail mar bhunait air siostaman fiosrachaidh an latha an-diugh?

Mar sin, chan eil ioma-mhodail ann an Azure CosmosDB an-diugh ach an comas grunn stòran-dàta a chleachdadh a ’toirt taic do dhiofar mhodalan bho aon neach-dèanamh, nach eil a’ fuasgladh a h-uile duilgheadas a thaobh stòradh ioma-chaochlaideach.

DBMS ioma-mhodail stèidhichte air modail graf?

Bu chòir a thoirt fa-near nach eil DBMS ioma-mhodail air a’ mhargaidh fhathast a tha stèidhichte air modal graf (ach a-mhàin taic ioma-mhodail airson dà mhodail graf aig an aon àm: RDF agus LPG; faic seo ann an fhoillseachadh roimhe). Tha na duilgheadasan as motha air an adhbhrachadh le bhith a’ buileachadh modal sgrìobhainn a bharrachd air modail graf, seach fear dàimheach.

Chaidh beachdachadh air a ’cheist mu mar a bu chòir modal dàimheach a chuir an gnìomh air mullach a’ mhodail ghraf eadhon nuair a chaidh an tè mu dheireadh a chruthachadh. Ciamar bruidhinnmar eisimpleir Daibhidh MacGobharn:

Chan eil dad dualach don dòigh grafa a chuireas casg air còmhdach a chruthachadh (me, le clàr-amais iomchaidh) air stòr-dàta graf a bheir comas sealladh dàimheil le (1) faighinn air ais tuples bho na paidhrichean luach àbhaisteach agus (2) cruinneachadh de tuples a rèir seòrsa dàimh.

Nuair a bhios tu a 'cur an gnìomh modail sgrìobhainn air mullach modail graf, feumaidh tu cuimhneachadh, mar eisimpleir, na leanas:

  • Thathas den bheachd gu bheil eileamaidean de shreath JSON òrdaichte, ach chan eil an fheadhainn a tha a’ tighinn bho oir oir a’ ghraf;
  • Mar as trice bidh dàta ann am modail na sgrìobhainn neo-riaghailteach; chan eil thu fhathast airson grunn leth-bhreacan den aon sgrìobhainn freumhaichte a stòradh, agus mar as trice chan eil aithnichearan aig fo-sgrìobhainnean;
  • Air an làimh eile, is e ideòlas sgrìobhainnean DBMS gu bheil sgrìobhainnean mar “cruinneachaidhean” deiseil nach fheumar a thogail às ùr gach turas. Feumar comas a thoirt don mhodail ghraf fo-sgrìobhadh fhaighinn gu sgiobalta a fhreagras ris an sgrìobhainn chrìochnaichte.

Beagan sanasachd

Tha ùghdar an artaigil co-cheangailte ri leasachadh an NitrosBase DBMS, is e graf a th 'anns a' mhodail a-staigh, agus tha na modailean taobh a-muigh - dàimheil agus sgrìobhainn - nan riochdachaidhean. Tha a h-uile modal co-ionann: tha cha mhòr dàta sam bith ri fhaighinn ann an gin dhiubh a’ cleachdadh cànan ceist a tha nàdarra dha. A bharrachd air an sin, ann an sealladh sam bith, faodar an dàta atharrachadh. Bidh atharrachaidhean air an nochdadh anns a’ mhodail a-staigh agus, mar sin, ann am beachdan eile.

Tha mi an dòchas gun toir mi cunntas air cò ris a bhios maids modail coltach ann an NitrosBase ann an aon de na h-artaigilean a leanas.

co-dhùnadh

Tha mi an dòchas gu bheil na geàrr-chunntasan coitcheann den rud ris an canar ioma-mhodaladh air fàs gu ìre mhòr soilleir don leughadair. Tha DBMSan ioma-mhodail gu math eadar-dhealaichte, agus faodaidh “taic ioma-mhodail” coimhead eadar-dhealaichte. Airson tuigsinn dè a chanas sinn ri "ioma-mhodail" anns gach cùis shònraichte, tha e feumail na ceistean a leanas a fhreagairt:

  1. A bheil sinn a’ bruidhinn mu bhith a’ toirt taic do mhodalan traidiseanta no seòrsa de mhodail “hybrid”?
  2. A bheil na modailean “co-ionann”, no a bheil fear dhiubh na chuspair don fheadhainn eile?
  3. A bheil na modailean “neo-chothromach” dha chèile? An urrainnear dàta a chaidh a sgrìobhadh ann an aon mhodail a leughadh ann an tè eile no eadhon ath-sgrìobhadh?

Tha mi a 'smaoineachadh gum faodar a' cheist mu cho iomchaidh 'sa tha DBMS ioma-mhodail a fhreagairt gu dearbhach mar-thà, ach is e a' cheist inntinneach dè an seòrsa dhiubh a bhios barrachd iarrtais a dh'aithghearr. Tha e coltach gum bi barrachd iarrtais air DBMSan ioma-mhodail a bheir taic do mhodalan traidiseanta, gu sònraichte co-cheangailte; Tha fèill mhòr air DBMSan ioma-mhodail, a’ tabhann mhodalan ùra a tha a’ cothlamadh buannachdan diofar fheadhainn thraidiseanta, na chùis air an àm ri teachd nas fhaide air falbh.

Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh. Soidhnig a-steach, mas e do thoil e.

Am bi thu a’ cleachdadh DBMS ioma-mhodail?

  • Cha bhith sinn ga chleachdadh, bidh sinn a’ stòradh a h-uile càil ann an aon DBMS agus ann an aon mhodail

  • Bidh sinn a’ cleachdadh comasan ioma-mhodail de DBMS traidiseanta

  • Bidh sinn a’ cleachdadh seasmhachd polyglot

  • Bidh sinn a’ cleachdadh DBMS ioma-mhodail ùr (Arango, Orient, CosmosDB)

Bhòt 19 neach-cleachdaidh. Cha do stad 4 neach-cleachdaidh.

Source: www.habr.com

Cuir beachd ann