Mekhoa ea morao-rao ea boitsebiso e rarahane haholo. Ha e le hantle, ho rarahana ha tsona ho bakoa ke ho rarahana ha data e sebetsitsoeng ho tsona. Hangata ho rarahana ha data ho itšetlehile ka mefuta e sa tšoaneng ea data e sebelisoang. Kahoo, ka mohlala, ha data e fetoha "e kholo", e 'ngoe ea litšobotsi tse nang le bothata hase feela molumo oa eona ("volume"), empa hape le mefuta e sa tšoaneng ("mefuta").
Haeba ha u e-so fumane phoso ea ho beha mabaka, bala pele.

Tse ka hare
Ho phehella ha Polyglot
Lintlha tse ka holimo li lebisa tabeng ea hore ka linako tse ling esita le ka har'a moralo oa tsamaiso e le 'ngoe ho hlokahala hore u sebelise li-DBMS tse' maloa tse fapaneng ho boloka lintlha le ho rarolla mathata a sa tšoaneng a ho li sebetsana, e 'ngoe le e' ngoe e tšehetsang mohlala oa eona oa data. Ka letsoho le khanyang la M. Fowler, libuka tse ngata tse tummeng le e 'ngoe ea Agile Manifesto, boemo bona bo bitsoa polokelo ea mefuta e mengata ("polyglot persistence").
Fowler o boetse o na le mohlala o latelang oa ho hlophisa polokelo ea data ka ts'ebeliso e felletseng le e boima haholo lefapheng la khoebo ea e-commerce.

Mohlala ona, ehlile, o fetelletse, empa lintlha tse ling molemong oa ho khetha DBMS e le 'ngoe bakeng sa morero o lumellanang li ka fumanoa, mohlala, .
Ho hlakile hore ho ba mosebeletsi serapeng sa liphoofolo tse joalo ha ho bonolo.
- Palo ea khoutu e etsang polokelo ea data e ntse e hōla ho ea ka palo ea DBMS e sebelisoang; palo ea data synchronizing ya khoutu e ntle haeba e sa lekane le sekwere sa palo ena.
- E le palo e ngata ea li-DBMS tse sebelisitsoeng, litšenyehelo tsa ho fana ka litšobotsi tsa khoebo (scalability, ho mamella liphoso, ho fumaneha ho phahameng) ea e 'ngoe le e' ngoe ea DBMS e sebelisitsoeng e eketseha.
- Ha ho khonehe ho netefatsa litšobotsi tsa khoebo tsa subsystem ea polokelo ka kakaretso - haholo-holo transactional.
Ho ea ka pono ea motsamaisi oa zoo, ntho e 'ngoe le e' ngoe e shebahala tjena:
- Keketseho e ngata ea litšenyehelo tsa laesense le tšehetso ea tekheniki ho tsoa ho moetsi oa DBMS.
- Mosebetsi o mongata le ho eketseha ha linako tse behiloeng.
- Litahlehelo tse tobileng tsa lichelete kapa likotlo ka lebaka la ho se lumellane ha data.
Ho na le keketseho e kholo ho kakaretso ea litšenyehelo tsa thepa ea tsamaiso (TCO). Na ho na le tsela ea ho tsoa boemong ba "likhetho tse ngata tsa polokelo"?
Mehlala e mengata
Lentsoe "polokelo ea li-multivariate" le qalile ho sebelisoa ka 2011. Ho lemoha mathata a mokhoa ona le ho batla tharollo ho ile ha nka lilemo tse 'maloa,' me ka 2015, ka melomo ea bahlahlobisisi ba Gartner, karabo e ile ea etsoa:
- Ho tloha ""
Bokamoso ba DBMS, meralo ea bona le mekhoa ea ho e sebelisa ke mefuta e mengata.
- Ho tloha ""
Li-DBMS tse ka sehloohong tsa ts'ebetso li tla fana ka mehlala e mengata-e amanang le likamano le e seng ea likamano-e le karolo ea sethala se le seng.
Ho bonahala eka lekhetlong lena bahlahlobisisi ba Gartner ba ne ba nepile ka ponelopele ea bona. Haeba u ea leqepheng le DBMS ho DB-Engines, u ka bona seoоBoholo ba baetapele ba eona ba ipeha ka ho khetheha e le li-DBMS tsa mefuta e mengata. Se tšoanang se ka bonoa leqepheng le nang le lintlha tsa poraefete.
Tafole e ka tlase e bonts'a DBMS - baetapele ho e 'ngoe le e' ngoe ea litekanyetso tsa poraefete, tse ipolelang hore ke tsa mefuta e mengata. Bakeng sa DBMS e 'ngoe le e' ngoe, ho bontšoa mohlala oa pele o tšehetsoeng (oo e kileng ea e-ba oona feela) 'me hammoho le oona mefuta e tšehetsoeng hona joale e bontšitsoe. Hape ho thathamisitsoe li-DBMS tse ipehang e le "mofuta oa pele oa mefuta e mengata" 'me, ho ea ka baqapi, ha ba na mohlala oa pele o futsitsoeng.
| DBMS | Mohlala oa pele | Mehlala ea tlatsetso |
|---|---|---|
| oracle | Kamano | Kerafo, tokomane |
| MS SQL | Kamano | Kerafo, tokomane |
| PostgreSQL | Kamano | Kerafo*, tokomane |
| MarkLogic | Litokomane | Kerafo, kamano |
| MongoDB | Litokomane | Boleng ba bohlokoa, kerafo* |
| DataStax | Kholomo e pharaletseng | Documentary, kerafo |
| Redis | Boleng ba bohlokoa | Documentary, kerafo* |
| ArangoDB | - | Kerafo, tokomane |
| OrientDB | - | Kerafo, tokomane, kamano |
| Azure CosmosDB | - | Kerafo, tokomane, kamano |
Lintlha tse holim'a tafole
Linaleli tse ka har'a tafole li tšoaea lipolelo tse hlokang lipehelo:
- PostgreSQL DBMS ha e tšehetse mofuta oa data oa graph, empa sehlahisoa sena sea e tšehetsa , joalo ka AgensGraph.
- Mabapi le MongoDB, ho nepahetse ho bua ka boteng ba basebelisi ba graph ka puo ea lipotso (, ) ho feta mabapi le ho tšehetsa mohlala oa graph, le hoja, ehlile, kenyelletso ea bona e ne e hloka hore ho be le ntlafatso e itseng boemong ba polokelo ea 'mele ka lehlakoreng la ho tšehetsa mohlala oa graph.
- Mabapi le Redis, re bolela katoloso .
Ka mor'a moo, bakeng sa e 'ngoe le e' ngoe ea lihlopha, re tla bontša kamoo tšehetso ea mefuta e mengata e sebelisoang kateng ho DBMS ho tloha sehlopheng sena. Re tla nka mehlala ea likamano, litokomane le li-graph e le tsa bohlokoa ka ho fetisisa le ho sebelisa mehlala ea li-DBMS tse khethehileng ho bontša kamoo "tse sieo" li kenngoa ts'ebetsong.
DBMS ea mefuta e mengata e thehiloeng ho mohlala oa likamano
Li-DBMS tse etelletseng pele hajoale li amana; Polelo ea Gartner e ne e ke ke ea nkuoa e le 'nete haeba li-RDBMS li sa bonts'e motsamao ho ea ho mefuta e mengata. 'Me ba bontša. Hona joale khopolo ea hore DBMS ea mefuta e mengata e tšoana le thipa ea Switzerland, e ke keng ea etsa letho hantle, e ka lebisoa ka ho toba ho Larry Ellison.
Leha ho le joalo, mongoli o khetha ho kenya ts'ebetsong ea mekhoa e mengata ho Microsoft SQL Server, ka mohlala oo tšehetso ea RDBMS bakeng sa mehlala ea litokomane le li-graph e tla hlalosoa.
Mohlala oa litokomane ho MS SQL Server
Ho se ho bile le lingoloa tse peli tse ntle haholo mabapi le Habré mabapi le hore na MS SQL Server e sebelisa ts'ehetso ea mofuta oa tokomane joang; Ke tla ipehela ho pheta-pheta le litlhaloso tse khutšoane:
Mokhoa oa ho ts'ehetsa mofuta oa tokomane ho MS SQL Server o tloaelehile haholo bakeng sa li-DBMS tsa kamano: Litokomane tsa JSON li reretsoe ho bolokoa libakeng tse tloaelehileng tsa mongolo. Ts'ehetso ea mofuta oa tokomane ke ho fana ka basebelisi ba khethehileng ho hlalosa JSON ena:
- ho ntša boleng ba tšobotsi ea scalar,
- ho ntša litokomane tse nyane.
Khang ea bobeli ea basebelisi ka bobeli ke polelo ho syntax e kang ea JSONPath.
Ka mokhoa o hlakileng, re ka re litokomane tse bolokiloeng ka tsela ena ha se "mekhatlo ea pele" ho DBMS e amanang, ho fapana le li-tuples. Haholo-holo, ho MS SQL Server ha joale ha ho na li-index masimong a litokomane tsa JSON, e leng se etsang hore ho be thata ho kopanya litafole ho sebelisa boleng ba likarolo tsena esita le ho khetha litokomane tse sebelisang litekanyetso tsena. Leha ho le joalo, hoa khoneha ho theha kholomo e baloang bakeng sa tšimo e joalo le index ho eona.
Ho feta moo, MS SQL Server e fana ka bokhoni ba ho etsa tokomane ea JSON habonolo ho tsoa ho litafole u sebelisa opareitara. - monyetla, ka tsela e itseng, ho fapana le e fetileng, polokelo e tloaelehileng. Ho hlakile hore ho sa tsotelehe hore na RDBMS e potlakile hakae, mokhoa ona o hanana le mohopolo oa litokomane tsa DBMS, tseo ha e le hantle li bolokang likarabo tse lokiselitsoeng lipotsong tse tsebahalang, 'me li ka rarolla mathata a boiketlo ba nts'etsopele, empa eseng lebelo.
Qetellong, MS SQL Server e u lumella ho rarolla bothata bo fapaneng ba kaho ea litokomane: o ka senya JSON ka litafole u sebelisa . Haeba tokomane e sa bataletse ka ho feletseng, u tla hloka ho e sebelisa CROSS APPLY.
Mohlala oa kerafo ho MS SQL Server
Tšehetso ea mohlala oa kerafo (LPG) e boetse e kengoa tšebetsong ka botlalo ho Microsoft SQL Server : Ho khothaletsoa ho sebelisa litafole tse khethehileng ho boloka li-node le ho boloka lithako tsa graph. Litafole tse joalo li entsoe ho sebelisoa lipolelo CREATE TABLE AS NODE и CREATE TABLE AS EDGE ho latela.
Litafole tsa mofuta oa pele li tšoana le litafole tse tloaelehileng tsa ho boloka lirekoto, ka phapang e le 'ngoe feela ea kantle ke hore tafole e na le tšimo ea sistimi. $node_id - sekhetho se ikhethileng sa node ea graph ka har'a database.
Ka mokhoa o ts'oanang, litafole tsa mofuta oa bobeli li na le masimo a tsamaiso $from_id и $to_id, likenyo tsa litafole tse joalo li hlalosa ka ho hlaka likamano lipakeng tsa li-node. Tafole e arohaneng e sebelisoa ho boloka likamano tsa mofuta o mong le o mong.
A re bontšeng sena ka mohlala. Etsa hore data ea graph e be le sebopeho se kang se bontšitsoeng setšoantšong. Ebe ho theha sebopeho se tsamaellanang ho database o hloka ho tsamaisa lipotso tse latelang tsa 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);Taba ea mantlha ea litafole tse joalo ke hore lipotsong tse khahlano le bona ho ka sebelisoa lipaterone tsa graph ka li-syntax tse kang Cypher (leha ho le joalo, "*"joalo-joalo ha li so tšehetsoe). Ho ipapisitsoe le litekanyo tsa ts'ebetso, ho ka nahanoa hape hore tsela eo data e bolokiloeng ka eona litafoleng tsena e fapane le tsela eo data e bolokoang ka eona litafoleng tse tloaelehileng mme e ntlafalitsoe bakeng sa ho etsa lipotso tse joalo tsa kerafo.
SELECT Cafe.name
FROM Person, likes, Cafe
WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
AND Person.name = 'John';Ho feta moo, ho thata haholo ho se sebelise mekhoa ena ea li-graph ha u sebetsa le litafole tse joalo, kaha lipotsong tse tloaelehileng tsa SQL ho rarolla mathata a tšoanang ho tla hlokahala ho etsa boiteko bo eketsehileng ba ho fumana li-identifiers tsa "graph" tsa "graph" system.$node_id, $from_id, $to_id; Ka lebaka le tšoanang, lipotso tsa ho kenya data ha li bontšoe mona kaha li boima ho sa hlokahale).
Ho akaretsa tlhaloso ea ts'ebetsong ea tokomane le mehlala ea kerafo ho MS SQL Server, ke tla hlokomela hore ts'ebetsong e joalo ea mohlala o mong holim'a e 'ngoe ha e bonahale eka e atlehile, haholo-holo ho tloha ponong ea moralo oa puo. Hoa hlokahala ho atolosa puo e 'ngoe le e' ngoe, lipuo ha li "orthogonal" ka ho feletseng, melao ea ho lumellana e ka ba e makatsang haholo.
DBMS ea mefuta e mengata e thehiloeng ho mofuta oa tokomane
Karolong ena, ke rata ho bontša ts'ebetsong ea mefuta e mengata ea li-DBMS tsa litokomane ke sebelisa mohlala oa tse sa tsejoeng ka ho fetisisa ho tsona, MongoDB (joalokaha ho boletsoe, e na le li-graph operators tse nang le maemo. $lookup и $graphLookup, ha e sebetse ka likoleke tse sharded), empa ho sebelisa mohlala oa DBMS e hōlileng tsebong le ea "khoebo" .
Kahoo, tlohella pokello e be le sete ea litokomane tsa XML tsa mofuta o latelang (MarkLogic e boetse e u lumella ho boloka litokomane tsa JSON):
<Person INN="631803299804">
<name>John</name>
<surname>Smith</surname>
</Person>Mohlala oa likamano ho MarkLogic
Pono ea kamano ea pokello ea litokomane e ka etsoa ho sebelisoa (likahare tsa likarolo value mohlala o ka tlase ho ka ba le XPath e sa sebetseng):
<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>U ka sebetsana le pono e entsoeng ka potso ea SQL (mohlala, ka ODBC):
SELECT name, surname FROM Person WHERE name="John"Ka bomalimabe, pono ea kamano e entsoeng ke template ea ponts'o ke ea ho bala feela. Ha o sebetsana le kopo ea eona, MarkLogic e tla leka ho e sebelisa . Pejana, MarkLogic e ne e na le maikutlo a fokolang a kamano, ka botlalo ebile lia ngoloa, empa joale li nkuoa li sa sebelisoe.
Mohlala oa kerafo ho MarkLogic
Ka tšehetso ea mohlala oa graph (RDF), ntho e 'ngoe le e' ngoe e batla e tšoana. Hape ka thuso o ka theha setšoantšo sa RDF sa pokello ea litokomane ho tsoa mohlaleng o kaholimo:
<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>O ka sebetsana le graph ea RDF e hlahisitsoeng ka potso ea SPARQL:
PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
:631803299804 :name ?name ; :surname ?surname .
}Ho fapana le ea kamano, MarkLogic e tšehetsa mohlala oa graph ka litsela tse ling tse peli:
- DBMS e ka ba polokelo e felletseng e felletseng ea data ea RDF (lintlha tse tharo ho eona li tla bitsoa ho fapana le tse hlalositsoeng ka holimo ).
- RDF ka serialization e khethehileng e ka kenngoa feela litokomaneng tsa XML kapa JSON ('me joale li-triplets li tla bitsoa ). Mohlomong ena ke mokhoa o mong oa mekhoa
idrefle ba bang.
Mohopolo o motle oa hore na lintho "ehlile" li sebetsa joang ho MarkLogic e fanoa ke , ka kutloisiso ena, ke boemo bo tlaase, le hoja morero oa eona e le ho fapana le hoo - ho leka ho itokolla ho mohlala oa data o sebelisitsoeng, ho etsa bonnete ba hore mosebetsi o lumellanang le data ka mefuta e fapaneng, transactional, joalo-joalo.
DBMS ea mefuta e mengata "ntle le mohlala o ka sehloohong"
Ho boetse ho na le li-DBMS 'marakeng tse ipehang joalo ka mefuta e mengata ea pele, ntle le mofuta oa mantlha o futsitsoeng. Tsena li kenyelletsa , (ho tloha 2018 k'hamphani ea nts'etsopele ke ea SAP) le (tšebeletso e le karolo ea sethala sa maru sa Microsoft Azure).
Ebile, ho na le mefuta ea "core" ho ArangoDB le OrientDB. Maemong ana ka bobeli, tsena ke mehlala ea bona ea data, e leng kakaretso ea tokomane e le 'ngoe. Kakaretso ke ho thusa haholo bokhoni ba ho etsa lipotso tsa graph le kamano.
Mefuta ena ke eona feela e fumanehang bakeng sa ho sebelisoa ho DBMS e boletsoeng; lipuo tsa bona tsa lipotso li etselitsoe ho sebetsa le tsona. Ha e le hantle, mehlala e joalo le li-DBMS lia tšepisa, empa ho se lumellane le mehlala le lipuo tse tloaelehileng ho etsa hore ho se ke ha khoneha ho sebelisa li-DBMS tsena tsamaisong ea lefa-ho nka sebaka sa DBMS e seng e ntse e sebelisoa moo.
Ho ne ho se ho ntse ho e-na le sengoloa se monate ka ArangoDB le OrientDB ho Habré: .
ArangoDB
ArangoDB e batla tšehetso bakeng sa mohlala oa data oa graph.
Li-node tsa graph ho ArangoDB ke litokomane tse tloaelehileng, 'me metse e ka thōko ke litokomane tsa mofuta o khethehileng oo, hammoho le masimo a tloaelehileng a tsamaiso, a nang le (_key, _id, _rev) masimo a tsamaiso _from и _to. Litokomane tse litokomaneng tsa DBMS li kopanngoa ka tloaelo ho ba likoleke. Lipokello tsa litokomane tse emelang methati li bitsoa pokello ea moeli ho ArangoDB. Ka tsela, litokomane tsa pokello ea moeli le tsona ke litokomane, kahoo lithako ho ArangoDB le tsona li ka sebetsa joalo ka li-node.
Lintlha tsa pele
A re beng le pokello persons, bao litokomane tsa bona li shebahalang tjena:
[
{
"_id" : "people/alice" ,
"_key" : "alice" ,
"name" : "Алиса"
},
{
"_id" : "people/bob" ,
"_key" : "bob" ,
"name" : "Боб"
}
]Hape ho ke ho be le pokello cafes:
[
{
"_id" : "cafes/jd" ,
"_key" : "jd" ,
"name" : "Джон Донн"
},
{
"_id" : "cafes/jj" ,
"_key" : "jj" ,
"name" : "Жан-Жак"
}
]Ebe pokello likes e ka shebahala tjena:
[
{
"_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
}
]Lipotso le liphetho
Potso ea mofuta oa kerafo ka puo ea AQL e sebelisitsoeng ho ArangoDB, e khutlisetsang tlhaiso-leseling e baloang ke batho mabapi le hore na ke mang ea ratang k'hefi efe, e shebahala tjena:
FOR p IN persons
FOR c IN OUTBOUND p likes
RETURN { person : p.name , likes : c.name }Ka mokhoa oa kamano, moo re "khomphutha" likamano ho e-na le ho li boloka, potso ena e ka ngoloa hape ka tsela ena (ka tsela, ntle le pokello. likes e ka etsa ntle le):
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 }Sephetho maemong ka bobeli se tla tšoana:
[
{ "person" : "Алиса" , likes : "Жан-Жак" } ,
{ "person" : "Алиса" , likes : "Джон Донн" } ,
{ "person" : "Боб" , likes : "Джон Донн" }
]Lipotso le liphetho tse ling
Haeba sebopeho sa sephetho se kaholimo se bonahala se tloaelehile haholo bakeng sa DBMS ea kamano ho feta tokomane ea DBMS, u ka leka potso ena (kapa u ka e sebelisa. ):
FOR p IN persons
RETURN {
person : p.name,
likes : (
FOR c IN OUTBOUND p likes
RETURN c.name
)
}Sephetho se tla shebahala tjena:
[
{ "person" : "Алиса" , likes : ["Жан-Жак" , "Джон Донн"] } ,
{ "person" : "Боб" , likes : ["Джон Донн"] }
]OrientDB
Motheo oa ho kenya tšebetsong mohlala oa graph holim'a mohlala oa tokomane ho OrientDB ke masimo a litokomane, ntle le litekanyetso tse tloaelehileng tsa scalar, le tsona li na le boleng ba mefuta e joalo LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. Boleng ba mefuta ena ke lihokela kapa pokello ea lihokelo tsa litokomane.
Setsebi sa tokomane se fanoeng ke sistimi se na le "moelelo oa 'mele", se bonts'ang boemo ba rekoto sebakeng sa polokelo ea litaba,' me se shebahala tjena: @rid : #3:16. Kahoo, boleng ba thepa ea litšupiso ehlile ke lisupa (joalo ka mohlala oa graph) ho fapana le maemo a khetho (joalo ka mohlala oa kamano).
Joalo ka ArangoDB, likhahla tsa OrientDB li emeloa e le litokomane tse arohaneng (le hoja moeli o se na thepa ea ona, o ka etsoa. , 'me e ke ke ea lumellana le tokomane e fapaneng).
Lintlha tsa pele
Ka sebopeho se haufi le OrientDB database, lintlha tse tsoang mohlaleng o fetileng oa ArangoDB li ne li tla shebahala tjena:
[
{
"@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"
}
]Joalo ka ha re bona, li-vertices le tsona li boloka tlhahisoleseling mabapi le mapheo a kenang le a tsoang. Ho Tokomane ea API e tlameha ho beha leihlo botšepehi ba boits'oaro ka boeona, 'me Graph API e nka mosebetsi ona. Empa ha re boneng hore na phihlello ea OrientDB e shebahala joang ka lipuo tse "hloekileng" tse sa kenyelletsoeng lipuong tsa mananeo.
Lipotso le liphetho
Potso e tšoanang ka sepheo le potso e tsoang ho mohlala oa ArangoDB ho OrientDB e shebahala tjena:
SELECT name AS person_name, OUT('likes').name AS cafe_name
FROM Person
UNWIND cafe_nameSephetho se tla fumanoa ka foromo e latelang:
[
{ "person_name": "Алиса", "cafe_name": "Джон Донн" },
{ "person_name": "Алиса", "cafe_name": "Жан-Жак" },
{ "person_name": "Боб", "cafe_name": "Жан-Жак" }
]Haeba sebopeho sa sephetho se bonahala se le "kamano", o hloka ho tlosa mohala ka :
[
{ "person_name": "Алиса", "cafe_name": [ "Джон Донн", "Жан-Жак" ] },
{ "person_name": "Боб", "cafe_name": [ "Жан-Жак" ' }
]Puo ea potso ea OrientDB e ka hlalosoa e le SQL e nang le lintlha tse kang Gremlin. Ho mofuta oa 2.2, ho ile ha hlaha foromo ea kopo e kang Cypher, :
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_nameSebopeho sa sephetho se tla tšoana le kopo e fetileng. Nahana ka se lokelang ho tlosoa ho etsa hore e be "kamano", joalo ka potso ea pele.
Azure CosmosDB
Ho isa bohōleng bo fokolang, se boletsoeng ka holimo ka ArangoDB le OrientDB se sebetsa ho Azure CosmosDB. CosmosDB e fana ka li-API tsa phihlello ea data tse latelang: SQL, MongoDB, Gremlin le Cassandra.
SQL API le MongoDB API li sebelisoa ho fumana data ka mokhoa oa tokomane. Gremlin API le Cassandra API - bakeng sa ho fihlella data ka liforomo tsa graph le kholomo, ka ho latellana. Lintlha tsa mefuta eohle li bolokiloe ka mokhoa oa ka hare oa CosmosDB: (“atom-record-sequence”), e leng haufi le tokomane ea pele.

Empa mohlala oa data o khethiloeng ke mosebelisi le API e sebelisitsoeng e tsitsitsoe ka nako ea ho theha ak'haonte ts'ebeletso. Ha ho khonehe ho fihlella data e kentsoeng mofuteng o le mong ka sebopeho sa mofuta o mong, joalo ka ha ho bonts'itsoe ke ntho e kang ena:

Ka hona, mefuta e mengata ea Azure CosmosDB kajeno ke bokhoni ba ho sebelisa li-database tse 'maloa tse tšehetsang mefuta e fapaneng ea moetsi a le mong, e sa rarolle mathata ohle a polokelo ea mefuta e mengata.
DBMS ea mefuta e mengata e thehiloeng ho mohlala oa graph?
Ho hlokomelehang ke taba ea hore ha ho na li-DBMS tsa mefuta e mengata 'marakeng empa li ipapisitse le mohlala oa graph (ntle le tšehetso ea mefuta e mengata bakeng sa mefuta e' meli ea li-graph: RDF le LPG; bona sena ho ). Mathata a maholo ka ho fetisisa a bakoa ke ts'ebetsong ea mohlala oa litokomane holim'a setšoantšo sa kerafo, ho e-na le kamano.
Potso ea mokhoa oa ho kenya ts'ebetsong mohlala oa kamano holim'a setšoantšo sa graph e ne e nkoa esita le nakong ea ho thehoa ha morao. Joang mohlala :
Ha ho na letho le amanang le mokhoa oa graph le thibelang ho theha lera (mohlala, ka indexing e loketseng) ho database ea graph e lumellang pono ea kamano le (1) ho hlaphoheloa ha li-tuples ho tsoa ho lipara tse tloaelehileng tsa bohlokoa le (2) li-tuples ka mofuta oa kamano.
Ha u sebelisa mohlala oa tokomane ka holim'a mohlala oa graph, u lokela ho hopola, mohlala, tse latelang:
- Lintlha tsa sehlopha sa JSON li nkuoa li laetsoe, empa tse tsoang vertex ea moeli oa kerafo ha li joalo;
- Lintlha tsa mofuta oa tokomane hangata li entsoe ka mokhoa o sa tloaelehang; u ntse u sa batle ho boloka likopi tse 'maloa tsa tokomane e le 'ngoe e kentsoeng,' me litokomane tse nyane hangata ha li na li-identifiers;
- Ka lehlakoreng le leng, khopolo ea litokomane tsa DBMS ke hore litokomane li itokiselitse "li-aggregates" tse sa hlokeng ho hahoa bocha nako le nako. Hoa hlokahala ho fana ka mohlala oa graph ka bokhoni ba ho fumana kapele subgraph e lumellanang le tokomane e phethiloeng.
Papatso e nyane
Mongoli oa sengoloa o amana le nts'etsopele ea NitrosBase DBMS, mohlala oa ka hare ke graph, le mehlala ea kantle - kamano le tokomane - ke liemeli tsa eona. Mefuta eohle e lekana: hoo e batlang e le data leha e le efe e fumaneha ho e 'ngoe ea tsona e sebelisa puo ea lipotso e tloaelehileng ho eona. Ho feta moo, ka pono efe kapa efe, data e ka fetoloa. Liphetoho li tla bonahala ka mokhoa oa ka hare 'me, ka hona, ka maikutlo a mang.
Ka tšepo ke tla hlalosa hore na ho bapisa mohlala ho shebahala joang ho NitrosBase ho se seng sa lihlooho tse latelang.
fihlela qeto e
Ke tšepa hore litlhaloso tse akaretsang tsa seo ho thoeng ke mekhoa e mengata li se li hlakile ho 'mali. Li-DBMS tsa mefuta e mengata li fapane haholo, 'me "tšehetso ea mefuta e mengata" e ka shebahala e fapane. Ho utloisisa se bitsoang "multi-model" boemong bo bong le bo bong, ho molemo ho araba lipotso tse latelang:
- Na re bua ka ho tšehetsa mehlala ea setso kapa mofuta o itseng oa "hybrid"?
- Na mehlala e "lekana", kapa na e 'ngoe ea tsona ke taba ea tse ling?
- Na mehlala "ha e tsotelle" e mong ho e mong? Na lintlha tse ngotsoeng ka mokhoa o le mong li ka baloa ho tse ling kapa tsa ngoloa?
Ke nahana hore potso e mabapi le bohlokoa ba DBMS ea mefuta e mengata e se e ntse e ka arajoa ka mokhoa o nepahetseng, empa potso e thahasellisang ke hore na ke mefuta efe ea bona e tla ba teng ho feta nakong e tlang. Ho bonahala eka li-DBMS tsa mefuta e mengata tse tšehetsang mehlala ea setso, haholo-holo likamano, li tla ba le tlhokahalo e kholoanyane; Ho tsebahala ha mefuta e mengata ea DBMS, ho fana ka mehlala e mecha e kopanyang melemo ea mefuta e sa tšoaneng ea setso, ke taba ea bokamoso bo hōle haholo.
Ke basebelisi ba ngolisitsoeng feela ba ka kenyang letsoho phuputsong. ka kopo.
Na u sebelisa DBMS ea mefuta e mengata?
Ha re e sebelise, re boloka ntho e 'ngoe le e' ngoe ka DBMS e le 'ngoe le ka mohlala o le mong
Re sebelisa bokhoni ba mefuta e mengata ea li-DBMS tsa setso
Re itloaetsa ho phehella ha polyglot
Re sebelisa DBMS e ncha ea mefuta e mengata (Arango, Orient, CosmosDB)
Basebelisi ba 19 ba ile ba khetha. Basebelisi ba 4 ba hanne.
Source: www.habr.com
