Usoro ozi nke oge a dị nnọọ mgbagwoju anya. Ọbụghị obere ihe niile, mgbagwoju anya ha bụ n'ihi mgbagwoju anya nke data a haziri n'ime ha. Ihe mgbagwoju anya nke data na-adaberekarị na ụdị data dị iche iche ejiri. Ya mere, dịka ọmụmaatụ, mgbe data ghọrọ "ibu", otu n'ime njirimara nsogbu abụghị naanị olu ya ("olu"), kamakwa ụdị ya ("dị iche iche").
Ọ bụrụ na ị hụbeghị ntụpọ n'echiche ahụ, gụọ ya.

Ihe
Polyglot nnọgidesi ike
Ihe dị n'elu na-eduga n'eziokwu ahụ na mgbe ụfọdụ ọbụna n'ime usoro nke otu usoro ọ dị mkpa iji ọtụtụ DBMS dị iche iche na-echekwa data ma dozie nsogbu dị iche iche nke nhazi ha, nke ọ bụla n'ime ha na-akwado ụdị data nke ya. Site n'aka M. Fowler, ọtụtụ akwụkwọ ama ama na otu n'ime Agile Manifesto, a na-akpọ ọnọdụ a multi-variant nchekwa ("polyglot nnọgidesi ike").
Fowler nwekwara ihe atụ na-esonụ nke ịhazi nchekwa data na ngwa zuru oke na nke dị elu n'ọhịa nke e-azụmahịa.

Ihe atụ a, n'ezie, dị ntakịrị ikwubiga okwu ókè, mana ụfọdụ echiche na-akwado ịhọrọ otu DBMS ma ọ bụ ọzọ maka nzube kwekọrọ ekwekọ, dịka ọmụmaatụ, .
O doro anya na ịbụ ohu n'ogige anụ ụlọ dị otú ahụ adịghị mfe.
- Ọnụ ọgụgụ nke koodu na-arụ ọrụ nchekwa data na-eto eto na ọnụ ọgụgụ nke DBMS ejiri; ọnụ ọgụgụ nke koodu mmekọrịta data dị mma ma ọ bụrụ na ọ bụghị nhata na square nke nọmba a.
- Dị ka ọnụọgụ ọnụọgụ DBMS ejiri mee ihe, ọnụ ahịa nke ịnye njirimara ụlọ ọrụ (scalability, mmegide mmejọ, nnweta dị elu) nke DBMS ọ bụla ejiri na-abawanye.
- Ọ gaghị ekwe omume iji hụ na njirimara ụlọ ọrụ nke subsystem nchekwa n'ozuzu - karịsịa azụmahịa.
Site n'echiche onye nduzi zoo, ihe niile dị ka nke a:
- Mmụba dị ukwuu na ọnụ ahịa ikike na nkwado teknụzụ sitere na ndị nrụpụta DBMS.
- Ịgabiga ókè na oge imecha.
- Mfu ego ozugbo ma ọ bụ ntaramahụhụ n'ihi enweghị nkwekọ data.
Enwere mmụba dị ukwuu na ngụkọta ọnụ ahịa nke sistemụ ahụ (TCO). Enwere ụzọ ọ bụla pụọ na ọnọdụ nke "nhọrọ nchekwa ọtụtụ"?
Multi-nlereanya
A malitere iji okwu ahụ "nchekwa ọtụtụ" na 2011. Mmata nke nsogbu nke ụzọ na ịchọ ngwọta were ọtụtụ afọ, na 2015, site n'ọnụ Gartner nyocha, e chepụtara azịza ya:
- Site na"»:
Ọdịnihu nke DBMS, ụkpụrụ ụlọ ha na ụzọ e si eji ha eme ihe bụ ọtụtụ ihe nlereanya.
- Site na"»:
DBMS ndị na-eduga na-arụ ọrụ ga-enye ọtụtụ ụdị-mmekọrịta na ndị na-abụghị nke mmekọrịta-dị ka akụkụ nke otu ikpo okwu.
Ọ dị ka oge a ndị nyocha Gartner ziri ezi na amụma ha. Ọ bụrụ na ị gaa na ibe ya DBMS na DB-Engines, ị nwere ike ịhụ nke ahụоỌtụtụ n'ime ndị isi ya na-edobe onwe ha kpọmkwem dị ka DBMS ọtụtụ ihe nlereanya. Enwere ike ịhụ otu ihe ahụ na ibe ya na ọkwa nzuzo ọ bụla.
Tebụl dị n'okpuru na-egosi DBMS - ndị isi na ọkwa ọ bụla nke onwe, nke na-ekwu na ha bụ ọtụtụ ihe nlereanya. Maka DBMS nke ọ bụla, a na-egosipụta ụdị akwadoro mbụ (nke bụ naanị otu) yana ya na ụdị ndị akwadoro ugbu a ka egosiri. Edepụtarakwa bụ DBMS ndị na-edobe onwe ha dị ka “mbụ multi-model” na, dị ka ndị okike si kwuo, enweghị ụdị mbụ ketara eketa.
| DBMS | Ụdị mbụ | Ụdị ndị ọzọ |
|---|---|---|
| Oracle | Mmekọrịta | Eserese, akwụkwọ |
| MS SQL | Mmekọrịta | Eserese, akwụkwọ |
| PostgreSQL | Mmekọrịta | Eserese *, akwụkwọ |
| MarkLogic | Akwụkwọ akụkọ | Eserese, mmekọrịta |
| MongoDB | Akwụkwọ akụkọ | Isi uru, eserese * |
| DataStax | Ogidi ogidi | Akwụkwọ akụkọ, eserese |
| Redis | Isi uru | Akwụkwọ akụkọ, eserese* |
| ArangoDB | - | Eserese, akwụkwọ |
| OrientDB | - | Eserese, akwụkwọ, mmekọrịta |
| Azure CosmosDB | - | Eserese, akwụkwọ, mmekọrịta |
Ihe ndetu na tebụl
Asterisks dị na tebụl kaa akara nkwupụta chọrọ ndoputa:
- PostgreSQL DBMS anaghị akwado ụdị data eserese, mana ngwaahịa a na-akwado ya , dị ka AgensGraph.
- N'ihe gbasara MongoDB, ọ ka mma ikwu maka ọnụnọ ndị na-ese eserese n'asụsụ ajụjụ (, ) karịa maka ịkwado ụdị eserese, ọ bụ ezie na, n'ezie, mmeghe ha chọrọ ụfọdụ njikarịcha na ọkwa nchekwa anụ ahụ na ntụziaka nke ịkwado ụdị eserese.
- N'ihe gbasara Redis, anyị pụtara ndọtị .
Na-esote, maka klaasị ọ bụla, anyị ga-egosi otu esi etinye nkwado maka ọtụtụ ụdị na DBMS site na klaasị a. Anyị ga-atụle ụdị mmekọrịta, akwụkwọ na eserese dị ka ihe kachasị mkpa ma jiri ihe atụ nke DBMS dị iche iche gosi otu esi emejuputa "ndị efu".
DBMS ọtụtụ ihe nlere dabere na ụdị mmekọrịta
Ndị DBMS ndị na-eduga ugbu a bụ mmekọrịta; Ha na-egosipụtakwa. Ugbu a echiche na DBMS multi-model dị ka mma Switzerland, nke na-enweghị ike ime ihe ọ bụla nke ọma, nwere ike iduzi Larry Ellison ozugbo.
Otú ọ dị, onye edemede ahụ na-ahọrọ mmejuputa nke multi-modeling na Microsoft SQL Server, na ihe atụ nke nkwado RDBMS maka akwụkwọ na eserese ụdị ga-akọwa.
Ụdị akwụkwọ na MS SQL Server
Enweelarị akụkọ abụọ magburu onwe ya na Habré gbasara ka MS SQL Server si eme ihe nkwado maka ụdị akwụkwọ ahụ, m ga-ejedebe onwe m na nkenke ikwughachi na nkọwa:
Ụzọ isi kwado ụdị akwụkwọ ahụ na MS SQL Server bụ ihe a na-ahụkarị maka DBMSs mmekọrịta: A na-atụ aro ka ịchekwa akwụkwọ JSON na mpaghara ederede nkịtị. Nkwado maka ụdị akwụkwọ ahụ bụ ịnye ndị ọrụ pụrụ iche ka ha nyochaa JSON a:
- wepụ ụkpụrụ àgwà scalar,
- wepụ sub-akwụkwọ.
Arụmụka nke abụọ nke ndị ọrụ abụọ ahụ bụ okwu na JSONPath-dị ka syntax.
N'ezie, anyị nwere ike ịsị na akwụkwọ echekwara n'ụzọ dị otú a abụghị "ụlọ ọrụ klas nke mbụ" na mmekọrịta DBMS, n'adịghị ka tuples. Kpọmkwem, na MS SQL Server ugbu a enweghị indexes na ubi nke JSON akwụkwọ, nke na-eme ka o sie ike isonyere tebụl iji ụkpụrụ nke ubi ndị a na ọbụna họrọ akwụkwọ site na iji ụkpụrụ ndị a. Otú ọ dị, ọ ga-ekwe omume ịmepụta kọlụm gbakọọ maka ubi dị otú ahụ na index na ya.
Na mgbakwunye, MS SQL Server na-enye ikike iji rụọ ọrụ nke ọma iji wuo akwụkwọ JSON site na ọdịnaya nke tebụl. - ekwe omume, n'echiche ụfọdụ, megidere nke gara aga, nchekwa nchekwa. O doro anya na n'agbanyeghị ngwa ngwa RDBMS, usoro a na-emegide echiche nke akwụkwọ DBMS, nke na-echekwa azịza ndị a kwadebere maka ajụjụ ndị a ma ama, ma nwee ike dozie nsogbu nke ịdị mfe nke mmepe, ma ọ bụghị ọsọ ọsọ.
N'ikpeazụ, MS SQL Server na-enye gị ohere idozi nsogbu dị iche iche nke iwu akwụkwọ: ị nwere ike decompose JSON n'ime tebụl site na iji. . Ọ bụrụ na akwụkwọ ahụ adịchaghị larịị, ị ga-achọ iji CROSS APPLY.
Ụdị eserese na MS SQL Server
A na-emejuputakwa nkwado maka ụdị eserese (LPG) na Microsoft SQL Server : A na-atụ aro iji tebụl pụrụ iche maka ịchekwa ọnụ na maka ịchekwa akụkụ eserese. A na-emepụta tebụl ndị dị otú ahụ site na iji okwu CREATE TABLE AS NODE и CREATE TABLE AS EDGE kwekọrọ.
Tebụl nke ụdị nke mbụ yiri tebụl nkịtị maka ịchekwa ndekọ, naanị ihe dị iche na mpụga bụ na tebụl nwere mpaghara sistemụ. $node_id - ihe nchọpụta pụrụ iche nke ọnụ eserese n'ime nchekwa data.
N'otu aka ahụ, tebụl nke ụdị nke abụọ nwere mpaghara usoro $from_id и $to_id, Ndenye na tebụl ndị dị otú ahụ na-akọwa nke ọma njikọ dị n'etiti ọnụ ọnụ. A na-eji tebụl dị iche iche chekwaa mmekọrịta nke ụdị ọ bụla.
Ka anyị jiri ihe atụ mee ihe atụ. Ka data eserese ahụ nwee nhazi dịka nke egosiri na ọnụ ọgụgụ a. Mgbe ahụ, iji mepụta usoro kwekọrọ na nchekwa data ị ga-emerịrị ajụjụ DDL ndị a:
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);Isi nkọwa nke tebụl ndị dị otú ahụ bụ na na ajụjụ megide ha, ọ ga-ekwe omume iji usoro eserese na syntax yiri Cypher (agbanyeghị, "*"etc. akwadobeghị). Dabere na nha arụmọrụ, enwere ike iche na otu esi echekwa data na tebụl ndị a dị iche na otu esi echekwa data na tebụl oge niile ma bụrụkwa nke kachasị maka imezu ajụjụ eserese dị otú ahụ.
SELECT Cafe.name
FROM Person, likes, Cafe
WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
AND Person.name = 'John';Ọzọkwa, ọ na-esiri ike ịghara iji usoro eserese ndị a mgbe ị na-arụ ọrụ na tebụl ndị dị otú ahụ, ebe ọ bụ na ajụjụ SQL nkịtị iji dozie nsogbu ndị yiri ya, ọ ga-adị mkpa ka ịmekwu mgbalị iji nweta usoro "graph" node identifiers ($node_id, $from_id, $to_id; Maka otu ihe kpatara ya, a naghị egosi ajụjụ maka itinye data ebe a n'ihi na ọ na-esighi ike).
Iji chịkọta nkọwa nke mmejuputa iwu nke akwụkwọ na ụdị eserese na MS SQL Server, m ga-arịba ama na mmejuputa atumatu dị otú ahụ nke otu ụdị n'elu nke ọzọ adịghị ka ihe ịga nke ọma, bụ isi site n'echiche nke nhazi asụsụ. Ọ dị mkpa iji gbasaa otu asụsụ na asụsụ ọzọ, asụsụ ndị ahụ abụghị "orthogonal", iwu ndakọrịta nwere ike ịdị oke egwu.
Multi-model DBMS dabere na akwụkwọ nlereanya
N'akụkụ a, ọ ga-amasị m ịkọwapụta mmejuputa ọtụtụ ihe nlereanya na akwụkwọ DBMS site na iji ihe atụ nke ndị na-ewu ewu n'ime ha, MongoDB (dị ka ekwuru, ọ nwere naanị ndị na-arụ ọrụ eserese ọnọdụ. $lookup и $graphLookup, anaghị arụ ọrụ na mkpokọta shaded), mana iji ihe atụ nke DBMS tozuru oke na "ụlọ ọrụ" .
Yabụ, ka mkpokọta ahụ nwee otu akwụkwọ XML nke ụdị ndị a (MarkLogic na-enyekwa gị ohere ịchekwa akwụkwọ JSON):
<Person INN="631803299804">
<name>John</name>
<surname>Smith</surname>
</Person>Ụdị mmekọrịta dị na MarkLogic
Enwere ike ịmepụta echiche mmekọrịta nke nchịkọta akwụkwọ site na iji (ọdịnaya nke ọcha value N'ihe atụ dị n'okpuru, enwere ike ịnwe XPath aka ike):
<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>Ị nwere ike iji ajụjụ SQL lebara anya emepụtara (dịka ọmụmaatụ, site na ODBC):
SELECT name, surname FROM Person WHERE name="John"N'ụzọ dị mwute, a na-agụ naanị nlegharị anya njikọ nke template ngosi mepụtara. Mgbe ị na-edozi arịrịọ maka ya, MarkLogic ga-anwa iji . Na mbụ, MarkLogic nwere obere echiche mmekọrịta, kpamkpam na a na-ede ede, ma ugbu a, a na-ewere ha dị ka ndị mebiri emebi.
Ụdị eserese na MarkLogic
Site na nkwado maka ụdị eserese (RDF), ihe niile bụ otu ihe. Ọzọ site n'enyemaka Ị nwere ike ịmepụta ihe nnọchianya RDF nke nchịkọta akwụkwọ site na ihe atụ dị n'elu:
<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>Ị nwere ike iji ajụjụ SPARQL dozie eserese RDF nke pụtara:
PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
:631803299804 :name ?name ; :surname ?surname .
}N'adịghị ka ihe jikọrọ ya, MarkLogic na-akwado ụdị eserese ahụ n'ụzọ abụọ ọzọ:
- DBMS nwere ike ịbụ nchekwa dị iche iche zuru oke nke data RDF (a ga-akpọ ọnụọgụ atọ n'ime ya n'adịghị ka ndị a kọwara n'elu ).
- Enwere ike ịtinye RDF n'ụdị usoro pụrụ iche n'ime akwụkwọ XML ma ọ bụ JSON (na a ga-akpọkwa atọ ). Nke a nwere ike ịbụ ihe ọzọ na usoro
idrefna ndị ọzọ.
A na-enye ezigbo echiche nke otu ihe "n'ezie" si arụ ọrụ na MarkLogic , na nke a n'echiche, ọ bụ ala-larịị, ọ bụ ezie na nzube ya bụ kama nke ọzọ - na-agbalị abstract si data nlereanya eji, iji hụ na-agbanwe agbanwe na-arụ ọrụ na data dị iche iche ụdị, azụmahịa, wdg.
Multi-model DBMS "enweghị isi ihe nlereanya"
Enwekwara DBMS n'ahịa na-edobe onwe ha dị ka ihe nlere mbụ nke mbụ, na-enweghị ụdị isi ketara eketa. Ndị a gụnyere , (ebe 2018 ụlọ ọrụ mmepe bụ nke SAP) na (ọrụ dị ka akụkụ nke Microsoft Azure ígwé ojii n'elu ikpo okwu).
N'ezie, enwere ụdị "isi" na ArangoDB na OrientDB. N'okwu abụọ ahụ, ndị a bụ ụdị data nke ha, nke bụ nchịkọta nke akwụkwọ ahụ. Nchịkọta ndị a na-abụkarị iji kwado ike ịme ajụjụ nke eserese na ọdịdị mmekọrịta.
Ụdị ndị a bụ naanị ndị dị maka iji na DBMS a kapịrị ọnụ; N'ezie, ụdị ndị dị otú ahụ na DBMS na-ekwe nkwa, mana enweghị ndakọrịta na ụdị ọkọlọtọ na asụsụ na-eme ka ọ ghara ikwe omume iji DBMS ndị a na usoro ihe nketa-iji dochie DBMS ejirila ebe ahụ.
Enweelarị akụkọ mara mma gbasara ArangoDB na OrientDB na Habré: .
ArangoDB
ArangoDB na-ekwu nkwado maka ụdị data eserese.
Ọnụ nke eserese dị na ArangoDB bụ akwụkwọ nkịtị, akụkụ ya bụkwa akwụkwọ nke ụdị pụrụ iche nke, yana mpaghara sistemu oge niile, nwere (_key, _id, _rev) ngalaba sistemụ _from и _to. A na-ejikọta akwụkwọ ndị dị n'akwụkwọ DBMS na omenala ka ọ bụrụ mkpokọta. A na-akpọ mkpokọta akwụkwọ na-anọchi anya akụkụ mkpokọta ọnụ na ArangoDB. Site n'ụzọ, akwụkwọ nchịkọta ọnụ bụkwa akwụkwọ, ya mere akụkụ dị na ArangoDB nwekwara ike ime dị ka ọnụ.
Nkọ data
Ka anyị nwee nchịkọta persons, onye akwụkwọ ya dị ka nke a:
[
{
"_id" : "people/alice" ,
"_key" : "alice" ,
"name" : "Алиса"
},
{
"_id" : "people/bob" ,
"_key" : "bob" ,
"name" : "Боб"
}
]Ka enwekwara nchịkọta cafes:
[
{
"_id" : "cafes/jd" ,
"_key" : "jd" ,
"name" : "Джон Донн"
},
{
"_id" : "cafes/jj" ,
"_key" : "jj" ,
"name" : "Жан-Жак"
}
]Mgbe ahụ nchịkọta likes nwere ike ịdị ka nke a:
[
{
"_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
}
]Ajuju na nsonaazụ
Ajụjụ ụdị eserese n'asụsụ AQL ejiri na ArangoDB, na-alọghachi na ozi ụdị mmadụ nwere ike ịgụ gbasara onye nwere mmasị na cafe dị ka nke a:
FOR p IN persons
FOR c IN OUTBOUND p likes
RETURN { person : p.name , likes : c.name }N'ụdị mmekọrịta, ebe anyị na-emekọrịta "mgbakọ" kama ịchekwaa ha, enwere ike idegharị ajụjụ a dị ka nke a (site n'ụzọ, na-enweghị nchịkọta. likes nwere ike ime na-enweghị):
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 }Nsonaazụ na ikpe abụọ a ga-abụ otu:
[
{ "person" : "Алиса" , likes : "Жан-Жак" } ,
{ "person" : "Алиса" , likes : "Джон Донн" } ,
{ "person" : "Боб" , likes : "Джон Донн" }
]Ajuju na nsonaazụ ndị ọzọ
Ọ bụrụ na usoro nsonaazụ dị n'elu yiri ka ọ na-ahụkarị maka DBMS mmekọrịta karịa maka akwụkwọ DBMS, ị nwere ike ịnwale ajụjụ a (ma ọ bụ ịnwere ike iji. ):
FOR p IN persons
RETURN {
person : p.name,
likes : (
FOR c IN OUTBOUND p likes
RETURN c.name
)
}Nsonaazụ ga-adị ka nke a:
[
{ "person" : "Алиса" , likes : ["Жан-Жак" , "Джон Донн"] } ,
{ "person" : "Боб" , likes : ["Джон Донн"] }
]OrientDB
Ihe ndabere maka imejuputa ihe ngosi eserese n'elu ụdị akwụkwọ dị na OrientDB bụ ubi akwụkwọ, na mgbakwunye na ọtụtụ ma ọ bụ obere ọkọlọtọ scalar ụkpụrụ, nwekwara ụkpụrụ nke ụdị dị ka LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. Ụkpụrụ nke ụdị ndị a bụ njikọ ma ọ bụ nchịkọta nke njikọ akwụkwọ.
Ihe nchọpụta akwụkwọ nke sistemụ ahụ kenyere nwere “pụtara anụ ahụ”, na-egosi ọnọdụ ndekọ na nchekwa data, wee yie ihe dịka nke a: @rid : #3:16. Ya mere, ụkpụrụ nke ihe nrụtụ aka bụ n'ezie pointers (dị ka ọ dị na eserese eserese) karịa ọnọdụ nhọrọ (dị ka ọ dị na ụdị mmekọrịta).
Dị ka ArangoDB, a na-anọchi anya akụkụ dị na OrientDB dị ka akwụkwọ dị iche iche (ọ bụ ezie na ọ bụrụ na ihu enweghị ihe nke ya, enwere ike ịme ya. , ma ọ gaghị adabara akwụkwọ dị iche).
Nkọ data
N'ụdị dị nso Ebe nchekwa data OrientDB, data sitere na ihe atụ gara aga maka ArangoDB ga-adị ka nke a:
[
{
"@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"
}
]Dịka anyị nwere ike ịhụ, vertices na-echekwa ozi gbasara akụkụ mbata na ọpụpụ. Na API Document ga-enyocha iguzosi ike n'ezi ihe n'onwe ya, API eserese na-arụkwa ọrụ a. Mana ka anyị hụ ka ịnweta OrientDB dị ka n'asụsụ ajụjụ "dị ọcha" nke etinyeghị n'ime asụsụ mmemme.
Ajuju na nsonaazụ
Ajụjụ yiri nke a n'ebumnobi na ajụjụ a sitere na ihe atụ maka ArangoDB na OrientDB dị ka nke a:
SELECT name AS person_name, OUT('likes').name AS cafe_name
FROM Person
UNWIND cafe_nameA ga-enweta nsonaazụ ya n'ụdị a:
[
{ "person_name": "Алиса", "cafe_name": "Джон Донн" },
{ "person_name": "Алиса", "cafe_name": "Жан-Жак" },
{ "person_name": "Боб", "cafe_name": "Жан-Жак" }
]Ọ bụrụ na usoro nsonaazụ ahụ yikwara ọzọ "mmekọrịta", ịkwesịrị iji wepụ ahịrị ahụ :
[
{ "person_name": "Алиса", "cafe_name": [ "Джон Донн", "Жан-Жак" ] },
{ "person_name": "Боб", "cafe_name": [ "Жан-Жак" ' }
]Enwere ike ịkọwa asụsụ ajụjụ OrientDB dị ka SQL nwere ntinye dịka Gremlin. Na ụdị 2.2, ụdị arịrịọ dị ka Cypher pụtara, :
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_nameUsoro nsonaazụ ga-adị ka ọ dị na arịrịọ gara aga. Chee echiche banyere ihe a ga-ewepụ iji mee ka ọ bụrụ "mmekọrịta", dịka na ajụjụ mbụ.
Azure CosmosDB
Ruo n'ókè dị nta, ihe ekwuru n'elu gbasara ArangoDB na OrientDB metụtara Azure CosmosDB. CosmosDB na-enye API nnweta data ndị a: SQL, MongoDB, Gremlin na Cassandra.
A na-eji SQL API na MongoDB API nweta data n'ụdị akwụkwọ. Gremlin API na Cassandra API - maka ịnweta data n'ụdị eserese na kọlụm, n'otu n'otu. A na-echekwa data n'ụdị niile n'ụdị ụdị ime CosmosDB: ("atom-record-sequence"), nke dịkwa nso na akwụkwọ ahụ.

Mana ụdị data nke onye ọrụ na API ejiri mee ka edobere n'oge imepụta akaụntụ na ọrụ ahụ. Ọ gaghị ekwe omume ịnweta data kwajuru n'otu ụdị n'ụdị ọzọ, dịka ihe dị ka nke a gosipụtara:

Ya mere, ọtụtụ ihe nlereanya na Azure CosmosDB taa bụ naanị ikike iji ọtụtụ ọdụ data na-akwado ụdị dị iche iche site na otu onye nrụpụta, nke na-adịghị edozi nsogbu niile nke nchekwa dị iche iche.
Multi-model DBMS dabere na eserese eserese?
Ihe kwesịrị ịrịba ama bụ eziokwu ahụ bụ na ọ nweghị ụdị DBMS dị iche iche n'ahịa ma dabere na ụdị eserese (ma e wezụga nkwado ọtụtụ ihe nlereanya maka n'otu oge ụdị eserese abụọ: RDF na LPG; lee nke a na ). Ihe isi ike kachasị ukwuu na-akpata site na mmejuputa ụdị akwụkwọ n'elu ihe ngosi eserese, karịa nke mmekọrịta.
A na-atụle ajụjụ banyere otu esi emejuputa ihe nlereanya mmekọrịta n'elu ihe ngosi eserese ọbụna n'oge e guzobere nke ikpeazụ. Kedu dịka ọmụmaatụ :
Ọ dịghị ihe dị n'ime usoro eserese nke na-egbochi ịmepụta oyi akwa (dịka ọmụmaatụ, site na ntinye aha kwesịrị ekwesị) na nchekwa data eserese nke na-eme ka echiche mmekọrịta na (1) mgbake nke tuples site na ụzọ abụọ isi uru na mbụ na (2) nchịkọta nke tuples n'ụdị mmekọrịta.
Mgbe ị na-emejuputa ụdị akwụkwọ n'elu ihe eserese, ịkwesịrị iburu n'uche, dịka ọmụmaatụ, ihe ndị a:
- A na-ahụta ihe ndị dị n'usoro JSON ka enyere iwu, mana ndị na-esite na vertex nke nsọtụ eserese ahụ abụghị;
- A na-emekarị ka data dị na ụdị akwụkwọ ahụ dị ntakịrị;
- N'aka nke ọzọ, echiche nke akwụkwọ DBMS bụ na akwụkwọ dị njikere emebere "nchịkọta" nke na-adịghị mkpa ka ewulite ọzọ oge ọ bụla. A na-achọrọ ịnye ihe ngosi eserese na ikike iji nweta ngwa ngwa nke subgraph kwekọrọ na akwụkwọ emechara.
Obere mgbasa ozi
Onye edemede nke isiokwu ahụ metụtara mmepe nke NitrosBase DBMS, ụdị nke dị n'ime ya bụ eserese, na ụdị mpụga - mmekọrịta na akwụkwọ - bụ ihe nnọchianya ya. Ụdị niile hà nhata: ọ fọrọ nke nta ka ọ bụrụ data ọ bụla dị na nke ọ bụla n'ime ha na-eji asụsụ ajụjụ bụ ihe okike ya. Ọzọkwa, n'echiche ọ bụla, enwere ike ịgbanwe data ahụ. A ga-egosipụta mgbanwe n'ime ihe nlereanya nke ime na, ya mere, na echiche ndị ọzọ.
M ga-atụ anya na-akọwa ihe ndakọrịta nlereanya yiri na NitrosBase n'ime otu n'ime isiokwu ndị na-esonụ.
nkwubi
Enwere m olile anya na nkọwapụta n'ozuzu nke ihe a na-akpọ multi-modeling aghọwo ihe doro anya karịa onye na-agụ ya. Multi-model DBMS dị nnọọ iche, na "multi-model support" nwere ike ịdị iche. Iji ghọta ihe a na-akpọ "multi-model" na nke ọ bụla kpọmkwem, ọ bara uru ịza ajụjụ ndị a:
- Anyị na-ekwu maka ịkwado ụdị ọdịnala ma ọ bụ ụdị ụdị "ngwakọ"?
- Ụdị "ha nhata", ma ọ bụ otu n'ime ha bụ isiokwu nke ndị ọzọ?
- Ụdị ndị a "enweghị mmasị" n'ebe ibe ha nọ? Enwere ike ịgụ data edere n'otu ụdị n'ọzọ ma ọ bụ ọbụna degharịa ya?
Echere m na ajụjụ gbasara mkpa nke multi-model DBMS nwere ike ịzarịrị nke ọma, ma ajụjụ na-adọrọ mmasị bụ ụdị n'ime ha ga-adịwanye mkpa n'ọdịnihu dị nso. Ọ dị ka DBMS nke ọtụtụ ụdị nke na-akwado ụdị ọdịnala, nke bụ isi mmekọrịta, ga-achọsi ike karị; Ihe ewu ewu nke ụdị DBMS dị iche iche, na-enye ụdị ọhụrụ na-ejikọta uru nke omenala dị iche iche, bụ ihe gbasara ọdịnihu dị anya.
Naanị ndị ọrụ edebanyere aha nwere ike isonye na nyocha a. , Biko.
Ị na-eji multi-model DBMS?
Anyị anaghị eji ya, anyị na-echekwa ihe niile n'otu DBMS na otu ụdị
Anyị na-eji ọtụtụ ụdị ike nke DBMS ọdịnala
Anyị na-anọgidesi ike na polyglot
Anyị na-eji DBMS ọtụtụ ụdị ọhụrụ (Arango, Orient, CosmosDB)
Ndị ọrụ 19 tụrụ vootu. Ndị ọrụ 4 anabataghị.
isi: www.habr.com
