Системаҳои иттилоотии муосир хеле мураккабанд. На камтар аз ҳама, мураккабии онҳо аз мураккабии маълумоти коркардшуда дар онҳо вобаста аст. Мушкилии маълумот аксар вақт дар гуногунии моделҳои додаҳои истифодашуда вобаста аст. Ҳамин тавр, масалан, вақте ки маълумот "калон" мешавад, яке аз хусусиятҳои мушкилот на танҳо ҳаҷми он ("ҳаҷм"), балки гуногунии он низ мебошад ("гуногун").
Агар шумо ҳанӯз дар мулоҳиза камбудӣ пайдо накунед, пас хонед.
Аммо, муаллиф татбиқи бисёр моделсозӣ дар Microsoft SQL Serverро афзалтар медонад, ки дар мисоли он дастгирии RDBMS барои моделҳои ҳуҷҷат ва график тавсиф карда мешавад.
Модели ҳуҷҷат дар MS SQL Server
Дар бораи Habré аллакай ду мақолаи олӣ дар бораи он ки чӣ гуна MS SQL Server дастгирии модели ҳуҷҷатро амалӣ мекунад; Ман худамро бо такрори мухтасар ва тафсир маҳдуд мекунам:
Далели дуюми ҳарду оператор ифода дар синтаксиси JSONPath монанд аст.
Ба таври абстрактӣ, мо метавонем бигӯем, ки ҳуҷҷатҳое, ки бо ин роҳ нигоҳ дошта мешаванд, ба фарқ аз наворҳо, дар DBMS-и релятсионӣ "объектҳои дараҷаи аввал" нестанд. Махсусан, дар MS SQL Server дар айни замон дар майдонҳои ҳуҷҷатҳои JSON индекс мавҷуд нест, ки ҳамроҳ кардани ҷадвалҳо бо истифода аз арзишҳои ин майдонҳо ва ҳатто интихоби ҳуҷҷатҳоро бо истифода аз ин арзишҳо душвор месозад. Аммо барои чунин майдон сутуни ҳисобшуда ва дар он индекс эҷод кардан мумкин аст.
Илова бар ин, MS SQL Server имкон медиҳад, ки ҳуҷҷати JSON-ро аз мундариҷаи ҷадвалҳо бо истифода аз оператор ба осонӣ созад. FOR JSON PATH - имкони ба маънои муайян бар хилофи нигоҳдории муқаррарӣ. Равшан аст, ки новобаста аз он ки RDBMS то чӣ андоза зуд аст, ин равиш хилофи идеологияи DBMS-ҳои ҳуҷҷат аст, ки аслан ҷавобҳои омодаро ба дархостҳои маъмул нигоҳ медорад ва метавонад танҳо мушкилоти осонии рушдро ҳал кунад, аммо суръатро не.
Ниҳоят, MS SQL Server ба шумо имкон медиҳад, ки мушкилоти баръакси сохтани ҳуҷҷатҳоро ҳал кунед: шумо метавонед JSON-ро ба ҷадвалҳо бо истифода аз тақсим кунед. OPENJSON. Агар ҳуҷҷат комилан ҳамвор набошад, шумо бояд истифода баред CROSS APPLY.
Модели графикӣ дар MS SQL Server
Дастгирии модели графикӣ (LPG) инчунин дар Microsoft SQL Server пурра амалӣ карда мешавад пешбинишаванда: Барои нигоҳ доштани гиреҳҳо ва нигоҳ доштани кунҷҳои график истифода бурдани ҷадвалҳои махсус пешниҳод карда мешавад. Чунин ҷадвалҳо бо истифода аз ифодаҳо сохта мешаванд CREATE TABLE AS NODE и CREATE TABLE AS EDGE мутаносибан.
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);
Барои ҷамъбасти тавсифи татбиқи моделҳои ҳуҷҷат ва графикӣ дар MS SQL Server, ман қайд мекунам, ки чунин татбиқи як модел ба болои модели дигар, пеш аз ҳама аз нуқтаи назари тарҳрезии забон, муваффақ ба назар намерасад. Як забонро бо забони дигар васеъ кардан лозим аст, забонҳо комилан "ортогоналӣ" нестанд, қоидаҳои мувофиқат метавонад хеле аҷиб бошад.
DBMS бисёр модели дар асоси модели ҳуҷҷат
Дар ин бахш, ман мехоҳам татбиқи бисёр модели ҳуҷҷатҳои DBMS-ро бо истифода аз мисоли маъмултарини онҳо MongoDB нишон диҳам (чунон ки гуфта шуд, он танҳо операторҳои графикии шартӣ дорад) $lookup и $graphLookup, на дар коллексияҳои тақсимшуда кор мекунад), балки бо истифода аз мисоли DBMS баркамолтар ва "корхонавӣ" MarkLogic.
SELECT name, surname FROM Person WHERE name="John"
Мутаассифона, намуди релятсионӣ, ки аз ҷониби қолаби намоиш сохта шудааст, танҳо барои хондан аст. Ҳангоми коркарди дархост барои он, MarkLogic кӯшиш мекунад, ки истифода барад индексҳои ҳуҷҷат. Пештар, MarkLogic комилан назари маҳдуди муносибатӣ дошт ба индекс асос ёфтааст ва навиштан мумкин аст, аммо ҳоло онҳо бекоршуда ҳисобида мешаванд.
Модели графикӣ дар MarkLogic
Бо дастгирии модели графикӣ (RDF) ҳама чиз тақрибан якхела аст. Боз бо ёрии Шаблон намоиш шумо метавонед аз мисоли дар боло овардашуда муаррифии RDF-и маҷмӯи ҳуҷҷатҳоро эҷод кунед:
Баръакси релятсионӣ, MarkLogic модели графикиро бо ду роҳи дигар дастгирӣ мекунад:
DBMS метавонад як анбори алоҳидаи пурраи маълумоти RDF бошад (сегона дар он номида мешавад идора дар муқоиса бо онҳое, ки дар боло тавсиф шудаанд истихроҷ шудааст).
RDF-ро дар силсиласозии махсус метавон танҳо ба ҳуҷҷатҳои XML ё JSON ворид кард (ва баъдан сегонаҳо номида мешаванд идорашаванда). Ин шояд алтернатива ба механизмҳо бошад idref ва дигарон.
Фикри хуб дар бораи чӣ гуна кор кардани чизҳо дар MarkLogic аз ҷониби "воқеан" дода шудааст API оптикӣ, ба ин маъно, он сатҳи паст аст, гарчанде ки ҳадафи он баръакс аст - кӯшиши абстракт кардани модели додаҳои истифодашуда, таъмини кори пайваста бо додаҳо дар моделҳои гуногун, транзаксия ва ғайра.
DBMS бисёр модели "бе модели асосӣ"
Дар бозор инчунин DBMS-ҳо мавҷуданд, ки худро ҳамчун модели бисёрсоҳавӣ бе ягон модели асосии меросӣ ҷойгир мекунанд. Ба инхо дохил мешаванд ArangoDB, OrientDB (аз соли 2018 ширкати рушд ба SAP тааллуқ дорад) ва CosmosDB (хизмат ҳамчун як қисми платформаи абрии Microsoft Azure).
Забони дархости OrientDB-ро метавон ҳамчун SQL бо иловаҳои ба Gremlin монанд тавсиф кард. Дар версияи 2.2, шакли дархости 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
Формати натиҷа ҳамон тавре ки дар дархости қаблӣ буд, хоҳад буд. Дар бораи он фикр кунед, ки чӣ бояд хориҷ карда шавад, то он бештар "муносибат" кунад, ба монанди дар дархости аввал.
Azure CosmosDB
Ба андозаи камтар, он чизе ки дар боло дар бораи ArangoDB ва OrientDB гуфта шуда буд, ба Azure CosmosDB дахл дорад. CosmosDB API-ҳои зерини дастрасии додаҳоро таъмин мекунад: SQL, MongoDB, Gremlin ва Cassandra.
SQL API ва MongoDB API барои дастрасӣ ба маълумот дар модели ҳуҷҷат истифода мешаванд. Gremlin API ва Cassandra API - барои дастрасӣ ба маълумот дар форматҳои графикӣ ва сутун мутаносибан. Маълумот дар ҳама моделҳо дар формати дохилии модели CosmosDB захира карда мешаванд: ARS («atom-record-sequence»), ки низ ба ҳуҷҷати якум наздик аст.
Аммо модели додаҳои интихобкардаи корбар ва API-и истифодашуда ҳангоми эҷоди ҳисоб дар хидмат муқаррар карда мешаванд. Дастрасӣ ба маълумоте, ки дар як модел дар формати модели дигар бор карда шудааст, имконнопазир аст, чуноне ки бо чунин тасвир тасвир шудааст:
Ҳамин тариқ, модели бисёрҷониба дар Azure CosmosDB имрӯз танҳо қобилияти истифодаи якчанд пойгоҳи додаҳо мебошад, ки моделҳои гуногуни як истеҳсолкунандаро дастгирӣ мекунанд, ки на ҳама мушкилоти нигаҳдории бисёрвариантҳоро ҳал мекунанд.
DBMS бисёр модели дар асоси модели графикӣ?
Ҷолиби диққат он аст, ки дар бозор то ҳол ягон DBMS-ҳои бисёрмодели вуҷуд надоранд, ки ба модели графикӣ асос ёфтаанд (ба истиснои дастгирии бисёрмоделҳо барои ҳамзамон ду модели графикӣ: RDF ва LPG; инро дар нашри қаблӣ). Мушкилоти калонтарин дар натиҷаи татбиқи модели ҳуҷҷат дар болои модели графикӣ ба вуҷуд меоянд, на модели релятсионӣ.
Масъалаи чӣ гуна амалӣ кардани модели релятсионӣ дар болои модели графикӣ ҳатто ҳангоми ташаккули охирин баррасӣ карда шуд. Чӣ хел гуфт, масалан, Дэвид Макговерн:
Дар равиши графикӣ ҳеҷ чизи хосе вуҷуд надорад, ки эҷоди қабатро (масалан, бо роҳи индексатсияи мувофиқ) дар пойгоҳи додаҳои графикӣ пешгирӣ кунад, ки назари релятсионӣ бо (1) барқароркунии наворҳо аз ҷуфтҳои муқаррарии арзиши калидӣ ва (2) гурӯҳбандии наворҳо аз рӯи намуди муносибат.
Ҳангоми татбиқи модели ҳуҷҷат дар болои модели графикӣ, шумо бояд дар хотир доред, масалан, зерин:
Унсурҳои массиви JSON фармоишӣ ҳисобида мешаванд, аммо онҳое, ки аз қуллаи канори график мебароянд, нестанд;
Маълумот дар модели ҳуҷҷат одатан ғайримуқаррарӣ карда мешавад; шумо ҳоло ҳам намехоҳед, ки якчанд нусхаи ҳамон як ҳуҷҷати дарунсохтро нигоҳ доред ва зерҳуҷҷатҳо одатан идентификатор надоранд;
Аз тарафи дигар, идеологияи МДМ ҳуҷҷатҳо дар он аст, ки ҳуҷҷатҳо «агрегатҳои» тайёр мебошанд, ки ҳар дафъа аз нав сохтан лозим нест. Модели графикиро бо қобилияти зуд ба даст овардани субграфи мувофиқ ба ҳуҷҷати тайёр таъмин кардан лозим аст.
Як каме реклама
Муаллифи мақола ба таҳияи DBMS NitrosBase марбут аст, ки модели дохилии он график аст ва моделҳои берунӣ - релятсионӣ ва ҳуҷҷатӣ - намояндагии он мебошанд. Ҳама моделҳо баробаранд: қариб ҳама маълумот дар ҳар кадоми онҳо бо истифода аз забони дархост, ки барои он табиӣ аст, дастрас аст. Илова бар ин, дар ҳама гуна намуди, маълумот метавонад тағир дода шавад. Тағйирот дар модели дохилӣ ва мутаносибан дар дигар дидгоҳҳо инъикос хоҳанд шуд.
Ман умедворам, ки дар яке аз мақолаҳои зерин тавсиф мекунам, ки мувофиқати модел дар NitrosBase чӣ гуна аст.
хулоса
Умедворам, ки контури умумии он чизе, ки бисёр моделсозӣ номида мешавад, барои хонанда каму беш фаҳмо шудааст. DBMS-ҳои бисёрмодели комилан фарқ мекунанд ва "дастгирии бисёрмоделҳо" метавонанд гуногун бошанд. Барои фаҳмидани он, ки дар ҳар як ҳолати мушаххас чӣ "мултимодел" номида мешавад, ҷавоб додан ба саволҳои зерин муфид аст:
Оё мо дар бораи дастгирии моделҳои анъанавӣ ё як навъ модели "гибридӣ" гап мезанем?
Оё моделҳо "баробаранд" ё яке аз онҳо мавзӯи дигарон аст?
Оё моделҳо нисбат ба ҳамдигар «бепарво» ҳастанд? Оё маълумоте, ки дар як модел навишта шудааст, метавонад бо дигараш хонда шавад ё ҳатто аз нав навишта шавад?