Оё МДМ-ҳои бисёрмодел асоси системаҳои иттилоотии муосир мебошанд?

Системаҳои иттилоотии муосир хеле мураккабанд. На камтар аз ҳама, мураккабии онҳо аз мураккабии маълумоти коркардшуда дар онҳо вобаста аст. Мушкилии маълумот аксар вақт дар гуногунии моделҳои додаҳои истифодашуда вобаста аст. Ҳамин тавр, масалан, вақте ки маълумот "калон" мешавад, яке аз хусусиятҳои мушкилот на танҳо ҳаҷми он ("ҳаҷм"), балки гуногунии он низ мебошад ("гуногун").

Агар шумо ҳанӯз дар мулоҳиза камбудӣ пайдо накунед, пас хонед.

Оё МДМ-ҳои бисёрмодел асоси системаҳои иттилоотии муосир мебошанд?


Мундариҷа

Полиглот устуворӣ
Модели бисёрҷониба
DBMS бисёр модели дар асоси модели релятсионӣ
     Модели ҳуҷҷат дар MS SQL Server
     Модели графикӣ дар MS SQL Server
DBMS бисёр модели дар асоси модели ҳуҷҷат
     Модели релятсионӣ дар MarkLogic
     Модели графикӣ дар MarkLogic
DBMS бисёр модели "бе модели асосӣ"
     ArangoDB
     OrientDB
     Azure CosmosDB
DBMS бисёр модели дар асоси модели графикӣ?
хулоса
Poll

Полиглот устуворӣ

Гуфтањои боло ба он оварда мерасонад, ки баъзан њатто дар доираи як система барои нигоњдории маълумот ва њалли масъалањои гуногуни коркарди онњо, ки њар кадоми онњо модели додањои худро дастгирї мекунанд, якчанд МДМ-њои гуногунро истифода бурдан лозим меояд. Бо дасти сабуки М.Фаулер. муаллиф як катор китобхои машхур ва яке аз хаммуаллифон Манифести Agile, ин вазъият номида мешавад нигаҳдории бисёрҷониба («Полиглот устуворӣ»).

Фоулер инчунин намунаи зерини ташкили нигаҳдории маълумотро дар як барномаи мукаммал ва пурбор дар соҳаи тиҷорати электронӣ дорад.

Оё МДМ-ҳои бисёрмодел асоси системаҳои иттилоотии муосир мебошанд?

Ин мисол, албатта, то андозае муболиғашуда аст, аммо баъзе мулоҳизаҳоро ба манфиати интихоби ин ё он DBMS барои мақсадҳои мувофиқ пайдо кардан мумкин аст, масалан, дар ин ҷо.

Маълум аст, ки дар чунин боги хайвонот хизматгор будан осон нест.

  • Миқдори коде, ки нигоҳдории маълумотро иҷро мекунад, мутаносибан ба шумораи DBMS-ҳои истифодашуда меафзояд; миқдори маълумоти ҳамоҳангсозии код хуб аст, агар ба квадрати ин рақам мутаносиб набошад.
  • Ҳамчун чандкаратаи шумораи МДМ-ҳои истифодашуда, хароҷоти пешниҳоди хусусиятҳои корхона (миқёспазирӣ, таҳаммулпазирӣ ба хатогиҳо, дастрасии баланд) ҳар яке аз МБМ-ҳои истифодашуда меафзояд.
  • Хусусиятҳои корхонаи зерсистемаи нигоҳдорӣ дар маҷмӯъ - махсусан муомилотро таъмин кардан ғайриимкон аст.

Аз нуқтаи назари директори боғи ҳайвонот ҳама чиз чунин менамояд:

  • Афзоиши чандкаратаи арзиши иҷозатномаҳо ва дастгирии техникӣ аз истеҳсолкунандаи DBMS.
  • Зиёд кардани штат ва зиёд кардани мухлат.
  • Талафоти мустақими молиявӣ ё ҷаримаҳо аз сабаби номутобиқатии маълумот.

Арзиши умумии моликияти система (TCO) хеле зиёд мешавад. Оё ягон роҳи раҳоӣ аз вазъияти "варианти сершумори нигаҳдорӣ" вуҷуд дорад?

Модели бисёрҷониба

Истилоҳи "нигаҳдории бисёрҷониба" соли 2011 мавриди истифода қарор гирифт. Огоҳӣ аз мушкилоти бархӯрд ва ҷустуҷӯи роҳи ҳалли онҳо чанд сол тӯл кашид ва то соли 2015 тавассути даҳони таҳлилгарони Gartner ҷавоб чунин таҳия шуд:

Чунин ба назар мерасад, ки ин дафъа таҳлилгарони Gartner бо пешгӯии худ дуруст буданд. Агар шумо ба саҳифаи бо рейтинги асосӣ DBMS дар DB-Engines, шумо инро мебинедоАксарияти роҳбарони он худро махсусан ҳамчун DBMS-и бисёрмодели ҷойгир мекунанд. Ҳаминро дар саҳифа бо ҳама гуна рейтинги хусусӣ дидан мумкин аст.

Дар ҷадвали зер DBMS нишон дода шудааст - пешвоёни ҳар як рейтинги хусусӣ, ки даъвои бисёр модели мебошанд. Барои ҳар як DBMS модели аслии дастгирӣшуда (ки як вақт ягона буд) ва дар баробари он моделҳои дар айни замон дастгирӣшаванда нишон дода мешаванд. Инчунин, DBMS-ҳо номбар шудаанд, ки худро ҳамчун "аслан бисёр модел" ҷойгир мекунанд ва ба гуфтаи созандагон, ягон модели ибтидоии меросӣ надоранд.

DBMS Модели ибтидоӣ Моделҳои иловагӣ
Oracle Муносибатӣ График, ҳуҷҷат
MS SQL Муносибатӣ График, ҳуҷҷат
PostgreSQL Муносибатӣ График*, хуччат
MarkLogic Филми ҳуҷҷатӣ График, реляционӣ
Муғулистон Филми ҳуҷҷатӣ Калид-арзиш, график*
DataStax Сутуни васеъ Фильми хуччатй, график
Redis Калид-арзиш Фильми хуччатй, график*
ArangoDB - График, ҳуҷҷат
OrientDB - График, ҳуҷҷат, релятсионӣ
Azure CosmosDB - График, ҳуҷҷат, релятсионӣ

Қайдҳо дар ҷадвал

Ситораҳо дар ҷадвал изҳоротҳоеро нишон медиҳанд, ки қайдкуниро талаб мекунанд:

  • DBMS PostgreSQL модели додаҳои графикиро дастгирӣ намекунад, аммо ин маҳсулот онро дастгирӣ мекунад дар асоси он, ба монанди AgensGraph.
  • Дар робита ба MongoDB, дар бораи мавҷудияти операторҳои графикӣ дар забони дархост сухан гуфтан дурусттар аст ($lookup, $graphLookup) нисбат ба дастгирии модели графикӣ, гарчанде ки албатта ҷорӣ намудани онҳо баъзе оптимизатсияҳоро дар сатҳи нигоҳдории физикӣ дар самти дастгирии модели графикӣ талаб мекард.
  • Дар робита ба Redis, мо тамдидро дар назар дорем RedisGraph.

Минбаъд, барои ҳар як синф, мо нишон медиҳем, ки чӣ гуна дастгирӣ барои якчанд моделҳо дар DBMS аз ин синф амалӣ карда мешавад. Мо моделҳои реляционӣ, ҳуҷҷатӣ ва графикиро муҳимтарин мешуморем ва намунаҳои DBMS-ҳои мушаххасро барои нишон додани он, ки чӣ гуна "нобудшудаҳо" амалӣ карда мешаванд, истифода мебарем.

DBMS бисёр модели дар асоси модели релятсионӣ

Дар айни замон DBMS-ҳои пешқадам релятсионӣ мебошанд; Пешгӯии Gartner наметавонад дуруст ҳисобида шавад, агар RDBMSҳо ҳаракатро дар самти бисёр моделсозӣ нишон надиҳанд. Ва намоиш медиханд. Акнун фикри он, ки DBMS-и бисёрмодели ба корди швейтсарӣ монанд аст, ки ҳеҷ кореро хуб карда наметавонад, метавонад мустақиман ба Ларри Эллисон равона карда шавад.

Аммо, муаллиф татбиқи бисёр моделсозӣ дар Microsoft SQL Serverро афзалтар медонад, ки дар мисоли он дастгирии RDBMS барои моделҳои ҳуҷҷат ва график тавсиф карда мешавад.

Модели ҳуҷҷат дар MS SQL Server

Дар бораи Habré аллакай ду мақолаи олӣ дар бораи он ки чӣ гуна MS SQL Server дастгирии модели ҳуҷҷатро амалӣ мекунад; Ман худамро бо такрори мухтасар ва тафсир маҳдуд мекунам:

Тарзи дастгирии модели ҳуҷҷат дар MS SQL Server барои DBMS-и релятсионӣ хеле маъмул аст: ҳуҷҷатҳои JSON пешниҳод карда мешаванд, ки дар майдонҳои матнии оддӣ нигоҳ дошта шаванд. Дастгирии модели ҳуҷҷат ин пешниҳод кардани операторҳои махсус барои таҳлили ин JSON мебошад:

  • JSON_VALUE барои истихроҷи арзишҳои атрибутҳои скалярӣ,
  • JSON_QUERY зерҳуҷҷатҳоро бароранд.

Далели дуюми ҳарду оператор ифода дар синтаксиси JSONPath монанд аст.

Ба таври абстрактӣ, мо метавонем бигӯем, ки ҳуҷҷатҳое, ки бо ин роҳ нигоҳ дошта мешаванд, ба фарқ аз наворҳо, дар DBMS-и релятсионӣ "объектҳои дараҷаи аввал" нестанд. Махсусан, дар MS SQL Server дар айни замон дар майдонҳои ҳуҷҷатҳои JSON индекс мавҷуд нест, ки ҳамроҳ кардани ҷадвалҳо бо истифода аз арзишҳои ин майдонҳо ва ҳатто интихоби ҳуҷҷатҳоро бо истифода аз ин арзишҳо душвор месозад. Аммо барои чунин майдон сутуни ҳисобшуда ва дар он индекс эҷод кардан мумкин аст.

Илова бар ин, MS SQL Server имкон медиҳад, ки ҳуҷҷати JSON-ро аз мундариҷаи ҷадвалҳо бо истифода аз оператор ба осонӣ созад. FOR JSON PATH - имкони ба маънои муайян бар хилофи нигоҳдории муқаррарӣ. Равшан аст, ки новобаста аз он ки RDBMS то чӣ андоза зуд аст, ин равиш хилофи идеологияи DBMS-ҳои ҳуҷҷат аст, ки аслан ҷавобҳои омодаро ба дархостҳои маъмул нигоҳ медорад ва метавонад танҳо мушкилоти осонии рушдро ҳал кунад, аммо суръатро не.

Ниҳоят, MS SQL Server ба шумо имкон медиҳад, ки мушкилоти баръакси сохтани ҳуҷҷатҳоро ҳал кунед: шумо метавонед JSON-ро ба ҷадвалҳо бо истифода аз тақсим кунед. OPENJSON. Агар ҳуҷҷат комилан ҳамвор набошад, шумо бояд истифода баред CROSS APPLY.

Модели графикӣ дар MS SQL Server

Дастгирии модели графикӣ (LPG) инчунин дар Microsoft SQL Server пурра амалӣ карда мешавад пешбинишаванда: Барои нигоҳ доштани гиреҳҳо ва нигоҳ доштани кунҷҳои график истифода бурдани ҷадвалҳои махсус пешниҳод карда мешавад. Чунин ҷадвалҳо бо истифода аз ифодаҳо сохта мешаванд CREATE TABLE AS NODE и CREATE TABLE AS EDGE мутаносибан.

Ҷадвалҳои навъи якум ба ҷадвалҳои муқаррарӣ барои нигоҳ доштани сабтҳо монанданд, танҳо фарқияти беруна дар он аст, ки ҷадвал майдони системаро дар бар мегирад. $node_id — идентификатори ягонаи гиреҳи графикӣ дар пойгоҳи додаҳо.

Ба ҳамин монанд, ҷадвалҳои навъи дуюм дорои майдонҳои системавӣ мебошанд $from_id и $to_id, сабтҳо дар чунин ҷадвалҳо робитаҳои байни гиреҳҳоро равшан муайян мекунанд. Барои нигоҳ доштани муносибатҳои ҳар як намуди ҷадвал ҷадвали алоҳида истифода мешавад.

Оё МДМ-ҳои бисёрмодел асоси системаҳои иттилоотии муосир мебошанд? Биёед инро бо як мисол равшан кунем. Бигзор маълумоти графикӣ дорои тарҳи монанде бошад, ки дар расм нишон дода шудааст. Пас барои сохтани сохтори мувофиқ дар базаи маълумот шумо бояд дархостҳои зерини DDL-ро иҷро кунед:

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

Хусусияти асосии чунин ҷадвалҳо дар он аст, ки дар дархостҳо алайҳи онҳо намунаҳои графикиро бо синтаксиси Cypher монанд истифода бурдан мумкин аст (аммо, "*"ва ғайра ҳанӯз дастгирӣ намешавад). Дар асоси ченакҳои иҷро, инчунин метавон тахмин кард, ки тарзи нигоҳдории маълумот дар ин ҷадвалҳо аз тарзи нигоҳдории маълумот дар ҷадвалҳои муқаррарӣ фарқ мекунад ва барои иҷрои чунин дархостҳои графикӣ оптимизатсия карда шудааст.

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

Ғайр аз он, ҳангоми кор бо чунин ҷадвалҳо истифода накардани ин намунаҳои графикӣ хеле душвор аст, зеро дар дархостҳои оддии SQL барои ҳалли мушкилоти шабеҳ барои дарёфти идентификаторҳои гиреҳи система "график" кӯшишҳои иловагӣ ба харҷ додан лозим аст ($node_id, $from_id, $to_id; Бо ҳамин сабаб, дархостҳо барои ворид кардани маълумот дар ин ҷо нишон дода намешаванд, зеро онҳо нолозим мебошанд).

Барои ҷамъбасти тавсифи татбиқи моделҳои ҳуҷҷат ва графикӣ дар MS SQL Server, ман қайд мекунам, ки чунин татбиқи як модел ба болои модели дигар, пеш аз ҳама аз нуқтаи назари тарҳрезии забон, муваффақ ба назар намерасад. Як забонро бо забони дигар васеъ кардан лозим аст, забонҳо комилан "ортогоналӣ" нестанд, қоидаҳои мувофиқат метавонад хеле аҷиб бошад.

DBMS бисёр модели дар асоси модели ҳуҷҷат

Дар ин бахш, ман мехоҳам татбиқи бисёр модели ҳуҷҷатҳои DBMS-ро бо истифода аз мисоли маъмултарини онҳо MongoDB нишон диҳам (чунон ки гуфта шуд, он танҳо операторҳои графикии шартӣ дорад) $lookup и $graphLookup, на дар коллексияҳои тақсимшуда кор мекунад), балки бо истифода аз мисоли DBMS баркамолтар ва "корхонавӣ" MarkLogic.

Ҳамин тавр, бигзор коллексия маҷмӯи ҳуҷҷатҳои XML-и навъи зеринро дар бар гирад (MarkLogic инчунин ба шумо имкон медиҳад, ки ҳуҷҷатҳои JSON-ро нигоҳ доред):

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

Модели релятсионӣ дар MarkLogic

Намоиши реляционии маҷмӯи ҳуҷҷатҳоро бо истифода аз он сохтан мумкин аст Шаблон намоиш (мазмуни элементҳо value дар мисоли зер метавонад XPath-и худсарона бошад):

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

Шумо метавонед ба намуди офаридашуда бо дархости SQL муроҷиат кунед (масалан, тавассути ODBC):

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

Мутаассифона, намуди релятсионӣ, ки аз ҷониби қолаби намоиш сохта шудааст, танҳо барои хондан аст. Ҳангоми коркарди дархост барои он, MarkLogic кӯшиш мекунад, ки истифода барад индексҳои ҳуҷҷат. Пештар, MarkLogic комилан назари маҳдуди муносибатӣ дошт ба индекс асос ёфтааст ва навиштан мумкин аст, аммо ҳоло онҳо бекоршуда ҳисобида мешаванд.

Модели графикӣ дар MarkLogic

Бо дастгирии модели графикӣ (RDF) ҳама чиз тақрибан якхела аст. Боз бо ёрии Шаблон намоиш шумо метавонед аз мисоли дар боло овардашуда муаррифии RDF-и маҷмӯи ҳуҷҷатҳоро эҷод кунед:

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

Шумо метавонед бо дархости SPARQL ба графики натиҷавии RDF муроҷиат кунед:

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

Баръакси релятсионӣ, MarkLogic модели графикиро бо ду роҳи дигар дастгирӣ мекунад:

  1. DBMS метавонад як анбори алоҳидаи пурраи маълумоти RDF бошад (сегона дар он номида мешавад идора дар муқоиса бо онҳое, ки дар боло тавсиф шудаанд истихроҷ шудааст).
  2. RDF-ро дар силсиласозии махсус метавон танҳо ба ҳуҷҷатҳои XML ё JSON ворид кард (ва баъдан сегонаҳо номида мешаванд идорашаванда). Ин шояд алтернатива ба механизмҳо бошад idref ва дигарон.

Фикри хуб дар бораи чӣ гуна кор кардани чизҳо дар MarkLogic аз ҷониби "воқеан" дода шудааст API оптикӣ, ба ин маъно, он сатҳи паст аст, гарчанде ки ҳадафи он баръакс аст - кӯшиши абстракт кардани модели додаҳои истифодашуда, таъмини кори пайваста бо додаҳо дар моделҳои гуногун, транзаксия ва ғайра.

DBMS бисёр модели "бе модели асосӣ"

Дар бозор инчунин DBMS-ҳо мавҷуданд, ки худро ҳамчун модели бисёрсоҳавӣ бе ягон модели асосии меросӣ ҷойгир мекунанд. Ба инхо дохил мешаванд ArangoDB, OrientDB (аз соли 2018 ширкати рушд ба SAP тааллуқ дорад) ва CosmosDB (хизмат ҳамчун як қисми платформаи абрии Microsoft Azure).

Дар асл, дар ArangoDB ва OrientDB моделҳои "аслӣ" мавҷуданд. Дар ҳарду ҳолат, инҳо моделҳои додаҳои худи онҳо мебошанд, ки умумияти ҳуҷҷати якум мебошанд. Умумкуниҳо асосан барои осон кардани қобилияти иҷрои дархостҳои графикӣ ва хусусияти релятсионӣ мебошанд.

Ин моделҳо ягона моделҳое мебошанд, ки барои истифода дар DBMS мушаххас дастрасанд; забонҳои дархости онҳо барои кор бо онҳо тарҳрезӣ шудаанд. Албатта, чунин моделҳо ва DBMS-ҳо умедбахшанд, аммо набудани мутобиқат бо моделҳо ва забонҳои стандартӣ истифодаи ин DBMS-ро дар системаҳои кӯҳна ғайриимкон месозад - иваз кардани DBMS-ҳои дар он ҷо истифодашуда.

Дар Habré аллакай мақолаи олиҷаноб дар бораи ArangoDB ва OrientDB мавҷуд буд: Дар пойгоҳи додаҳои NoSQL ҲАМРОХ шавед.

ArangoDB

ArangoDB даъвои дастгирии модели додаҳои графикиро дорад.

Гиреҳҳои график дар ArangoDB ҳуҷҷатҳои оддӣ мебошанд ва кунҷҳо ҳуҷҷатҳои навъи махсус мебошанд, ки дар баробари майдонҳои муқаррарии система дорои (_key, _id, _rev) майдонҳои система _from и _to. Ҳуҷҷатҳо дар ҳуҷҷатҳои DBMS ба таври анъанавӣ ба коллексияҳо муттаҳид карда мешаванд. Маҷмӯаҳои ҳуҷҷатҳое, ки канорҳоро намояндагӣ мекунанд, дар ArangoDB коллексияҳои канор номида мешаванд. Дар омади гап, ҳуҷҷатҳои ҷамъоварии канорӣ низ ҳуҷҷатҳо мебошанд, аз ин рӯ кунҷҳо дар ArangoDB низ метавонанд ҳамчун гиреҳ амал кунанд.

Маълумоти ибтидоӣ

Биёед коллексия дошта бошем persons, ки ҳуҷҷатҳои онҳо чунинанд:

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

Бигузор коллекция хам бошад cafes:

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

Сипас коллексия likes чунин метобад:

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

Саволҳо ва натиҷаҳо

Дархости услуби графикӣ бо забони AQL, ки дар ArangoDB истифода мешавад, маълумотро дар шакли ба одамон хондашаванда дар бораи он ки кӣ кадом қаҳвахонаро дӯст медорад, бармегардонад, чунин менамояд:

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

Дар услуби релятсионӣ, ки дар он мо муносибатҳоро ба ҷои нигоҳ доштани онҳо "ҳисоб кардан" мекунем, ин дархостро метавон ба ин тариқ аз нав навишт (дар омади гап, бидуни ҷамъоварӣ). likes метавонист бе):

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 }

Натиҷа дар ҳарду ҳолат яксон хоҳад буд:

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

Саволҳо ва натиҷаҳои бештар

Агар формати натиҷаҳои дар боло овардашуда нисбат ба ҳуҷҷати МДМ-и релятсионӣ бештар маъмултар бошад, шумо метавонед ин дархостро санҷед (ё шумо метавонед COLLECT):

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

Натиҷа чунин хоҳад буд:

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

OrientDB

Асос барои татбиқи модели графикӣ дар болои модели ҳуҷҷат дар OrientDB мебошад имконият Майдонҳои ҳуҷҷат, ба ғайр аз арзишҳои скалярии стандартӣ, инчунин дорои арзишҳои намудҳо ба монанди LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. Арзишҳои ин намудҳо истинодҳо ё маҷмӯаҳои истинодҳо мебошанд идентификаторҳои система хуччатхо.

Идентификатори ҳуҷҷате, ки система таъин кардааст, дорои "маънои ҷисмонӣ" мебошад, ки мавқеи сабтро дар пойгоҳи додаҳо нишон медиҳад ва чунин менамояд: @rid : #3:16. Ҳамин тариқ, арзишҳои хосиятҳои истинод воқеан нишондиҳандаҳо мебошанд (ба мисли модели графикӣ) на шартҳои интихоб (ба мисли модели релятсионӣ).

Мисли ArangoDB, кунҷҳо дар OrientDB ҳамчун ҳуҷҷатҳои алоҳида муаррифӣ мешаванд (гарчанде ки агар канор хосиятҳои худро надошта бошад, онро метавон сохт сабук, ва он ба ҳуҷҷати алоҳида мувофиқат намекунад).

Маълумоти ибтидоӣ

Дар формати наздик формати партов Махзани маълумоти OrientDB, маълумот аз мисоли қаблӣ барои 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"
    }
  ]

Тавре ки мо мебинем, қуллаҳо инчунин маълумотро дар бораи кунҷҳои даромад ва баромад нигоҳ медоранд. Дар истифода API Document бояд тамомияти истинодро назорат кунад ва API Graph ин корро ба ӯҳда мегирад. Аммо биёед бубинем, ки дастрасӣ ба OrientDB дар забонҳои пурсиши "соф", ки ба забонҳои барномасозӣ ворид карда нашудаанд, чӣ гуна аст.

Саволҳо ва натиҷаҳо

Дархосте, ки ҳадафаш ба дархости намунаи ArangoDB дар OrientDB монанд аст, чунин менамояд:

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

Натиҷа дар шакли зерин ба даст оварда мешавад:

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

Агар формати натиҷа бори дигар хеле "муносиб" ба назар расад, шумо бояд хатро бо он хориҷ кунед UNWIND():

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

Забони дархости OrientDB-ро метавон ҳамчун SQL бо иловаҳои ба Gremlin монанд тавсиф кард. Дар версияи 2.2, шакли дархости 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

Формати натиҷа ҳамон тавре ки дар дархости қаблӣ буд, хоҳад буд. Дар бораи он фикр кунед, ки чӣ бояд хориҷ карда шавад, то он бештар "муносибат" кунад, ба монанди дар дархости аввал.

Azure CosmosDB

Ба андозаи камтар, он чизе ки дар боло дар бораи ArangoDB ва OrientDB гуфта шуда буд, ба Azure CosmosDB дахл дорад. CosmosDB API-ҳои зерини дастрасии додаҳоро таъмин мекунад: SQL, MongoDB, Gremlin ва Cassandra.

SQL API ва MongoDB API барои дастрасӣ ба маълумот дар модели ҳуҷҷат истифода мешаванд. Gremlin API ва Cassandra API - барои дастрасӣ ба маълумот дар форматҳои графикӣ ва сутун мутаносибан. Маълумот дар ҳама моделҳо дар формати дохилии модели CosmosDB захира карда мешаванд: ARS («atom-record-sequence»), ки низ ба ҳуҷҷати якум наздик аст.

Оё МДМ-ҳои бисёрмодел асоси системаҳои иттилоотии муосир мебошанд?

Аммо модели додаҳои интихобкардаи корбар ва API-и истифодашуда ҳангоми эҷоди ҳисоб дар хидмат муқаррар карда мешаванд. Дастрасӣ ба маълумоте, ки дар як модел дар формати модели дигар бор карда шудааст, имконнопазир аст, чуноне ки бо чунин тасвир тасвир шудааст:

Оё МДМ-ҳои бисёрмодел асоси системаҳои иттилоотии муосир мебошанд?

Ҳамин тариқ, модели бисёрҷониба дар Azure CosmosDB имрӯз танҳо қобилияти истифодаи якчанд пойгоҳи додаҳо мебошад, ки моделҳои гуногуни як истеҳсолкунандаро дастгирӣ мекунанд, ки на ҳама мушкилоти нигаҳдории бисёрвариантҳоро ҳал мекунанд.

DBMS бисёр модели дар асоси модели графикӣ?

Ҷолиби диққат он аст, ки дар бозор то ҳол ягон DBMS-ҳои бисёрмодели вуҷуд надоранд, ки ба модели графикӣ асос ёфтаанд (ба истиснои дастгирии бисёрмоделҳо барои ҳамзамон ду модели графикӣ: RDF ва LPG; инро дар нашри қаблӣ). Мушкилоти калонтарин дар натиҷаи татбиқи модели ҳуҷҷат дар болои модели графикӣ ба вуҷуд меоянд, на модели релятсионӣ.

Масъалаи чӣ гуна амалӣ кардани модели релятсионӣ дар болои модели графикӣ ҳатто ҳангоми ташаккули охирин баррасӣ карда шуд. Чӣ хел гуфт, масалан, Дэвид Макговерн:

Дар равиши графикӣ ҳеҷ чизи хосе вуҷуд надорад, ки эҷоди қабатро (масалан, бо роҳи индексатсияи мувофиқ) дар пойгоҳи додаҳои графикӣ пешгирӣ кунад, ки назари релятсионӣ бо (1) барқароркунии наворҳо аз ҷуфтҳои муқаррарии арзиши калидӣ ва (2) гурӯҳбандии наворҳо аз рӯи намуди муносибат.

Ҳангоми татбиқи модели ҳуҷҷат дар болои модели графикӣ, шумо бояд дар хотир доред, масалан, зерин:

  • Унсурҳои массиви JSON фармоишӣ ҳисобида мешаванд, аммо онҳое, ки аз қуллаи канори график мебароянд, нестанд;
  • Маълумот дар модели ҳуҷҷат одатан ғайримуқаррарӣ карда мешавад; шумо ҳоло ҳам намехоҳед, ки якчанд нусхаи ҳамон як ҳуҷҷати дарунсохтро нигоҳ доред ва зерҳуҷҷатҳо одатан идентификатор надоранд;
  • Аз тарафи дигар, идеологияи МДМ ҳуҷҷатҳо дар он аст, ки ҳуҷҷатҳо «агрегатҳои» тайёр мебошанд, ки ҳар дафъа аз нав сохтан лозим нест. Модели графикиро бо қобилияти зуд ба даст овардани субграфи мувофиқ ба ҳуҷҷати тайёр таъмин кардан лозим аст.

Як каме реклама

Муаллифи мақола ба таҳияи DBMS NitrosBase марбут аст, ки модели дохилии он график аст ва моделҳои берунӣ - релятсионӣ ва ҳуҷҷатӣ - намояндагии он мебошанд. Ҳама моделҳо баробаранд: қариб ҳама маълумот дар ҳар кадоми онҳо бо истифода аз забони дархост, ки барои он табиӣ аст, дастрас аст. Илова бар ин, дар ҳама гуна намуди, маълумот метавонад тағир дода шавад. Тағйирот дар модели дохилӣ ва мутаносибан дар дигар дидгоҳҳо инъикос хоҳанд шуд.

Ман умедворам, ки дар яке аз мақолаҳои зерин тавсиф мекунам, ки мувофиқати модел дар NitrosBase чӣ гуна аст.

хулоса

Умедворам, ки контури умумии он чизе, ки бисёр моделсозӣ номида мешавад, барои хонанда каму беш фаҳмо шудааст. DBMS-ҳои бисёрмодели комилан фарқ мекунанд ва "дастгирии бисёрмоделҳо" метавонанд гуногун бошанд. Барои фаҳмидани он, ки дар ҳар як ҳолати мушаххас чӣ "мултимодел" номида мешавад, ҷавоб додан ба саволҳои зерин муфид аст:

  1. Оё мо дар бораи дастгирии моделҳои анъанавӣ ё як навъ модели "гибридӣ" гап мезанем?
  2. Оё моделҳо "баробаранд" ё яке аз онҳо мавзӯи дигарон аст?
  3. Оё моделҳо нисбат ба ҳамдигар «бепарво» ҳастанд? Оё маълумоте, ки дар як модел навишта шудааст, метавонад бо дигараш хонда шавад ё ҳатто аз нав навишта шавад?

Ман фикр мекунам, ки ба савол дар бораи аҳамияти МДМ-и бисёрмодеалӣ аллакай ҷавоби мусбат додан мумкин аст, аммо саволи ҷолиб ин аст, ки кадом намуди онҳо дар ояндаи наздик бештар талабот хоҳанд дошт. Чунин ба назар мерасад, ки DBMS-ҳои бисёрмоделе, ки моделҳои анъанавиро дастгирӣ мекунанд, пеш аз ҳама реляционӣ, талабот бештар хоҳанд буд; Маъруфияти DBMS-ҳои бисёрмодели, ки моделҳои наверо пешниҳод мекунанд, ки бартариҳои гуногуни анъанавиро муттаҳид мекунанд, масъалаи ояндаи дуртар аст.

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Оё шумо DBMS-и бисёрмоделиро истифода мебаред?

  • Мо онро истифода намебарем, мо ҳама чизро дар як DBMS ва дар як модел нигоҳ медорем

  • Мо имкониятҳои бисёр модели DBMS-и анъанавиро истифода мебарем

  • Мо устувории полиглотро машқ мекунем

  • Мо DBMS-и нави бисёрмоделиро истифода мебарем (Arango, Orient, CosmosDB)

19 корбар овоз доданд. 4 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ