Zvirongwa zvemazuva ano zvemashoko zvakaoma kunzwisisa. Zvisiri zvishoma pane zvese, kuoma kwavo kunokonzerwa nekuoma kweiyo data inogadziriswa mavari. Iyo yakaoma yedata inowanzo rara mumhando dzakasiyana dze data dzinoshandiswa. Saka, semuenzaniso, kana data ikava "yakakura", chimwe chezvinetso zvinonetsa haisi iyo chete vhoriyamu ("volume"), asiwo zvakasiyana-siyana ("zvakasiyana").
Kana iwe usati wawana chikanganiso mukufunga, wobva waverenga.
Polyglot kushingirira
Izvo zviri pamusoro zvinotungamira kune chokwadi chekuti dzimwe nguva kunyangwe mukati mehurongwa hweimwe sisitimu zvakakosha kushandisa akati wandei akasiyana maDBMS kuchengetedza data uye kugadzirisa matambudziko akasiyana ekugadzirisa iwo, imwe neimwe inotsigira yayo yega data data. Neruoko rwakareruka rwaM. Fowler,
Fowler anewo muenzaniso unotevera wekuronga kuchengetedza data mune yakazara-yakazara uye yakakwirira-mutoro application mumunda we e-commerce.
Uyu muenzaniso, hongu, wakawedzeredza, asi mamwe mafungiro ekusarudza imwe kana imwe DBMS yechinangwa chinoenderana inogona kuwanikwa, semuenzaniso,
Zviri pachena kuti kuva muranda munzvimbo inochengeterwa mhuka hakusi nyore.
- Nhamba yekodhi inoita kuchengetedza data inokura maererano nenhamba yeDBMS inoshandiswa; huwandu hwekodhi yekuwiriranisa data yakanaka kana isina kuenzana neskweya yenhamba iyi.
- Sehuwandu hwehuwandu hweDBMS inoshandiswa, mari yekupa bhizinesi maitiro (scalability, kukanganisa kushivirira, kuwanikwa kwepamusoro) yeimwe neimwe yeDBMSs inoshandiswa inowedzera.
- Izvo hazvigoneke kuve nechokwadi chebhizinesi maitiro eiyo yekuchengetedza subsystem yakazara - kunyanya transaction.
Kubva pakuona kwemukuru wezoo, zvese zvinotaridzika seizvi:
- Kuwedzera kwakawanda mumutengo wemarezinesi uye rutsigiro rwehunyanzvi kubva kumugadziri weDBMS.
- Kuwandisa kwevashandi uye kuwedzera kwemazuva ekupedzisira.
- Yakananga kurasikirwa kwemari kana zvirango nekuda kwekusaenderana kwedata.
Pane kuwedzera kwakakosha mumutengo wese weiyo system (TCO). Pane imwe nzira yekubuda mumamiriro ezvinhu e "akawanda ekuchengetedza sarudzo"?
Multi-modhi
Izwi rokuti "multivariate storage" rakatanga kushandiswa muna 2011. Kuziva nezvematambudziko eiyo nzira uye kutsvaga mhinduro kwakatora makore akati wandei, uye muna 2015, kuburikidza nemiromo yevaGartner vaongorori, mhinduro yakagadziriswa:
- Kubva"
Market Guide yeNoSQL DBMSs - 2015 »:
Ramangwana reDBMSs, mavakirwo adzo uye nzira dzekuashandisa ine akawanda-modhi.
- Kubva"
Mashiripiti Quadrant yeODBMS - 2016 »:
Inotungamira inoshanda maDBMS ichapa akawanda mamodheru- ehukama uye asiri ehukama-sechikamu chepuratifomu imwe chete.
Zvinoita sekuti panguva ino vaongorori veGartner vaive chokwadi nekufanotaura kwavo. Kana iwe uchienda kune peji ne
Tafura iri pazasi inoratidza iyo DBMS - vatungamiriri mune yega yega ratings, iyo inoti ine akawanda-modhi. Kune yega yega DBMS, iyo yekutanga yakatsigirwa modhi (iyo yaimbove ndiyo yega) uye pamwe nayo iyo mhando inotsigirwa ikozvino inoratidzwa. Zvakare zvakanyorwa maDBMS anozvimisa se "pakutanga akawanda-modhi" uye, sekureva kwevagadziri, havana chero yekutanga nhaka yemuenzaniso.
DBMS | Muenzaniso wekutanga | Mamwe mamodheru |
---|---|---|
pangataura | Relational | Girafu, gwaro |
MS SQL | Relational | Girafu, gwaro |
PostgreSQL | Relational | Girafu*, gwaro |
MarkLogic | Documentary | Girafu, hukama |
MongoDB | Documentary | Kukosha-kukosha, girafu* |
DataStax | Wide-column | Documentary, girafu |
Redis | Kiyi-kukosha | Zvinyorwa, girafu* |
ArangoDB | - | Girafu, gwaro |
OrientDB | - | Girafu, gwaro, hukama |
Azure CosmosDB | - | Girafu, gwaro, hukama |
Zvinyorwa patafura
Asterisks mutafura inomaka zviteshi zvemashoko zvinoda kuchengetedzwa:
- Iyo PostgreSQL DBMS haitsigire iyo graph data modhi, asi chigadzirwa ichi chinoitsigira
zvichibva pazviri , zvakadai seAgensGraph. - Nechekuita neMongoDB, ndizvo chaizvo kutaura nezve kuvapo kwevashandisi vegirafu mumutauro wekubvunza (
,$lookup
) pane kutsigira girafu modhi, kunyangwe, chokwadi, sumo yavo yaida kumwe kugadziridzwa padanho rekuchengetedza remuviri munzira yekutsigira girafu modhi.$graphLookup
- Nezve Redis, tinoreva kuwedzera
RedisGraph .
Tevere, kune yega yega makirasi, isu ticharatidza kuti kutsigirwa kwemamodheru akati wandei kunoitwa sei muDBMS kubva mukirasi ino. Tichaona nezvehukama, zvinyorwa uye magirafu modhi kuva akanyanya kukosha uye tinoshandisa mienzaniso yeDBMS chaiyo kuratidza kuti "vakashaikwa" vanoitwa sei.
Multi-model DBMS yakavakirwa pahukama modhi
Iwo anotungamira maDBMS parizvino ane hukama; kufanotaura kwaGartner hakwaigona kutorwa sechokwadi kana RDBMS isina kuratidza kufamba munzira yekuenzanisira akawanda. Uye vanoratidza. Iye zvino pfungwa yokuti DBMS yakawanda yakafanana neSwiss banga, isingagoni kuita chero chinhu chakanaka, inogona kutungamirirwa zvakananga kuna Larry Ellison.
Munyori, zvisinei, anofarira kuitiswa kweakawanda-modhi muMicrosoft SQL Server, pamuenzaniso weiyo RDBMS rutsigiro rwegwaro uye magirafu modhi ichatsanangurwa.
Gwaro modhi muMS SQL Server
Pakatove nezvinyorwa zviviri zvakanakisa paHabré nezve mashandisiro anoita MS SQL Server tsigiro yegwaro modhi; Ini ndichazvigadzirisa pachangu kudzokorora uye tsinhiro:
Nzira yekutsigira modhi yegwaro muMS SQL Server yakajairika kune ehukama maDBMS: magwaro eJSON anofanirwa kuchengetwa mune zvakajairika zvinyorwa zvinyorwa. Tsigiro yegwaro modhi ndeyekupa yakakosha vanoshanda kuti vatarise iyi JSON:
kubvisa scalar hunhu kukosha,JSON_VALUE
kuburitsa sub-documents.JSON_QUERY
Nharo yechipiri yevashandisi vese ishoko riri muJSONPath-se syntax.
Sezviri pachena, tinogona kutaura kuti magwaro akachengetwa nenzira iyi haasi "yekutanga-kirasi masangano" mune yehukama DBMS, kusiyana nematuples. Kunyanya, muMS SQL Server parizvino hapana ma indexes paminda yeJSON magwaro, izvo zvinoita kuti zviome kujoinha matafura uchishandisa kukosha kweiyi minda uye kunyange kusarudza magwaro uchishandisa aya maitiro. Zvisinei, zvinokwanisika kugadzira koramu yakaverengwa yendima yakadaro uye index pairi.
Pamusoro pezvo, MS SQL Server inopa kugona kugadzira zviri nyore gwaro reJSON kubva zviri mumatafura uchishandisa anoshanda. FOR JSON PATH
Pakupedzisira, MS SQL Server inokutendera kuti ugadzirise dambudziko rakatarisana nekuvaka kwegwaro: unogona kuparadza JSON mumatafura uchishandisa. OPENJSON
CROSS APPLY
.
Girafu modhi muMS SQL Server
Tsigiro yegirafu (LPG) modhi inoitwawo zvizere muMicrosoft SQL Server CREATE TABLE AS NODE
и CREATE TABLE AS EDGE
maererano.
Matafura emhando yekutanga akafanana nematafura akajairwa ekuchengetedza marekodhi, nemusiyano wega wekunze uri wekuti tafura ine system field. $node_id
- yakasarudzika identifier yegirafu node mukati me database.
Saizvozvo, matafura emhando yechipiri ane masisitimu ehurongwa $from_id
и $to_id
, zvinyorwa mumatafura akadaro zvinonyatsotsanangura kubatanidzwa pakati pemanodhi. Tafura yakasiyana inoshandiswa kuchengetedza hukama hwemhando imwe neimwe.
Ngatienzanisirei izvi nemuenzaniso. Rega data regirafu rive nemagadzirirwo akafanana neakaratidzwa mumufananidzo. Wobva wagadzira chimiro chinoenderana mudhatabhesi iwe unofanirwa kumhanyisa inotevera DDL mibvunzo:
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);
Chinhu chikuru chematafura akadaro ndechekuti mumibvunzo pamusoro pavo zvinokwanisika kushandisa magirafu mapatani neCypher-like syntax (zvisinei, "*
"nezvimwe hazvisati zvatsigirwa). Zvichienderana nezviyero zvekuita, zvinogona zvakare kufungidzirwa kuti nzira inochengeterwa data mumatafura aya akasiyana nenzira iyo data inochengetwa mumatafura enguva dzose uye inokwenenzverwa kuti iite mibvunzo yegirafu yakadaro.
SELECT Cafe.name
FROM Person, likes, Cafe
WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
AND Person.name = 'John';
Zvakare, zvakanyanya kuoma kusashandisa aya mapatani egirafu paunenge uchishanda nematafura akadaro, sezvo mune yakajairwa SQL mibvunzo kugadzirisa matambudziko akafanana zvichave zvakafanira kuita kumwe kuedza kuwana system "graph" node identifiers ($node_id
, $from_id
, $to_id
; Nechikonzero chimwe chete, mibvunzo yekuisa data haina kuratidzwa pano sezvo ichinetsa zvisina basa).
Kupfupisa tsananguro yekushandiswa kwegwaro uye magirafu mamodheru muMS SQL Server, ndingacherekedza kuti kuita kwakadaro kweimwe modhi pamusoro peimwe hakuratidzike kubudirira, kunyanya kubva pakuona kwekugadzira mutauro. Izvo zvinodiwa kuti uwedzere mutauro mumwe nemumwe, mitauro haisi "orthogonal" zvachose, iyo mitemo yekuenderana inogona kunge inoshamisa.
Multi-modhi DBMS yakavakirwa pagwaro modhi
Muchikamu chino ndinoda kuenzanisira kuitwa kwema-multi-model mugwaro DBMSs ndichishandisa muenzaniso weasinganyanyofarirwa nawo, MongoDB (sezvakataurwa, inongove neconditional graph operators. $lookup
и $graphLookup
, kusashanda pane zvakaunganidzwa zvakaunganidzwa), asi uchishandisa muenzaniso weakanyanya kukura uye "bhizinesi" DBMS
Saka, rega kuunganidzwa kuve neseti yemagwaro eXML emhando inotevera (MarkLogic zvakare inobvumidza iwe kuchengeta magwaro eJSON):
<Person INN="631803299804">
<name>John</name>
<surname>Smith</surname>
</Person>
Yehukama modhi muMarkLogic
Maonero ehukama ekuunganidzwa kwemagwaro anogona kugadzirwa uchishandisa value
mumuenzaniso pazasi panogona kuve nekupokana 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>
Unogona kugadzirisa maonero akagadzirwa nemubvunzo weSQL (semuenzaniso, kuburikidza neODBC):
SELECT name, surname FROM Person WHERE name="John"
Nehurombo, iyo yehukama maonero akagadzirwa neanoratidza template inoverengwa-chete. Paunenge uchigadzirisa chikumbiro chayo, MarkLogic inoedza kushandisa
Girafu modhi muMarkLogic
Nerutsigiro rwegirafu (RDF) modhi, zvese zvakangofanana. Zvakare nerubatsiro
<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>
Unogona kugadzirisa mhedzisiro yeRDF girafu nemubvunzo weSPARQL:
PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
:631803299804 :name ?name ; :surname ?surname .
}
Kusiyana neiyo yehukama, MarkLogic inotsigira iyo girafu modhi mune dzimwe nzira mbiri:
- A DBMS inogona kuve yakazara-yakasiyana chengetedzo yeRDF data (matatu mairi achadaidzwa
vakakwanisa mukupesana nedzarondedzerwa pamusoro aparakabviswa ). - RDF mune yakakosha serialization inogona kungoiswa muXML kana JSON zvinyorwa (uye katatu achadaidzwa
isingadzoreke ) Iyi ingangove imwe nzira kune michinaidref
uye vamwe.
Pfungwa yakanaka yekuti zvinhu "chaizvo" zvinoshanda sei muMarkLogic inopiwa na
Multi-model DBMS "isina mhando huru"
Kune zvakare maDBMS pamusika anozviisa sepakutanga akawanda-modhi, pasina chero nhaka huru modhi. Izvi zvinosanganisira
Muchokwadi, kune "musimboti" modhi muArangoDB uye OrientDB. Muzviitiko zvese izvi, aya ndiwo emhando yavo yedata, inova generalizations yegwaro rimwe. Iwo generalizations anonyanya kufambisa kugona kuita mibvunzo yegirafu uye hukama hwehukama.
Aya mamodheru ndiwo chete anowanikwa kuti ashandiswe mune yakatsanangurwa DBMS; yavo yemibvunzo mitauro yakagadzirirwa kushanda navo. Ehe, mhando dzakadai uye maDBMS ari kuvimbisa, asi kushaikwa kwekuenderana neakajairwa mamodheru nemitauro kunoita kuti zvisaite kushandisa maDBMS aya mumasisitimu enhaka-kutsiva maDBMS atoshandiswa ipapo.
Paive patove nechinyorwa chinoshamisa nezve ArangoDB uye OrientDB paHabré:
ArangoDB
ArangoDB inoti inotsigira graph data model.
Node dzegirafu muArangoDB magwaro akajairwa, uye mipendero magwaro emhando yakakosha iyo, pamwe chete neminda yenguva dzose, ine (_key
, _id
, _rev
) system fields _from
и _to
. Zvinyorwa mugwaro DBMSs zvakajairwa kusanganiswa kuita muunganidzwa. Kuunganidzwa kwemagwaro anomiririra mipendero kunonzi kuunganidzwa kwemupendero muArangoDB. Nenzira, magwaro ekuunganidza emupendero zvakare magwaro, saka mipendero muArangoDB inogonawo kuita senge node.
Data yekutanga
Ngatitorei muunganidzwa persons
, ane magwaro anoita seizvi:
[
{
"_id" : "people/alice" ,
"_key" : "alice" ,
"name" : "Алиса"
},
{
"_id" : "people/bob" ,
"_key" : "bob" ,
"name" : "Боб"
}
]
Ngakuvewo nekuunganidza cafes
:
[
{
"_id" : "cafes/jd" ,
"_key" : "jd" ,
"name" : "Джон Донн"
},
{
"_id" : "cafes/jj" ,
"_key" : "jj" ,
"name" : "Жан-Жак"
}
]
Zvadaro kuunganidza likes
ingaratidzika seichi:
[
{
"_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
}
]
Mibvunzo nemigumisiro
Mubvunzo wechimiro chegirafu mumutauro weAQL unoshandiswa muArangoDB, uchidzora mune inoverengwa nevanhu ruzivo rwekuti ndiani anoda cafe, inoita seizvi:
FOR p IN persons
FOR c IN OUTBOUND p likes
RETURN { person : p.name , likes : c.name }
Muchimiro chehukama, patiri "computing" hukama pane kuzvichengeta, mubvunzo uyu unogona kunyorwazve seizvi (nenzira, pasina muunganidzwa. likes
aigona kuita pasina):
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 }
Mhedzisiro mumakesi ese ari maviri ichave yakafanana:
[
{ "person" : "Алиса" , likes : "Жан-Жак" } ,
{ "person" : "Алиса" , likes : "Джон Донн" } ,
{ "person" : "Боб" , likes : "Джон Донн" }
]
Mimwe mibvunzo nemhinduro
Kana iyo mhedzisiro fomati iri pamusoro ichiita seyakajairika kune yehukama DBMS pane yegwaro DBMS, unogona kuedza uyu mubvunzo (kana unogona kushandisa COLLECT
FOR p IN persons
RETURN {
person : p.name,
likes : (
FOR c IN OUTBOUND p likes
RETURN c.name
)
}
Mhedzisiro ichaita seizvi:
[
{ "person" : "Алиса" , likes : ["Жан-Жак" , "Джон Донн"] } ,
{ "person" : "Боб" , likes : ["Джон Донн"] }
]
OrientDB
Hwaro hwekuita girafu modhi pamusoro pegwaro modhi muOrientDB ndeye LINK
, LINKLIST
, LINKSET
, LINKMAP
и LINKBAG
. Makoshero emhando idzi zvinongedzo kana kuunganidzwa kwezvinongedzo kune
Chiziviso chegwaro chakapihwa nehurongwa chine "chirevo chemuviri", chinoratidza nzvimbo yerekodhi mudhatabhesi, uye chinotaridzika seizvi: @rid : #3:16
. Nekudaro, iwo makoshero ezvivakwa zvereferenzi anonongedzera (semumuenzaniso wegirafu) kwete mamiriro ekusarudza (semumuenzaniso wehukama).
Kufanana neArangoDB, mipendero muOrientDB inomiririrwa semagwaro akasiyana (kunyangwe kana mupendero usina zvivakwa zvawo, unogona kugadzirwa.
Data yekutanga
Muchimiro chiri pedyo ne
[
{
"@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"
}
]
Sezvatinoona, vertices zvakare inochengeta ruzivo nezve inopinda uye inobuda mipendero. At
Mibvunzo nemigumisiro
Mubvunzo wakafanana nechinangwa kumubvunzo kubva kumuenzaniso weArangoDB muOrientDB inoita seizvi:
SELECT name AS person_name, OUT('likes').name AS cafe_name
FROM Person
UNWIND cafe_name
Mhedzisiro yacho ichawanikwa mune inotevera fomu:
[
{ "person_name": "Алиса", "cafe_name": "Джон Донн" },
{ "person_name": "Алиса", "cafe_name": "Жан-Жак" },
{ "person_name": "Боб", "cafe_name": "Жан-Жак" }
]
Kana iyo mhedzisiro fomati zvakare ichiita seyakanyanya "hukama", unofanirwa kubvisa mutsara ne UNWIND()
[
{ "person_name": "Алиса", "cafe_name": [ "Джон Донн", "Жан-Жак" ] },
{ "person_name": "Боб", "cafe_name": [ "Жан-Жак" ' }
]
Mutauro wemubvunzo weOrientDB unogona kutsanangurwa seSQL ine Gremlin-kunge inoisa. Mushanduro 2.2, fomu rekukumbira seCypher rakaonekwa, 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
Mhedzisiro yefomati ichave yakafanana neyakakumbira yapfuura. Funga nezve izvo zvinofanirwa kubviswa kuti zviwedzere "hukama", semubvunzo wekutanga.
Azure CosmosDB
Kusvika padiki, zvakataurwa pamusoro pamusoro peArangoDB uye OrientDB zvinoshanda kuAzure CosmosDB. CosmosDB inopa anotevera data APIs: SQL, MongoDB, Gremlin uye Cassandra.
SQL API uye MongoDB API inoshandiswa kuwana data mugwaro modhi. Gremlin API uye Cassandra API - yekuwana data mumagirafu uye makoramu mafomati, zvichiteerana. Dhata mumamodeli ese anochengetwa muCosmosDB yemukati modhi fomati:
Asi iyo data data yakasarudzwa nemushandisi uye API inoshandiswa inogadziriswa panguva yekugadzira account mubasa. Izvo hazvigoneke kuwana data yakatakurwa mune imwe modhi mune imwe modhi fomati, sezvinoratidzwa nechimwe chinhu chakadai:
Nekudaro, akawanda-modhi muAzure CosmosDB nhasi ingori kugona kushandisa akati wandei dhatabhesi anotsigira akasiyana mamodheru kubva kune mumwe mugadziri, izvo zvisingagadzirise matambudziko ese eakawanda-siyana ekuchengetedza.
Multi-model DBMS yakavakirwa pane girafu modhi?
Chinocherechedzwa inyaya yekuti hapana akawanda-modhi maDBMS pamusika asi ayo akavakirwa pamuenzaniso wegirafu (kunze kwerutsigiro rwemhando dzakasiyana-siyana dzemhando mbiri dzemagirafu panguva imwe chete: RDF neLPG; ona izvi mu.
Mubvunzo wekuti ungashandisa sei muenzaniso wehukama pamusoro peiyo girafu muenzaniso wakatariswa kunyange panguva yekuumbwa kwekupedzisira. Sei
Hapana chinhu chinowanikwa munzira yegirafu chinodzivirira kugadzira dhizaini (semuenzaniso, nekukodzera indexing) pane dhatabhesi regirafu rinogonesa maonero ehukama ne (1) kudzoreredza matuples kubva kune akajairwa kiyi kukosha mapeya uye (2) mapoka e tuples nemhando yehukama.
Paunenge uchigadzira dhizaini modhi pamusoro peiyo girafu modhi, unofanirwa kuyeuka, semuenzaniso, zvinotevera:
- Zvinhu zveJSON array zvinoonekwa zvakarongerwa, asi izvo zvinobuda kubva kumucheto wemupendero wegirafu hazvisi;
- Dhata mugwaro modhi rinowanzoitwa denormalised; hausati wada kuchengeta akati wandei makopi egwaro rakadzimirirwa rimwe chete, uye subdocuments kazhinji haina zviziviso;
- Nekune rumwe rutivi, pfungwa dzegwaro DBMSs ndedzekuti magwaro akagadzirira-akagadzirwa "aggregates" ayo asingade kuvakwa patsva nguva imwe neimwe. Zvinotarisirwa kupa mufananidzo wegirafu nekukwanisa kukurumidza kuwana subgraph inoenderana negwaro rakapedzwa.
Kushambadza zvishoma
Munyori wechinyorwa ane hukama nekuvandudzwa kweNitrosBase DBMS, iyo yemukati modhi ine girafu, uye ekunze mamodheru - ehukama uye gwaro - ndiwo anomiririra. Mamodheru ese akaenzana: rinenge chero data rinowanikwa mune chero ipi zvayo uchishandisa mutauro wemubvunzo wakasarudzika kwairi. Uyezve, mune chero maonero, iyo data inogona kuchinjwa. Shanduko dzicharatidzwa mune yemukati modhi uye, zvinoenderana, mune mamwe maonero.
Ini ndinovimba ndichatsanangura kuti sei modhi yekufananidza inotaridzika muNitrosBase mune chimwe chezvinyorwa zvinotevera.
mhedziso
Ndinovimba kuti maratidziro akazara ezvinonzi multi-modelling ave akawedzera kana kushoma kujeka kune muverengi. Multi-model DBMSs akasiyana zvakanyanya, uye "multi-model rutsigiro" inogona kutaridzika zvakasiyana. Kuti unzwisise izvo zvinonzi "multi-model" mune imwe neimwe nyaya, zvakakosha kupindura mibvunzo inotevera:
- Tiri kutaura nezve kutsigira echinyakare modhi kana imwe mhando ye "hybrid" modhi?
- Mienzaniso "yakaenzana", kana kuti imwe yacho inyaya yevamwe?
- Mienzaniso "haina hanya" kune mumwe nemumwe here? Ko data yakanyorwa mune imwe modhi inogona kuverengerwa mune imwe kana kutonyorwazve?
Ndinofunga kuti mubvunzo pamusoro pekukosha kwe-multi-model DBMS inogona kutopindurwa zvakanaka, asi mubvunzo unonakidza ndewekuti ndeapi marudzi avo achanyanya kudiwa munguva yemberi iri pedyo. Zvinoita sekuti akawanda-modhi maDBMS anotsigira echinyakare mamodheru, kunyanya hukama, achave ari mukudiwa kukuru; Kuzivikanwa kwema-multi-model DBMSs, kupa mhando itsva dzinobatanidza zvakanakira zvakasiyana-siyana zvechinyakare, inyaya yeramangwana riri kure.
Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo.
Iwe unoshandisa akawanda-modhi DBMS?
-
Isu hatizvishandise, tinochengeta zvese mune imwe DBMS uye mune imwe modhi
-
Isu tinoshandisa akawanda-modhi maitiro echinyakare DBMSs
-
Isu tinodzidzira polyglot kushingirira
-
Isu tinoshandisa mitsva yakawanda-modhi DBMS (Arango, Orient, CosmosDB)
19 vashandisi vakavhota. 4 vashandisi vakaramba.
Source: www.habr.com