Ko nga DBMS tauira maha te turanga o nga punaha korero hou?

He tino uaua nga punaha korero hou. Ehara i te mea iti rawa, ko to raatau uaua na te uaua o nga raraunga i tukatukahia i roto. Ko te uaua o nga raraunga kei te maha o nga momo tauira raraunga e whakamahia ana. Na, hei tauira, ka "nui" te raraunga, ko tetahi o nga ahuatanga raruraru ehara i te mea ko tona rōrahi anake ("rōrahi"), engari ko tona momo ("momo").

Mena kaore ano kia kitea e koe he koha i roto i te whakaaro, panuihia.

Ko nga DBMS tauira maha te turanga o nga punaha korero hou?


Tuhinga

Te tohenga polyglot
Tauira-maha
DBMS maha-tauira i runga i te tauira hononga
     Tauira tuhinga i roto i te MS SQL Server
     Tauira kauwhata i roto i te MS SQL Server
DBMS maha-tauira i runga i te tauira tuhinga
     Tauira hononga i MarkLogic
     Tauira kauwhata i MarkLogic
DBMS maha-tauira "kare he tauira matua"
     ArangoDB
     OrientDB
     Azure CosmosDB
DBMS maha-tauira i runga i te tauira kauwhata?
mutunga
Poll

Te tohenga polyglot

Ko nga korero o runga ake nei ka puta mai i etahi wa ahakoa i roto i te anga o te punaha kotahi me whakamahi etahi momo DBMS hei penapena raraunga me te whakaoti rapanga maha o te tukatuka, kei te tautoko ia o raatau ake tauira raraunga. Ma te ringa marama o M. Fowler, kaituhi he maha nga pukapuka rongonui me tetahi o tahi-kaituhi Agile Manifesto, ka kiia tenei ahuatanga rokiroki maha-rereke (“te manawanui polyglot”).

Kei a Fowler ano te tauira e whai ake nei mo te whakahaere i te rokiroki raraunga i roto i te tono tino whai kiko me te utaina nui i roto i te mara o te hokohoko-e.

Ko nga DBMS tauira maha te turanga o nga punaha korero hou?

Ko tenei tauira, ko te tikanga, he ahua whakanui ake, engari ka kitea etahi whakaaro mo te whiriwhiri i tetahi, tetahi atu DBMS mo te kaupapa e rite ana, hei tauira, konei.

E marama ana ehara i te mea ngawari te noho hei pononga i roto i taua kararehe.

  • Ko te nui o te waehere e mahi ana i te rokiroki raraunga ka piki ake ki te maha o nga DBMS e whakamahia ana; he pai te nui o nga raraunga tukutahi waehere ki te kore e rite ki te tapawha o tenei tau.
  • I te maha o te maha o nga DBMS i whakamahia, ka piki ake nga utu mo te whakarato i nga ahuatanga hinonga (te whakahiatotanga, te pai o te he, te waatea nui) o ia DBMS i whakamahia.
  • Kaore e taea te whakarite i nga ahuatanga hinonga o te punaha rokiroki katoa - ina koa te whakawhitiwhitinga.

Mai i te tirohanga a te kaiwhakahaere kararehe, he penei te ahua o nga mea katoa:

  • He pikinga maha o te utu mo nga raihana me te tautoko hangarau mai i te kaihanga DBMS.
  • Te nui o nga kaimahi me te whakanui ake i nga wa kati.
  • Ko nga mate putea me nga whiunga tika na te koretake o nga raraunga.

He nui te pikinga o te utu katoa o te mana pupuri (TCO) o te punaha. He huarahi kei waho i te ahuatanga o "nga whiringa rokiroki maha"?

Tauira-maha

I te tau 2011 ka whakamahia te kupu "putea maha. Ko te mohio ki nga raruraru o te huarahi me te rapu otinga he maha nga tau, a, i te tau 2015, na roto i nga mangai o nga kaitätari o Gartner, i hangaia te whakautu:

Ko te ahua i tenei wa i tika nga kaitätari o Gartner ki ta raatau matapae. Ki te haere koe ki te wharangi me whakatauranga matua DBMS i runga i nga DB-Engines, ka kite koe i teraоKo te nuinga o ana kaihautu e tuu motuhake ana hei DBMS tauira maha. Ka kitea ano i runga i te wharangi me tetahi whakatauranga motuhake.

Ko te ripanga i raro nei e whakaatu ana i te DBMS - nga kaihautu i ia o nga whakatauranga motuhake, e kii ana he maha nga tauira. Mo ia DBMS, ka tohuhia te tauira tautoko taketake (kotahi anake) me nga tauira e tautokohia ana i tenei wa. Kua whakarārangihia hoki ko nga DBMS e whakatau ana i a ratou ano hei "tauira maha o mua" a, e ai ki nga kaihanga, kaore he tauira tuku iho tuatahi.

DBMS tauira tuatahi Nga tauira taapiri
Oracle Whanaungatanga Kauwhata, tuhinga
MS SQL Whanaungatanga Kauwhata, tuhinga
PostgreSQL Whanaungatanga Kauwhata*, tuhinga
MarkLogic Tuhinga Kauwhata, hononga
MongoDB Tuhinga Uara-matua, kauwhata*
RapuWhakaahua Tīwae-whānui Tuhinga, kauwhata
Redis Uara-matua Tuhinga, kauwhata*
ArangoDB - Kauwhata, tuhinga
OrientDB - Kauwhata, tuhinga, hononga
Azure CosmosDB - Kauwhata, tuhinga, hononga

Nga korero kei runga tepu

Ko nga whetūriki kei te ripanga ka tohu i nga korero me rahuitia:

  • Kaore te PostgreSQL DBMS e tautoko i te tauira raraunga kauwhata, engari kei te tautoko tenei hua i runga i tera, penei i AgensGraph.
  • E pa ana ki a MongoDB, he pai ake te korero mo te noho o nga kaitoro kauwhata i roto i te reo patai ($lookup, $graphLookup) engari mo te tautoko i te tauira kauwhata, ahakoa, ko te tikanga, ko ta raatau whakaurunga i hiahia etahi arotautanga i te taumata rokiroki tinana ki te tautoko i te tauira kauwhata.
  • Mo te taha ki a Redis, ko ta matou tikanga ko te toronga RedisGraph.

I muri mai, mo ia karaehe, ka whakaatu me pehea te whakatinanatanga o te tautoko mo etahi tauira i roto i te DBMS mai i tenei akomanga. Ka whakaarohia e matou nga tauira hononga, tuhinga me te kauwhata hei mea tino nui me te whakamahi i nga tauira o nga DBMS motuhake hei whakaatu me pehea te whakatinanatanga o nga "mea ngaro".

DBMS maha-tauira i runga i te tauira hononga

Ko nga DBMS rangatira i tenei wa he hononga; Kare e taea te whakaaro pono te matapae a Gartner mena karekau nga RDBMS i whakaatu neke ki te huarahi o te whakatauira maha. Na ka whakaatu ratou. Inaianei ko te whakaaro ko te DBMS maha-tauira he rite ki te maripi Swiss, kaore e taea te mahi pai, ka taea te tuku tika ki a Larry Ellison.

Ko te kaituhi, he pai ake ki te whakatinana i nga tauira-maha i roto i te Microsoft SQL Server, i runga i te tauira o te tautoko a te RDBMS mo nga tuhinga me nga tauira kauwhata ka whakaahuahia.

Tauira tuhinga i roto i te MS SQL Server

E rua nga tuhinga pai mo Habré mo te whakatinanatanga a MS SQL Server i te tautoko mo te tauira tuhinga; Ka whakawhāiti ahau ki te korero poto me te korero:

Ko te huarahi ki te tautoko i te tauira tuhinga i roto i te MS SQL Server he tino angamaheni mo nga DBMS hononga: Ko nga tuhinga JSON e whakaarohia ana kia rongoa ki nga mara kuputuhi noa. Ko te tautoko mo te tauira tuhinga ko te whakarato i nga kaiwhakahaere motuhake ki te tarai i tenei JSON:

Ko te tohenga tuarua o nga kaiwhakahaere e rua he korero i roto i te JSONPath-like syntax.

Ma te poto, ka taea e tatou te kii ko nga tuhinga kei te rongoa penei ehara i te "hinonga akomanga tuatahi" i roto i te DBMS hononga, kaore i rite ki nga tuples. Inaa, i roto i te MS SQL Server i tenei wa kaore he tohu i runga i nga mara o nga tuhinga JSON, he uaua ki te whakauru ki nga ripanga ma te whakamahi i nga uara o enei mara me te kowhiri i nga tuhinga ma te whakamahi i enei uara. Heoi, ka taea te hanga i tetahi pou tatau mo taua mara me te taurangi ki runga.

I tua atu, ka whakaratohia e MS SQL Server te kaha ki te hanga i tetahi tuhinga JSON mai i nga ihirangi o nga ripanga ma te whakamahi i te kaiwhakahaere. FOR JSON PATH - he pea, i roto i tetahi tikanga, te ritenga atu ki te o mua, rokiroki tikanga. E marama ana ahakoa pehea te tere o te RDBMS, e whakahē ana tenei huarahi ki te whakaaro o nga tuhinga DBMS, e penapena ana i nga whakautu kua rite ki nga patai rongonui, ka taea anake te whakaoti rapanga o te ngawari o te whanaketanga, engari kaore i te tere.

Ka mutu, ka taea e MS SQL Server te whakaoti i te raru rereke o te hanga tuhinga: ka taea e koe te tihorea a JSON ki nga ripanga ma te whakamahi OPENJSON. Mena kaore i te tino papatahi te tuhinga, me whakamahi koe CROSS APPLY.

Tauira kauwhata i roto i te MS SQL Server

Ko te tautoko mo te tauira kauwhata (LPG) ka tino whakatinanahia ki te Microsoft SQL Server matapae: E whakaarohia ana kia whakamahia he ripanga motuhake hei penapena i nga pona me te penapena tapa kauwhata. Ka hangaia enei ripanga ma te whakamahi i nga korero CREATE TABLE AS NODE и CREATE TABLE AS EDGE Tuhinga.

Ko nga ripanga o te momo tuatahi he rite ki nga ripanga noa mo te penapena rekoata, ko te rereketanga o waho anake ko te ripanga kei roto he mara punaha. $node_id — te tautohu ahurei o te node kauwhata i roto i te papaa raraunga.

Waihoki, ko nga ripanga o te momo tuarua he mara punaha $from_id и $to_id, ko nga urunga kei roto i enei ripanga ka tino whakamarama i nga hononga i waenga i nga pona. Ka whakamahia he ripanga motuhake hei penapena hononga o ia momo.

Ko nga DBMS tauira maha te turanga o nga punaha korero hou? Kia whakaatu tatou i tenei ki tetahi tauira. Tukuna kia whai tahora nga raraunga kauwhata penei i te ahua o te ahua. Na ki te hanga i te hanganga e rite ana ki te paataka raraunga me whakahaere e koe nga patai DDL e whai ake nei:

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

Ko te tino motuhake o enei ripanga ko nga patai ki a raatau ka taea te whakamahi i nga tauira kauwhata me te syntax rite ki a Cypher (heoi, "*"etahi atu kaore ano kia tautokona). I runga i nga inenga mahi, ka taea hoki te whakaaro he rereke te ahua o te penapena raraunga ki enei ripanga mai i te ahua o te penapena raraunga i roto i nga ripanga auau me te arotau mo te whakahaere i nga uiui kauwhata.

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

I tua atu, he tino uaua ki te kore e whakamahi i enei tauira kauwhata i te wa e mahi ana me enei ripanga, na te mea i roto i nga uiui SQL noa ki te whakaoti rapanga rite, me whakapau kaha ki te tiki tohu tohu "kauwhata" o te punaha ($node_id, $from_id, $to_id; Mo taua take ano, ko nga patai mo te whakauru raraunga kaore i te whakaatuhia ki konei na te mea he tino uaua).

Hei whakarāpopoto i te whakaahuatanga o nga whakatinanatanga o te tuhinga me nga tauira kauwhata i roto i te MS SQL Server, ka kite ahau ko enei whakatinanatanga o tetahi tauira ki runga ake o tetahi kaore i te angitu, i te tuatahi mai i te tirohanga o te hoahoa reo. He mea tika ki te whakawhānui i tetahi reo ki tetahi atu, ko nga reo kaore i te tino "orthogonal", he rereke nga ture hototahi.

DBMS maha-tauira i runga i te tauira tuhinga

I roto i tenei waahanga, e hiahia ana ahau ki te whakaatu i te whakatinanatanga o nga tauira maha i roto i nga tuhinga DBMS ma te whakamahi i te tauira o te mea kaore i tino rongonui, ko MongoDB (i te mea i kii, he kaiwhakahaere kauwhata here anake. $lookup и $graphLookup, kaore i te mahi i runga i nga kohinga maru), engari ma te whakamahi i te tauira o te DBMS pakeke ake me te "hinonga" MarkLogic.

Na, kia mau ki te kohinga he huinga tuhinga XML o te momo e whai ake nei (ka taea hoki e MarkLogic te penapena tuhinga JSON):

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

Tauira hononga i MarkLogic

Ka taea te hanga i te tirohanga hononga o te kohinga tuhinga ma te whakamahi tauira whakaatu (nga ihirangi o nga huānga value i roto i te tauira i raro nei ka taea he XPath noa):

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

Ka taea e koe te whakatika i te tirohanga i hangaia me te patai SQL (hei tauira, ma ODBC):

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

Heoi, ko te tirohanga hononga i hangaia e te tauira whakaatu he panui-anake. I te wa e tukatuka ana i tetahi tono, ka ngana a MarkLogic ki te whakamahi taupū tuhinga. I mua, he iti noa nga tirohanga whanaungatanga a MarkLogic taupū i runga ka taea te tuhi, engari inaianei kua kiia kua kore e whakamahia.

Tauira kauwhata i MarkLogic

Ma te tautoko mo te tauira kauwhata (RDF), he rite tonu nga mea katoa. Ano ano me te awhina tauira whakaatu Ka taea e koe te hanga i tetahi whakaaturanga RDF o te kohinga tuhinga mai i te tauira i runga ake nei:

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

Ka taea e koe te whakatika i te kauwhata RDF ka puta me te patai SPARQL:

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

Kaore i rite ki te hononga, ka tautoko a MarkLogic i te tauira kauwhata ma etahi atu huarahi e rua:

  1. Ka taea e te DBMS te rokiroki motuhake o nga raraunga RDF (ka kiia ko nga taarua kei roto whakahaere he rereke ki nga korero i runga ake nei hake).
  2. Ko te RDF i roto i te raupapatanga motuhake ka taea te whakauru noa ki roto i nga tuhinga XML, JSON ranei (a ka kiia ko nga taarua toru. kaore i whakahaeretia). He rereke pea tenei ki nga miihini idref me etahi atu.

He whakaaro pai mo te mahi "tino" i roto i a MarkLogic i homai e API Optical, i roto i tenei tikanga, he taumata-iti, ahakoa ko tana kaupapa he rereke - ki te ngana ki te tango mai i te tauira raraunga i whakamahia, ki te whakarite kia rite te mahi me nga raraunga i roto i nga tauira rereke, tauhokohoko, aha atu.

DBMS maha-tauira "kare he tauira matua"

He DBMS ano kei runga i te maakete e tuu ana i a raatau ano he tauira maha i te tuatahi, kaore he tauira matua tuku iho. Kei roto i enei ArangoDB, OrientDB (mai i te 2018 te kamupene whanaketanga no SAP) me CosmosDB (Ratonga hei waahanga o te papaaho kapua Microsoft Azure).

Inaa, he tauira "matua" kei ArangoDB me OrientDB. I roto i nga take e rua, ko o raatau ake tauira raraunga, he whakawhanui o te tuhinga kotahi. Ko te nuinga o nga whakawhänui ki te whakahaere i te kaha ki te mahi i nga paatai ​​o te kauwhata me te ahua hononga.

Ko enei tauira anake e waatea ana mo te whakamahi i roto i te DBMS kua tohua; ko o raatau ake reo patai i hangaia hei mahi ki a raatau. Ko te tikanga, he pai nga tauira me nga DBMS, engari na te kore hototahi ki nga tauira paerewa me nga reo ka kore e taea te whakamahi i enei DBMS i roto i nga punaha tuku iho—ki te whakakapi i nga DBMS kua whakamahia ki reira.

He tuhinga whakamiharo mo ArangoDB me OrientDB i runga i a Habré: KAUPAPA ki roto i nga papaa raraunga NoSQL.

ArangoDB

E kii ana a ArangoDB i te tautoko mo te tauira raraunga kauwhata.

Ko nga pona o te kauwhata i ArangoDB he tuhinga noa, a ko nga tapa he tuhinga momo motuhake, me nga mara punaha auau, he (_key, _id, _rev) mara pūnaha _from и _to. Ko nga tuhinga kei roto i nga DBMS tuhinga ka honoa ki nga kohinga. Ko nga kohinga tuhinga e tohu ana i nga taha ka kiia ko nga kohinga taha i ArangoDB. Ma te ara, ko nga tuhinga kohinga taha he tuhinga ano, no reira ka taea ano e nga taha o ArangoDB te mahi hei node.

Raw raraunga

Kia whai kohinga tatou persons, he penei te ahua o ana tuhinga:

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

Me waiho ano he kohinga cafes:

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

Katahi te kohinga likes penei pea te ahua:

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

Nga patai me nga hua

He patai ahua kauwhata i roto i te reo AQL e whakamahia ana i ArangoDB, e whakahoki mai ana i nga korero mo te tangata e pai ana ki te kawhe, penei:

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

I roto i te momo hononga, kei te "whakarorohiko" tatou i nga hononga, kaua ki te rongoa, ka taea te tuhi ano tenei patai penei (ma te kore o te kohinga. likes ka taea ki te kore):

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 }

Ko te hua mo nga keehi e rua ka rite:

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

He maha atu nga patai me nga hua

Mena te ahua o te whakatakotoranga hua i runga ake nei he ahua ake mo te DBMS hononga atu i te tuhinga DBMS, ka taea e koe te whakamatau i tenei patai (ka taea ranei e koe te whakamahi COLLECT):

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

Ko te hua ka penei te ahua:

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

OrientDB

Ko te putake mo te whakatinana tauira kauwhata ki runga ake o te tauira tuhinga i OrientDB ko faingamālie nga mara tuhinga, hei taapiri atu ki te nui ake iti iho ranei o nga uara scalar paerewa, he uara ano nga momo penei LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. Ko nga uara o enei momo he hononga, he kohinga hononga ranei ki kaitautuhi punaha tuhinga.

Ko te kaitautuhi tuhinga kua tautapahia e te punaha he "ahua tinana", e tohu ana i te tuunga o te rekoata i roto i te paataka raraunga, me te ahua penei: @rid : #3:16. No reira, he tino tohu nga uara o nga taonga tohutoro (penei i te tauira kauwhata) kaua ki nga tikanga whiriwhiri (penei i te tauira hononga).

Pērā i te ArangoDB, ko ngā tapa o OrientDB e tohuhia ana hei tuhinga motuhake (ahakoa mena karekau he ahuatanga o tetahi taha, ka taea te hanga. ngawari, a kaore e rite ki tetahi tuhinga motuhake).

Raw raraunga

I roto i te whakatakotoranga tata ki whakatakotoranga putunga OrientDB pātengi raraunga, ko nga raraunga mai i te tauira o mua mo ArangoDB ka penei te ahua:

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

Kei te kite tatou, kei te penapena korero nga poutoko mo nga tapa taumai me te puta. I whakamahi ana Ma te API Tuhinga ka aro turuki i te tapatahi tohutoro ake, a ma te Kauwhata API e mahi tenei mahi. Engari kia kite tatou he aha te ahua o te uru ki te OrientDB i roto i nga reo patai "parakore" kaore i whakauruhia ki nga reo hotaka.

Nga patai me nga hua

He rite te patai ki te patai mai i te tauira mo ArangoDB i OrientDB te ahua penei:

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

Ka whiwhi te hua i roto i te ahua e whai ake nei:

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

Mena he ahua "hononga" rawa te ahua o te whakatakotoranga hua, me tango e koe te raina me UNWIND():

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

Ko te reo patai a OrientDB ka taea te korero ko SQL me nga whakaurunga-rite ki a Gremlin. I te putanga 2.2, i puta mai he puka tono rite ki a 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

Ko te whakatakotoranga hua ka rite ki te tono o mua. Whakaarohia nga mea hei tango kia pai ake ai te "whakawhanaunga", penei i te patai tuatahi.

Azure CosmosDB

Ki te iti ake, ko nga korero i runga ake nei mo ArangoDB me OrientDB e pa ana ki a Azure CosmosDB. Ka whakaratohia e CosmosDB nga API whakauru raraunga e whai ake nei: SQL, MongoDB, Gremlin me Cassandra.

Ka whakamahia te SQL API me te MongoDB API ki te uru ki nga raraunga i roto i te tauira tuhinga. Gremlin API me Cassandra API - mo te uru ki nga raraunga i roto i te kauwhata me nga whakatakotoranga pou, ia. Ko nga raraunga o nga tauira katoa ka tiakina ki te whakatakotoranga tauira o roto o CosmosDB: ARS (“atom-record-sequence”), e tata ana hoki ki te tuhinga kotahi.

Ko nga DBMS tauira maha te turanga o nga punaha korero hou?

Engari ko te tauira raraunga i whiriwhiria e te kaiwhakamahi me te API i whakamahia kua whakaritea i te wa o te hanga i tetahi kaute i roto i te ratonga. Kaore e taea te uru atu ki nga raraunga kua utaina ki tetahi tauira ki te whakatakotoranga o tetahi atu tauira, penei i te whakaahuatanga penei:

Ko nga DBMS tauira maha te turanga o nga punaha korero hou?

Na, ko te maha-tauira i roto i te Azure CosmosDB i tenei ra ko te kaha ki te whakamahi i nga papaa raraunga maha e tautoko ana i nga tauira rereke mai i tetahi kaihanga, kaore e whakaoti i nga raru katoa o te rokiroki rereke-maha.

DBMS maha-tauira i runga i te tauira kauwhata?

Ko te mea nui karekau he DBMS maha-tauira i runga i te maakete e hangai ana i runga i te tauira kauwhata (haunga te tautoko tauira-maha mo nga tauira kauwhata e rua i te wa kotahi: RDF me te LPG; tirohia tenei i roto Tuhinga o mua). Ko nga tino uaua ka puta mai i te whakatinanatanga o te tauira tuhinga ki runga ake o te tauira kauwhata, kaua ki te hononga hononga.

Ko te patai me pehea te whakatinana i tetahi tauira hononga ki runga ake o te tauira kauwhata i whakaarohia ahakoa i te wa o te hanganga o muri. Pehea korerohei tauira Rawiri McGovern:

Karekau he mea i roto i te huarahi kauwhata hei aukati i te hanga paparanga (hei tauira, ma te taupūtanga tika) ki runga i te putunga raraunga kauwhata e taea ai te tirohanga hononga me te (1) whakaora i nga tuple mai i nga takirua uara matua me te (2) whakarōpūtanga o tuples ma te momo hononga.

Ina whakatinanahia he tauira tuhinga ki runga ake o te tauira kauwhata, me maumahara koe, hei tauira, ko enei e whai ake nei:

  • Ko nga huānga o te huinga JSON e kiia ana he raupapa, engari ko nga mea e puta mai ana i te pito o te tapa o te kauwhata ehara i te mea;
  • Ko nga raraunga kei roto i te tauira tuhinga ka whakakorehia te tikanga, kaore koe e hiahia ki te penapena i nga kape maha o te tuhinga kua whakauruhia, me te nuinga o nga tuhinga kaore he tohu tohu;
  • I tetahi atu taha, ko te whakaaro o nga tuhinga DBMS ko nga tuhinga he "whakatōpū" kua rite, kaore e tika kia hanga hou i ia wa. Me whakarato i te tauira kauwhata te kaha ki te tiki tere i tetahi kauwhata iti e rite ana ki te tuhinga kua oti.

He panui iti

Ko te kaituhi o te tuhinga e pa ana ki te whanaketanga o te NitrosBase DBMS, ko te tauira o roto he kauwhata, me nga tauira o waho - hononga me te tuhinga - ko ona tohu. He rite nga tauira katoa: tata katoa nga raraunga e waatea ana i roto i tetahi o enei ma te whakamahi i te reo patai e tika ana ki a ia. Ano, i tetahi tirohanga, ka taea te whakarereke i nga raraunga. Ka kitea nga huringa i roto i te tauira o roto, a, na reira, ki etahi atu tirohanga.

Ko te tumanako ka whakaahuahia e au he aha te ahua o te whakataurite tauira ki NitrosBase i roto i tetahi o nga tuhinga e whai ake nei.

mutunga

Ko taku tumanako kua marama ake, kua iti ake ranei ki te kaipanui nga whakahuahua whanui o te mea e kiia nei ko te whakatauira maha. He tino rereke nga DBMS maha-tauira, he rereke te ahua o te "tautoko maha-tauira". Kia mohio ai koe ki te mea e kiia nei he "tauira-maha" i ia keehi motuhake, he pai ki te whakautu i nga patai e whai ake nei:

  1. Kei te korero tatou mo te tautoko i nga tauira tawhito, etahi momo tauira "hybrid" ranei?
  2. Ko nga tauira "he rite", ko tetahi ranei te kaupapa o etahi atu?
  3. Ko nga tauira "kahore" ki a raatau ano? Ka taea e nga raraunga kua tuhia ki tetahi tauira te panui ki tetahi atu, ka tuhirua ranei?

Ki taku whakaaro ko te patai mo te whaitakenga o te DBMS tauira maha ka taea te whakautu pai, engari ko te patai whakamere ko tehea momo ka nui ake te tono a nga ra e heke mai nei. Te ahua nei ko nga DBMS maha-tauira e tautoko ana i nga tauira tuku iho, ko te nuinga o te whanaungatanga, ka nui ake te hiahia; Ko te rongonui o nga DBMS maha-tauira, e tuku ana i nga tauira hou e whakakotahi ana i nga painga o nga momo tikanga tuku iho, he mea mo te wa kei te heke mai.

Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau. Waitohu maitēnā.

Kei te whakamahi koe i te DBMS tauira maha?

  • Kaore matou e whakamahi, ka penapenahia e matou nga mea katoa i roto i te DBMS kotahi me te tauira kotahi

  • Ka whakamahi matou i nga kaha-tauira maha o nga DBMS tuku iho

  • Ka mahia e matou te tohenga polyglot

  • Ka whakamahi matou i te DBMS tauira-maha hou (Arango, Orient, CosmosDB)

19 nga kaiwhakamahi i pooti. 4 nga kaiwhakamahi i aukati.

Source: will.com

Tāpiri i te kōrero