ʻO nā DBMS mau kumu hoʻohālike ke kumu o nā ʻōnaehana ʻike hou?
Paʻakikī loa nā ʻōnaehana ʻike hou. ʻAʻole ka mea liʻiliʻi loa, ʻo kā lākou paʻakikī ma muli o ka paʻakikī o ka ʻikepili i hana ʻia i loko o lākou. Aia ka paʻakikī o ka ʻikepili i nā ʻano hiʻohiʻona ʻikepili i hoʻohana ʻia. No laila, no ka laʻana, ke lilo ka ʻikepili i "nui", ʻo kekahi o nā hiʻohiʻona pilikia ʻaʻole wale kona leo ("volume"), akā ʻo kona ʻano ("ʻano").
Inā ʻaʻole ʻoe e ʻike i kahi hemahema o ka noʻonoʻo, a laila e heluhelu.
ʻO ka mea i luna e alakaʻi i ka ʻoiaʻiʻo i kekahi manawa i loko o ka ʻōnaehana o hoʻokahi ʻōnaehana pono e hoʻohana i nā DBMS like ʻole e mālama i ka ʻikepili a hoʻoponopono i nā pilikia like ʻole o ka hoʻoponopono ʻana iā lākou, kākoʻo kēlā me kēia i kāna kumu hoʻohālike ponoʻī. Me ka lima mama o M. Fowler, ka mea kākau he mau puke kaulana a me kekahi o nā hoa kākau ʻO Agile Manifesto, kapa ʻia kēia kūlana waihona ʻokoʻa nui (“polyglot persistence”).
Loaʻa iā Fowler kēia hiʻohiʻona o ka hoʻonohonoho ʻana i ka mālama ʻana i ka ʻikepili i kahi noi piha a me ka haʻahaʻa kiʻekiʻe ma ke kahua o ka e-commerce.
ʻO kēia hiʻohiʻona, ʻoiaʻiʻo, ua hoʻonui ʻia, akā hiki ke loaʻa kekahi mau manaʻo no ke koho ʻana i kekahi a i ʻole kekahi DBMS no ke kumu kūpono, no ka laʻana, maanei.
He mea maopopo, ʻaʻole maʻalahi ka lilo ʻana i kauā ma ia zoo.
ʻO ka nui o ke code e hana ana i ka mālama ʻana i ka ʻikepili e ulu aʻe i ka nui o nā DBMS i hoʻohana ʻia; maikaʻi ka nui o ka ʻikepili synchronizing code inā ʻaʻole kūlike i ka huinahā o kēia helu.
Ma ke ʻano he nui o ka helu o nā DBMS i hoʻohana ʻia, hoʻonui nā kumukūʻai o ka hāʻawi ʻana i nā ʻano ʻoihana (scalability, hoʻomanawanui hewa, loaʻa kiʻekiʻe) o kēlā me kēia DBMS i hoʻohana ʻia.
ʻAʻole hiki ke hōʻoia i nā hiʻohiʻona ʻoihana o ka subsystem waihona ma ke ʻano holoʻokoʻa - ʻoi aku ka transactionality.
Mai ka manaʻo o ka luna zoo, ua like nā mea a pau penei:
ʻO ka piʻi nui o ke kumukūʻai o nā laikini a me ke kākoʻo ʻenehana mai ka mea hana DBMS.
ʻO ka hoʻonui ʻana a me ka hoʻonui ʻana i nā lā palena.
ʻO nā poho kālā pololei a i ʻole nā hoʻopaʻi ma muli o ka like ʻole o ka ʻikepili.
Aia ka pi'i nui o ka huina kālā o ka 'ona (TCO). Aia kekahi ala i waho o ke kūlana o "nā koho mālama lehulehu"?
Hoʻohālike nui
Ua hoʻohana ʻia ka huaʻōlelo "multivariate storage" i ka makahiki 2011. ʻO ka ʻike ʻana i nā pilikia o ka hoʻokokoke a me ka ʻimi ʻana i kahi hopena i lawe i kekahi mau makahiki, a ma ka 2015, ma o ka waha o nā mea loiloi Gartner, ua hoʻokumu ʻia ka pane:
E hāʻawi ana nā DBMS hana alakaʻi i nā hiʻohiʻona he nui - pili a pili ʻole - ma ke ʻano o kahi kahua hoʻokahi.
Me he mea lā i kēia manawa ua pololei ka poʻe loiloi Gartner i kā lākou wānana. Inā hele ʻoe i ka ʻaoʻao me helu nui DBMS ma DB-Engines, hiki iā ʻoe ke ʻike i kēlāоHoʻonohonoho ka hapa nui o kāna mau alakaʻi iā lākou iho ma ke ʻano he DBMS multi-model. Hiki ke ʻike ʻia ka mea like ma ka ʻaoʻao me kekahi helu pilikino.
Hōʻike ka papa ma lalo i ka DBMS - nā alakaʻi i kēlā me kēia o nā helu pilikino, e ʻōlelo nei he mau hiʻohiʻona. No kēlā me kēia DBMS, ua hōʻike ʻia ke kumu hoʻohālike i kākoʻo ʻia (ʻo ia wale nō ka mea hoʻokahi) a me ia pū me nā hiʻohiʻona i kākoʻo ʻia i kēia manawa. Ua helu pū ʻia nā DBMS e hoʻonoho iā lākou iho ma ke ʻano he "hoʻohālike mua" a, e like me ka mea nāna i hana, ʻaʻohe kumu hoʻoilina mua.
DBMS
kumu hoʻohālike mua
Nā hiʻohiʻona hou
kahi e'ōlelo ai
Pilina
Kipi, palapala
MS SQL
Pilina
Kipi, palapala
PostgreSQL
Pilina
Kipi*, palapala
MakaLogic
palapala palapala
Kipi, pili
ʻO MongoDB
palapala palapala
Waiwai kī, pakuhi*
ʻIkepili
kolamu laula
Palapala, pakuhi
Ho'ōla
Waiwai kī
Palapala, pakuhi*
ArangoDB
-
Kipi, palapala
OrientDB
-
Kipi, palapala, pili
ʻO Azure CosmosDB
-
Kipi, palapala, pili
Nā memo ma ka pākaukau
ʻO nā asterisk ma ka papaʻaina e hōʻailona i nā ʻōlelo e pono ai ke kau ʻana:
ʻAʻole kākoʻo ka PostgreSQL DBMS i ke kumu hoʻohālike ʻikepili kiʻi, akā kākoʻo kēia huahana iā ia ma muli o ia mea, e like me AgensGraph.
E pili ana iā MongoDB, ʻoi aku ka pololei o ke kamaʻilio e pili ana i ka hele ʻana o nā mea hana kiʻi i ka ʻōlelo nīnau ($lookup, $graphLookup) ma mua o ke kākoʻo ʻana i ke kumu hoʻohālike, ʻoiai, ʻoiaʻiʻo, pono kā lākou hoʻolauna ʻana i kekahi mau optimizations ma ka pae mālama kino i ke kuhikuhi o ke kākoʻo ʻana i ke kumu hoʻohālike.
E pili ana iā Redis, ke manaʻo nei mākou i ka hoʻonui Hoʻopiʻi Kiʻi.
A laila, no kēlā me kēia papa, e hōʻike mākou pehea e hoʻokō ʻia ai ke kākoʻo no kekahi mau hiʻohiʻona i ka DBMS mai kēia papa. E noʻonoʻo mākou i nā hiʻohiʻona pili, palapala a me ka pakuhi i mea nui loa a hoʻohana i nā hiʻohiʻona o nā DBMS kikoʻī e hōʻike i ke ʻano o ka hoʻokō ʻia ʻana o nā "mea nalowale".
ʻO DBMS hoʻohālike nui ma muli o ke kumu hoʻohālike pili
ʻO nā DBMS alakaʻi i kēia manawa he pilina; ʻAʻole hiki ke manaʻo ʻia ka wānana a Gartner he ʻoiaʻiʻo inā ʻaʻole hōʻike nā RDBMS i ka neʻe ʻana i ke ala o ka hoʻohālikelike ʻana. A hōʻike lākou. I kēia manawa, ʻo ka manaʻo o ka DBMS multi-model e like me ka pahi Swiss, ʻaʻole hiki ke hana maikaʻi i kekahi mea, hiki ke kuhikuhi pololei iā Larry Ellison.
Akā, makemake ka mea kākau i ka hoʻokō ʻana i nā hoʻohālike he nui ma Microsoft SQL Server, ma ke ʻano o ke kākoʻo ʻana o RDBMS i nā palapala a me nā kiʻi kiʻi e wehewehe ʻia.
Hoʻohālike palapala ma MS SQL Server
Ua loaʻa i ʻelua mau ʻatikala maikaʻi loa ma Habré e pili ana i ka hoʻokō ʻana o MS SQL Server i ke kākoʻo no ke kumu hoʻohālike palapala; E kaupalena wau iaʻu iho i kahi haʻi pōkole a me ka ʻōlelo:
ʻO ke ala e kākoʻo ai i ke kumu hoʻohālike palapala ma MS SQL Server he mea maʻamau no nā DBMS pili: Manaʻo ʻia nā palapala JSON e mālama ʻia i nā kahua kikokikona maʻamau. ʻO ke kākoʻo no ke kumu hoʻohālike palapala e hāʻawi i nā mea hana kūikawā e hoʻopau i kēia JSON:
ʻO ka hoʻopaʻapaʻa ʻelua o nā mea hoʻohana ʻelua he ʻōlelo ia ma JSONPath-like syntax.
Ma keʻano kikoʻī, hiki iā mākou ke ʻōlelo ʻo nā palapala i mālama ʻia ma kēia ʻano ʻaʻole "nā hui papa mua" i kahi DBMS pili, ʻaʻole like me nā tuples. ʻO ke kikoʻī, ma MS SQL Server i kēia manawa ʻaʻohe indexes ma nā kahua o nā palapala JSON, kahi mea paʻakikī ke hoʻohui i nā papa me ka hoʻohana ʻana i nā waiwai o kēia mau māla a koho i nā palapala e hoʻohana ana i kēia mau waiwai. Eia nō naʻe, hiki ke hana i kahi kolamu helu no ia kahua a me kahi kuhikuhi ma luna.
Eia kekahi, hāʻawi ʻo MS SQL Server i ka hiki ke kūkulu maʻalahi i kahi palapala JSON mai nā ʻike o nā papa me ka hoʻohana ʻana i ka mea hoʻohana. FOR JSON PATH - kahi hiki, ma kekahi ʻano, kūʻē i ka mea ma mua, mālama maʻamau. He mea maopopo no ka wikiwiki o ka RDBMS, ua kue keia ano i ka manao o ka palapala DBMSs, ka mea e malama pono i na pane makaukau i na ninau kaulana, a hiki ke hooponopono i na pilikia o ka maalahi o ka ulu ana, aole nae ka wikiwiki.
ʻO ka mea hope loa, ʻae ʻo MS SQL Server iā ʻoe e hoʻoponopono i ka pilikia ʻē aʻe o ka hana palapala: hiki iā ʻoe ke decompose JSON i nā papa me ka hoʻohana ʻana OPENJSON. Inā ʻaʻole palahalaha loa ka palapala, pono ʻoe e hoʻohana CROSS APPLY.
Hoʻohālike kiʻi ma MS SQL Server
Hoʻokomo piha ʻia ke kākoʻo no ke kumu hoʻohālike (LPG) ma Microsoft SQL Server hiki ke wānana: Manaʻo ʻia e hoʻohana i nā papa kūikawā no ka mālama ʻana i nā node a me ka mālama ʻana i nā ʻaoʻao kiʻi. Hana ʻia ia mau papa me ka hoʻohana ʻana i nā ʻōlelo CREATE TABLE AS NODE и CREATE TABLE AS EDGE ʻo kēlā me kēia.
ʻO nā papa o ka ʻano mua e like me nā papa maʻamau no ka mālama ʻana i nā moʻolelo, me ka ʻokoʻa waho wale nō ʻo ka papa ʻaina he kahua ʻōnaehana. $node_id — ka mea hoʻomaopopo kū hoʻokahi o ka node pakuhi i loko o ka waihona.
Pēlā nō, loaʻa i nā papa o ka ʻano ʻelua nā kahua ʻōnaehana $from_id и $to_id, wehewehe pono nā mea komo i loko o ia mau papa i nā pilina ma waena o nā nodes. Hoʻohana ʻia kahi papa ʻokoʻa e mālama i nā pilina o kēlā me kēia ʻano.
E hōʻike kākou i kēia me kekahi laʻana. E hoʻolālā i ka ʻikepili pakuhi e like me ka mea i hōʻike ʻia ma ke kiʻi. A laila no ka hana ʻana i ke ʻano pili i ka waihona ʻikepili pono ʻoe e holo i kēia mau nīnau 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);
ʻO ka kikoʻī nui o ia mau papa ʻaina ʻo ia i nā nīnau e kūʻē iā lākou hiki ke hoʻohana i nā kiʻina kiʻi me ka syntax like Cypher (akā naʻe, "*"ʻaʻole i kākoʻo ʻia nā mea ʻē aʻe). Ma muli o nā ana hana, hiki ke manaʻo ʻia he ʻokoʻa ke ʻano o ka mālama ʻana i ka ʻikepili i kēia mau papa mai ke ʻano o ka mālama ʻana i nā ʻikepili i nā papa maʻamau a hoʻopaʻa ʻia no ka hoʻokō ʻana i nā nīnau kiʻi.
SELECT Cafe.name
FROM Person, likes, Cafe
WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
AND Person.name = 'John';
Eia kekahi, paʻakikī loa ka hoʻohana ʻole ʻana i kēia mau hiʻohiʻona i ka wā e hana ai me ia mau papa, no ka mea ma nā nīnau SQL maʻamau e hoʻoponopono i nā pilikia like e pono ai e hoʻoikaika hou e kiʻi i ka ʻōnaehana "graph" node identifiers ($node_id, $from_id, $to_id; No ke kumu like, ʻaʻole i hōʻike ʻia nā nīnau no ka hoʻokomo ʻana i ka ʻikepili ma ʻaneʻi no ka mea he paʻakikī ʻole lākou).
No ka hōʻuluʻulu ʻana i ka wehewehe ʻana o ka hoʻokō ʻana o ka palapala a me nā hiʻohiʻona kiʻi ma MS SQL Server, e hoʻomaopopo wau ʻaʻole i kūleʻa kēlā mau hoʻokō ʻana o kekahi kumu hoʻohālike ma luna o kekahi, mai ka manaʻo o ka hoʻolālā ʻōlelo. Pono e hoʻonui i hoʻokahi ʻōlelo me kekahi, ʻaʻole "orthogonal" piha nā ʻōlelo, hiki ke ʻokoʻa nā lula pili.
ʻO DBMS kumu hoʻohālike he nui ma muli o ke kumu hoʻohālike palapala
Ma kēia ʻāpana, makemake wau e hōʻike i ka hoʻokō ʻana o ka multi-model i ka palapala DBMS me ka hoʻohana ʻana i ka laʻana o ka mea kaulana ʻole o lākou, ʻo MongoDB (e like me ka mea i ʻōlelo ʻia, aia wale nō nā mea hoʻokele kiʻi kūlana. $lookup и $graphLookup, ʻaʻole e hana i nā hōʻiliʻili sharded), akā e hoʻohana ana i ka laʻana o kahi DBMS ʻoi aʻe a "ʻoihana" MakaLogic.
No laila, e ʻae i ka hōʻiliʻili i kahi pūʻulu o nā palapala XML o kēia ʻano (MarkLogic hiki iā ʻoe ke mālama i nā palapala JSON):
Hiki ke hana ʻia kahi ʻike pili o kahi hōʻiliʻili o nā palapala me ka hoʻohana ʻana hōʻike maʻamau (maʻiʻo o nā mea value i ka hiʻohiʻona ma lalo nei hiki ke loaʻa kahi XPath kūʻokoʻa):
Hiki iā ʻoe ke kamaʻilio i ka ʻike i hana ʻia me kahi nīnau SQL (no ka laʻana, ma o ODBC):
SELECT name, surname FROM Person WHERE name="John"
ʻO ka mea pōʻino, he heluhelu-wale nō ka ʻike pili i hana ʻia e ka laʻana hōʻike. Ke hana nei i kahi noi no ia mea, e ho'āʻo ʻo MarkLogic e hoʻohana palapala kuhikuhi. Ma mua, ua kaupalena ʻo MarkLogic i nā manaʻo pili index based a hiki ke kākau ʻia, akā i kēia manawa ua manaʻo ʻia lākou he mea ʻole.
Hoʻohālike kiʻi ma MarkLogic
Me ke kākoʻo ʻana i ke kumu hoʻohālike (RDF), ua like nā mea a pau. Eia hou me ke kōkua hōʻike maʻamau hiki iā ʻoe ke hana i kahi hōʻike RDF o kahi hōʻiliʻili o nā palapala mai ka laʻana ma luna:
ʻAʻole like me ka pilina pili, kākoʻo ʻo MarkLogic i ke ʻano kiʻi ma nā ʻano ʻelua ʻē aʻe:
Hiki i kahi DBMS ke waiho i kahi waihona ʻokoʻa piha o ka ʻikepili RDF (e kapa ʻia nā triplets i loko e hoʻokele ʻokoʻa i nā mea i hōʻike ʻia ma luna unuhiia).
Hiki ke hoʻokomo wale ʻia ʻo RDF i ka serialization kūikawā i nā palapala XML a i ʻole JSON (a laila e kapa ʻia nā triplets. hoʻokele ʻole ʻia). He mea ʻokoʻa paha kēia i nā mīkini idref a me kekahi poʻe'ē aʻe.
Hāʻawi ʻia kahi manaʻo maikaʻi o ka hana ʻana o nā mea "ʻoiaʻiʻo" ma MarkLogic Optical API, ma keia manao, he haʻahaʻa-pae, oiai nae kona kumu he okoa - e ho'āʻo e abstract mai ka ikepili kükohu i hoʻohana 'ia, e hōʻoia i ka hana like me ka 'ikepili i loko o okoa kükohu, transactionality, etc.
ʻO DBMS mau hiʻohiʻona "me ka ʻole kumu hoʻohālike"
Aia kekahi mau DBMS ma ka mākeke e hoʻonoho iā lākou iho ma ke ʻano he multi-model mua, me ka ʻole o nā kumu hoʻohālike nui. Aia kēia mau mea ArangoDB, OrientDB (mai ka 2018 ka hui hoʻomohala no SAP) a CosmosDB (lawelawe ma ke ʻano o ka Microsoft Azure cloud platform).
ʻOiaʻiʻo, aia nā hiʻohiʻona "core" ma ArangoDB a me OrientDB. Ma nā hihia ʻelua, ʻo ia kā lākou mau hiʻohiʻona ʻikepili ponoʻī, ʻo ia ka hoʻohālikelike o ka palapala hoʻokahi. ʻO ka laulā nui ka mea e maʻalahi i ka hiki ke hana i nā nīnau o ka pakuhi a me ke ʻano pili.
ʻO kēia mau hiʻohiʻona wale nō nā mea i loaʻa no ka hoʻohana ʻana i ka DBMS i kuhikuhi ʻia; ua hoʻolālā ʻia kā lākou mau ʻōlelo noiʻi e hana pū me lākou. ʻOiaʻiʻo, ʻo ia mau hiʻohiʻona a me nā DBMS e hoʻohiki nei, akā ʻo ka nele o ka hoʻohālikelike ʻana me nā hiʻohiʻona maʻamau a me nā ʻōlelo e hiki ʻole ai ke hoʻohana i kēia mau DBMS i nā ʻōnaehana hoʻoilina-e hoʻololi i nā DBMS i hoʻohana mua ʻia ma laila.
Aia kekahi ʻatikala maikaʻi loa e pili ana iā ArangoDB a me OrientDB ma Habré: E HUI i nā ʻikepili NoSQL.
ArangoDB
Ke koi nei ʻo ArangoDB i ke kākoʻo no kahi kumu hoʻohālike kiʻi.
ʻO nā node o kahi pakuhi ma ArangoDB he mau palapala maʻamau, a ʻo nā ʻaoʻao nā palapala o kahi ʻano kūikawā, me nā kahua ʻōnaehana maʻamau, loaʻa (_key, _id, _rev) kahua ʻōnaehana _from и _to. Hoʻohui mau ʻia nā palapala i loko o nā palapala DBMS i nā hōʻiliʻili. ʻO nā hōʻiliʻili o nā palapala e hōʻike ana i nā kihi i kapa ʻia ʻo nā hōʻiliʻili ʻili ma ArangoDB. Ma ke ala, ʻo nā palapala hōʻiliʻili ʻili he mau palapala, no laila hiki i nā kihi ma ArangoDB ke hana ma ke ʻano he nodes.
ʻIkepili mua
E loaʻa iā mākou kahi hōʻiliʻili persons, nona nā palapala e like me kēia:
ʻO kahi hulina kaila kiʻi ma ka ʻōlelo AQL i hoʻohana ʻia ma ArangoDB, e hoʻihoʻi ana i ka ʻike i hiki ke heluhelu ʻia e ke kanaka e pili ana i ka mea makemake i ka cafe, e like me kēia:
FOR p IN persons
FOR c IN OUTBOUND p likes
RETURN { person : p.name , likes : c.name }
Ma kahi kaila pili, kahi mākou e "heluhelu" ai i nā pilina ma mua o ka mālama ʻana iā lākou, hiki ke kākau hou ʻia kēia nīnau e like me kēia (ma ke ala, me ka ʻole o ka hōʻiliʻili. likes hiki ke hana me ka ʻole):
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 }
ʻO ke kumu no ka hoʻokō ʻana i kahi kiʻi kiʻi ma luna o kahi ʻano palapala ma OrientDB manawa maopopo nā kahua palapala, me ka ʻoi aku a i ʻole ka liʻiliʻi o nā waiwai scalar maʻamau, loaʻa pū kekahi mau waiwai o nā ʻano like LINK, LINKLIST, LINKSET, LINKMAP и LINKBAG. ʻO nā waiwai o kēia mau ʻano he loulou a hōʻiliʻili paha o nā loulou i mea hoʻomaopopo pūnaewele palapala.
ʻO ka mea hōʻike palapala i hāʻawi ʻia e ka ʻōnaehana he "manaʻo kino", e hōʻike ana i ke kūlana o ka moʻolelo i loko o ka waihona, a ʻano like kēia: @rid : #3:16. No laila, ʻo nā koina o nā waiwai kuhikuhi he mau kuhikuhi maoli nō ia (e like me ka hoʻohālike kiʻi) ma mua o nā kūlana koho (e like me ka model relational).
E like me ArangoDB, ua hōʻike ʻia nā ʻaoʻao ma OrientDB ma ke ʻano he palapala ʻokoʻa (ʻoiai inā ʻaʻohe ona waiwai ponoʻī, hiki ke hana ʻia. māmā, a ʻaʻole ia e pili i kahi palapala ʻokoʻa).
ʻIkepili mua
Ma kahi ʻano kokoke i ʻano hoʻolei ʻO ka waihona OrientDB, ʻo ka ʻikepili mai ka hiʻohiʻona mua no ArangoDB e like me kēia:
E like me kā mākou e ʻike ai, mālama pū nā vertices i ka ʻike e pili ana i nā ʻaoʻao komo a i waho. Ma ka hoʻohana ʻana Pono ka API Palapala e nānā i ka pono pono'ī, a na ka Graph API e hana i kēia hana. Akā e ʻike kākou i ke ʻano o ka loaʻa ʻana o OrientDB i nā ʻōlelo nīnau "maʻemaʻe" ʻaʻole i hoʻohui ʻia i nā ʻōlelo papahana.
Nā nīnau a me nā hopena
ʻO kahi nīnau e like me ke kumu i ka nīnau mai ka laʻana no ArangoDB ma OrientDB e like me kēia:
SELECT name AS person_name, OUT('likes').name AS cafe_name
FROM Person
UNWIND cafe_name
Hiki ke wehewehe ʻia ka ʻōlelo nīnau a OrientDB e like me SQL me nā mea hoʻokomo like me Gremlin. Ma ka mana 2.2, ua puka mai kahi palapala noi e like me 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
E like ana ke ano o ka hopena me ka noi mua. E noʻonoʻo e pili ana i nā mea e pono e wehe ʻia i mea e ʻoi aku ka "pili" e like me ka nīnau mua loa.
ʻO Azure CosmosDB
Ma kahi liʻiliʻi, pili ka mea i ʻōlelo ʻia ma luna e pili ana iā ArangoDB a me OrientDB i Azure CosmosDB. Hāʻawi ʻo CosmosDB i kēia mau API komo ʻikepili: SQL, MongoDB, Gremlin a me Cassandra.
Hoʻohana ʻia ʻo SQL API a me MongoDB API no ke komo ʻana i ka ʻikepili i ke ʻano palapala. ʻO Gremlin API a me Cassandra API - no ke kiʻi ʻana i ka ʻikepili ma nā palapala kiʻi a me nā kolamu, kēlā me kēia. Mālama ʻia ka ʻikepili i nā kumu hoʻohālike a pau ma ke ʻano kumu hoʻohālike i loko o CosmosDB: ARS ("atom-record-sequence"), kahi kokoke i ka palapala hoʻokahi.
Akā,ʻo kaʻikepiliʻikepili i kohoʻia e ka mea hoʻohana a me ka API i hoʻohanaʻia ua paʻa i ka manawa o ka hanaʻana i kahi moʻokāki ma ka lawelawe. ʻAʻole hiki ke komo i ka ʻikepili i hoʻouka ʻia ma kekahi kumu hoʻohālike ma ke ʻano hoʻohālike ʻē aʻe, e like me ka mea i hōʻike ʻia e kekahi mea penei:
No laila, ʻo ka multi-model ma Azure CosmosDB i kēia lā wale nō ka hiki ke hoʻohana i kekahi mau ʻikepili e kākoʻo ana i nā hiʻohiʻona like ʻole mai ka mea hana hoʻokahi, ʻaʻole ia e hoʻonā i nā pilikia āpau o ka mālama ʻana i nā ʻano like ʻole.
ʻO DBMS mau-hoʻohālike ma muli o ke kumu hoʻohālike?
ʻO ka ʻoiaʻiʻo, ʻaʻohe DBMS mau hiʻohiʻona nui ma ka mākeke akā ua hoʻokumu ʻia ma ke ʻano kiʻi kiʻi (koe wale ke kākoʻo multi-model no nā hiʻohiʻona kiʻi ʻelua i ka manawa like: RDF a me LPG; e ʻike i kēia ma hoʻopuka mua). ʻO nā pilikia nui loa ma muli o ka hoʻokō ʻana i kahi kŘkohu palapala ma luna o ke kŘkohu pakuhi, ma mua o ka pilina.
Ua noʻonoʻo ʻia ka nīnau no ka hoʻokō ʻana i kahi kumu hoʻohālike pili ma luna o ke kumu hoʻohālike i ka wā i hoʻokumu ʻia ai ka hope. Pehea ʻlelo, ma ka laʻana, David McGovern:
ʻAʻohe mea i loko o ka pakuhi ala e pale ai i ka hana ʻana i kahi papa (e laʻa, ma ka helu kuhikuhi kūpono) ma kahi ʻikepili kiʻi e hiki ai ke ʻike pili me (1) hoʻihoʻi ʻana i nā tuple mai nā hui waiwai kī maʻamau a (2) pūʻulu o nā tuple ma ke ʻano pili.
I ka hoʻokō ʻana i kahi kŘkohu palapala ma luna o kahi kŘkohu kiʻi, pono ʻoe e hoʻomanaʻo, no ka laʻana, penei:
Manaʻo ʻia nā ʻāpana o kahi hui JSON, akā ʻo nā mea e puka mai ana mai ka piko o kahi lihi o ka pakuhi ʻaʻole;
ʻAʻole makemake ʻoe e mālama i kekahi mau kope o ka palapala i hoʻopili ʻia, a ʻaʻohe mea hōʻike i nā subdocuments;
Ma ka ʻaoʻao ʻē aʻe, ʻo ka manaʻo o ka palapala DBMS ʻo ia nā palapala i mākaukau i "hui" ʻaʻole pono e kūkulu hou ʻia i kēlā me kēia manawa. Pono e hoʻolako i ke kŘkohu kiʻi me ka hiki ke loaʻa koke i kahi subgraph e pili ana i ka palapala i pau.
He hoʻolaha liʻiliʻi
ʻO ka mea kākau o ka ʻatikala e pili ana i ka hoʻomohala ʻana i ka NitrosBase DBMS, ʻo ke ʻano o loko o ia ka pakuhi, a ʻo nā hiʻohiʻona waho - pili a me ka palapala - ʻo ia kāna mau hōʻike. Ua like nā hiʻohiʻona a pau: aneane loaʻa nā ʻikepili i kekahi o lākou me ka hoʻohana ʻana i kahi ʻōlelo nīnau i kūpono iā ia. Eia kekahi, i kēlā me kēia manaʻo, hiki ke hoʻololi i ka ʻikepili. E hōʻike ʻia nā hoʻololi i loko o ke kumu hoʻohālike i loko a, no laila, i nā manaʻo ʻē aʻe.
Manaʻo wau e wehewehe i ke ʻano o ka hoʻohālikelike ʻana i ke ʻano o NitrosBase i kekahi o kēia mau ʻatikala.
hopena
Manaʻolana wau ua ʻoi aʻe a emi ʻole paha i ka mea heluhelu nā ʻāpana ākea o ka mea i kapa ʻia he multi-modeling. ʻOkoʻa loa nā DBMS mau hiʻohiʻona, a ʻokoʻa ke ʻano o ka "kākoʻo multi-model". No ka hoʻomaopopo ʻana i ka mea i kapa ʻia ʻo "multi-model" i kēlā me kēia hihia kikoʻī, pono e pane i kēia mau nīnau:
Ke kamaʻilio nei mākou e pili ana i ke kākoʻo ʻana i nā hiʻohiʻona kuʻuna a i ʻole kekahi ʻano hiʻohiʻona "hybrid"?
ʻO nā hiʻohiʻona "like", a i ʻole kekahi o lākou ke kumuhana o nā mea ʻē aʻe?
ʻO nā hiʻohiʻona he "ʻokoʻa" kekahi i kekahi? Hiki ke heluhelu ʻia nā ʻikepili i kākau ʻia ma kekahi ʻano hoʻohālike ma kahi ʻē aʻe a i kākau ʻia paha?
Manaʻo wau ua hiki ke pane maikaʻi ʻia ka nīnau e pili ana i ka pili o ka multi-model DBMS, akā ʻo ka nīnau hoihoi ʻo ia nā ʻano o lākou e makemake nui ʻia i ka wā e hiki mai ana. Me he mea lā e makemake nui ʻia nā DBMS multi-model e kākoʻo ana i nā hiʻohiʻona kuʻuna, ma mua o ka pilina; ʻO ka kaulana o nā DBMS multi-model, e hāʻawi ana i nā hiʻohiʻona hou e hoʻohui i nā pono o nā ʻano kuʻuna like ʻole, he mea ia o ka wā e hiki mai ana.
Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.
Ke hoʻohana nei ʻoe i ka DBMS multi-model?
ʻAʻole mākou e hoʻohana, mālama mākou i nā mea āpau i hoʻokahi DBMS a i hoʻokahi kumu hoʻohālike
Hoʻohana mākou i nā mana o nā DBMS kahiko
Hoʻomaʻamaʻa mākou i ka hoʻomau polyglot
Hoʻohana mākou i ka DBMS multi-model hou (Arango, Orient, CosmosDB)
19 mea hoʻohana i koho. Ua hōʻole nā mea hoʻohana 4.