ื”ืื DBMSs ืจื‘-ืžื•ื“ืœื™ื ื”ื ื”ื‘ืกื™ืก ืœืžืขืจื›ื•ืช ืžื™ื“ืข ืžื•ื“ืจื ื™ื•ืช?

ืžืขืจื›ื•ืช ืžื™ื“ืข ืžื•ื“ืจื ื™ื•ืช ืžื•ืจื›ื‘ื•ืช ืœืžื“ื™. ืœื ืคื—ื•ืช ืžื›ืœ, ืžื•ืจื›ื‘ื•ืชื ื ื•ื‘ืขืช ืžืžื•ืจื›ื‘ื•ืช ื”ื ืชื•ื ื™ื ื”ืžืขื•ื‘ื“ื™ื ื‘ื”ื. ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื”ื ืชื•ื ื™ื ื ืขื•ืฆื” ืœืจื•ื‘ ื‘ืžื’ื•ื•ืŸ ื“ื’ืžื™ ื”ื ืชื•ื ื™ื ื”ืžืฉืžืฉื™ื. ื›ืš, ืœืžืฉืœ, ื›ืืฉืจ ื”ื ืชื•ื ื™ื ื”ื•ืคื›ื™ื ืœ"ื’ื“ื•ืœื™ื", ืื—ื“ ื”ืžืืคื™ื™ื ื™ื ื”ื‘ืขื™ื™ืชื™ื™ื ื”ื•ื ืœื ืจืง ื”ื ืคื— ืฉืœื• ("ื ืคื—"), ืืœื ื’ื ื”ืžื’ื•ื•ืŸ ืฉืœื• ("ื”ืžื’ื•ื•ืŸ").

ืื ืขื“ื™ื™ืŸ ืœื ืžืฆืืชื ืคื’ื ื‘ื ื™ืžื•ืง, ื”ืžืฉืš ืœืงืจื•ื.

ื”ืื DBMSs ืจื‘-ืžื•ื“ืœื™ื ื”ื ื”ื‘ืกื™ืก ืœืžืขืจื›ื•ืช ืžื™ื“ืข ืžื•ื“ืจื ื™ื•ืช?


ืชื•ื›ืŸ

ื”ืชืžื“ื” ืคื•ืœื™ื’ืœื•ื˜ื™ืช
ืจื‘ ื“ื’ื
DBMS ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืžื•ื“ืœ ื”ื”ืชื™ื™ื—ืกื•ืชื™
     ืžื•ื“ืœ ืžืกืžืš ื‘-MS SQL Server
     ืžื•ื“ืœ ื’ืจืฃ ื‘-MS SQL Server
DBMS ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžื•ื“ืœ ื”ืžืกืžื›ื™ื
     ืžื•ื“ืœ ื™ื—ืกื™ ื‘-MarkLogic
     ืžื•ื“ืœ ื’ืจืฃ ื‘-MarkLogic
DBMS ืจื™ื‘ื•ื™ ื“ื’ืžื™ื "ืœืœื ื“ื’ื ืจืืฉื™"
     ArangoDB
     ืื•ืจื™ื™ื ื˜
     Azure CosmosDB
DBMS ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžื•ื“ืœ ื’ืจืฃ?
ืžืกืงื ื”
ืจืื™ื•ืŸ

ื”ืชืžื“ื” ืคื•ืœื™ื’ืœื•ื˜ื™ืช

ื”ืืžื•ืจ ืœืขื™ืœ ืžื•ื‘ื™ืœ ืœื›ืš ืฉืœืขื™ืชื™ื ื’ื ื‘ืžืกื’ืจืช ืžืขืจื›ืช ืื—ืช ื™ืฉ ืฆื•ืจืš ืœื”ืฉืชืžืฉ ื‘ืžืกืคืจ DBMSs ืฉื•ื ื™ื ืœืื—ืกื•ืŸ ื ืชื•ื ื™ื ื•ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ืฉื•ื ื•ืช ืฉืœ ืขื™ื‘ื•ื“ื, ืฉื›ืœ ืื—ื“ ืžื”ื ืชื•ืžืš ื‘ืžื•ื“ืœ ื”ื ืชื•ื ื™ื ืฉืœื•. ื‘ื™ื“ื• ื”ืงืœื” ืฉืœ ืž. ืคืื•ืœืจ, ื”ืžื—ื‘ืจ ืžืกืคืจ ืกืคืจื™ื ืžืคื•ืจืกืžื™ื ื•ืื—ื“ ืžื”ื ืžื—ื‘ืจื™ื ืฉื•ืชืคื™ื Manifesto Agile, ื ืงืจื ื”ืžืฆื‘ ื”ื–ื” ืื—ืกื•ืŸ ืจื‘ ื•ืจื™ืืฆื™ื•ืช ("ื”ืชืžื“ื” ืคื•ืœื™ื’ืœื•ื˜ื™ืช").

ืœ-Fowler ื™ืฉ ื’ื ืืช ื”ื“ื•ื’ืžื” ื”ื‘ืื” ืฉืœ ืืจื’ื•ืŸ ืื—ืกื•ืŸ ื ืชื•ื ื™ื ื‘ืืคืœื™ืงืฆื™ื” ืžืœืื” ื•ืขืžื•ืกื” ื‘ืชื—ื•ื ื”ืžืกื—ืจ ื”ืืœืงื˜ืจื•ื ื™.

ื”ืื DBMSs ืจื‘-ืžื•ื“ืœื™ื ื”ื ื”ื‘ืกื™ืก ืœืžืขืจื›ื•ืช ืžื™ื“ืข ืžื•ื“ืจื ื™ื•ืช?

ื“ื•ื’ืžื” ื–ื•, ื›ืžื•ื‘ืŸ, ืžื•ื’ื–ืžืช ื‘ืžืงืฆืช, ืืš ื ื™ืชืŸ ืœืžืฆื•ื ื›ืžื” ืฉื™ืงื•ืœื™ื ื‘ืขื“ ื‘ื—ื™ืจืช DBMS ื›ื–ื” ืื• ืื—ืจ ืœืžื˜ืจื” ื”ืžืงื‘ื™ืœื”, ืœืžืฉืœ, ื›ืืŸ.

ื‘ืจื•ืจ ืฉืœื”ื™ื•ืช ืžืฉืจืช ื‘ื’ืŸ ื—ื™ื•ืช ื›ื–ื” ื–ื” ืœื ืงืœ.

  • ื›ืžื•ืช ื”ืงื•ื“ ืฉืžื‘ืฆืขืช ืื—ืกื•ืŸ ื ืชื•ื ื™ื ื’ื“ืœื” ื‘ื™ื—ืก ืœืžืกืคืจ DBMSs ื‘ืฉื™ืžื•ืฉ; ื›ืžื•ืช ื”ื ืชื•ื ื™ื ื”ืžืกื ื›ืจื ื™ื ืงื•ื“ ื˜ื•ื‘ื” ืื ืœื ืคืจื•ืคื•ืจืฆื™ื•ื ืœื™ืช ืœืจื™ื‘ื•ืข ืฉืœ ืžืกืคืจ ื–ื”.
  • ื›ืžื›ืคืœื” ืฉืœ ืžืกืคืจ ื”-DBMSs ื‘ืฉื™ืžื•ืฉ, ื”ืขืœื•ื™ื•ืช ืฉืœ ืืกืคืงืช ืžืืคื™ื™ื ื™ื ืืจื’ื•ื ื™ื™ื (ืžื“ืจื’ื™ื•ืช, ืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช, ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื”) ืฉืœ ื›ืœ ืื—ื“ ืž-DBMSs ื‘ืฉื™ืžื•ืฉ ืขื•ืœื•ืช.
  • ืื™ ืืคืฉืจ ืœื”ื‘ื˜ื™ื— ืืช ื”ืžืืคื™ื™ื ื™ื ื”ืืจื’ื•ื ื™ื™ื ืฉืœ ืชืช-ืžืขืจื›ืช ื”ืื—ืกื•ืŸ ื‘ื›ืœืœื•ืชื” - ื‘ืžื™ื•ื—ื“ ื˜ืจื ื–ืงืฆื™ื•ื ืœื™ื•ืช.

ืžื ืงื•ื“ืช ืžื‘ื˜ื• ืฉืœ ืžื ื”ืœ ื’ืŸ ื”ื—ื™ื•ืช, ื”ื›ืœ ื ืจืื” ื›ืš:

  • ืขืœื™ื™ื” ืžืจื•ื‘ื” ื‘ืขืœื•ืช ื”ืจื™ืฉื™ื•ื ื•ืช ื•ื”ืชืžื™ื›ื” ื”ื˜ื›ื ื™ืช ืžื™ืฆืจืŸ DBMS.
  • ืขื•ื“ืฃ ื›ื•ื— ืื“ื ื•ื”ื’ื“ืœืช ื”ืžื•ืขื“ื™ื.
  • ื”ืคืกื“ื™ื ื›ืกืคื™ื™ื ื™ืฉื™ืจื™ื ืื• ืงื ืกื•ืช ืขืงื‘ ื—ื•ืกืจ ืขืงื‘ื™ื•ืช ื‘ื ืชื•ื ื™ื.

ื™ืฉื ื” ืขืœื™ื™ื” ืžืฉืžืขื•ืชื™ืช ื‘ืขืœื•ืช ื”ื‘ืขืœื•ืช ื”ื›ื•ืœืœืช ืฉืœ ื”ืžืขืจื›ืช (TCO). ื”ืื ื™ืฉ ื“ืจืš ืœืฆืืช ืžื”ืžืฆื‘ ืฉืœ "ืจื™ื‘ื•ื™ ืืคืฉืจื•ื™ื•ืช ืื—ืกื•ืŸ"?

ืจื‘ ื“ื’ื

ื”ืžื•ื ื— "ืื—ืกื•ืŸ ืจื‘-ืชื›ืœื™ืชื™" ื ื›ื ืก ืœืฉื™ืžื•ืฉ ื‘-2011. ื”ืžื•ื“ืขื•ืช ืœื‘ืขื™ื•ืช ื”ื’ื™ืฉื” ื•ื”ื—ื™ืคื•ืฉ ืื—ืจ ืคืชืจื•ืŸ ืืจื›ื• ืžืกืคืจ ืฉื ื™ื, ื•ืขื“ ืฉื ืช 2015, ืžืคื™ ื”ืื ืœื™ืกื˜ื™ื ืฉืœ ื’ืจื˜ื ืจ, ื”ืชื’ื‘ืฉื” ื”ืชืฉื•ื‘ื”:

  • ืž "ืžื“ืจื™ืš ืฉื•ืง ืขื‘ื•ืจ NoSQL DBMSs - 2015ยป:

    ื”ืขืชื™ื“ ืฉืœ DBMS, ื”ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช ืฉืœื”ื ื•ื“ืจื›ื™ ื”ืฉื™ืžื•ืฉ ื‘ื”ื ื”ื•ื ืจื‘-ืžื•ื“ืœื™ื.

  • ืž "ืจื‘ื•ืข ืงืกื ืขื‘ื•ืจ ODBMS - 2016ยป:

    DBMS ืชืคืขื•ืœื™ื™ื ืžื•ื‘ื™ืœื™ื ื™ืฆื™ืขื• ืžื•ื“ืœื™ื ืžืจื•ื‘ื™ื - ื™ื—ืกื™ื™ื ื•ืœื ื™ื—ืกื™ื™ื - ื›ื—ืœืง ืžืคืœื˜ืคื•ืจืžื” ืื—ืช.

ื ืจืื” ืฉื”ืคืขื ื”ืื ืœื™ืกื˜ื™ื ืฉืœ ื’ืจื˜ื ืจ ืฆื“ืงื• ื‘ืชื—ื–ื™ืช ืฉืœื”ื. ืื ืืชื” ื”ื•ืœืš ืœื“ืฃ ืขื ื“ื™ืจื•ื’ ืจืืฉื™ DBMS ื‘-DB-Engines, ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื–ื”ะพืจื•ื‘ ื”ืžื ื”ื™ื’ื™ื ืฉืœื” ืžืžืฆื‘ื™ื ืืช ืขืฆืžื ื‘ืื•ืคืŸ ืกืคืฆื™ืคื™ ื›-DBMSs ืžืจื•ื‘ื™ ื“ื’ืžื™ื. ืืช ืื•ืชื• ื”ื“ื‘ืจ ื ื™ืชืŸ ืœืจืื•ืช ื‘ืขืžื•ื“ ืขื ื›ืœ ื“ื™ืจื•ื’ ืคืจื˜ื™.

ื”ื˜ื‘ืœื” ืฉืœื”ืœืŸ ืžืฆื™ื’ื” ืืช ื”-DBMS - ื”ืžื•ื‘ื™ืœื™ื ื‘ื›ืœ ืื—ื“ ืžื”ื“ื™ืจื•ื’ื™ื ื”ืคืจื˜ื™ื™ื, ื”ืžืชื™ื™ืžืจื™ื ืœื”ื™ื•ืช ืจื‘-ืžื•ื“ืœื™ื. ืขื‘ื•ืจ ื›ืœ DBMS ืžืฆื•ื™ืŸ ื”ื“ื’ื ื”ืžืงื•ืจื™ ื”ื ืชืžืš (ืฉื”ื™ื” ืคืขื ื”ื™ื—ื™ื“) ื•ื™ื—ื“ ืื™ืชื• ื”ื“ื’ืžื™ื ื”ื ืชืžื›ื™ื ื›ืจื’ืข. ื›ืžื• ื›ืŸ, ืจืฉื•ืžื™ื DBMS ื”ืžืžืฆื‘ื™ื ืขืฆืžื ื›"ืจื‘-ืžื•ื“ืœื™ื ื‘ืžืงื•ืจ" ื•ืœืคื™ ื”ื™ื•ืฆืจื™ื, ืื™ืŸ ืœื”ื ืฉื•ื ืžื•ื“ืœ ื‘ื™ืจื•ืฉื” ืจืืฉื•ื ื™.

DBMS ื“ื’ื ืจืืฉื•ื ื™ ื“ื’ืžื™ื ื ื•ืกืคื™ื
ืื•ืจืงืœ ื™ื—ืกื™ ื’ืจืฃ, ืžืกืžืš
SQL MS ื™ื—ืกื™ ื’ืจืฃ, ืžืกืžืš
PostgreSQL ื™ื—ืกื™ ื’ืจืฃ*, ืžืกืžืš
MarkLogic ื“ื•ืงื•ืžื ื˜ืจื™ ื’ืจืฃ, ื™ื—ืกื™
MongoDB ื“ื•ืงื•ืžื ื˜ืจื™ ืขืจืš ืžืคืชื—, ื’ืจืฃ*
DataStax ืขืžื•ื“ื” ืจื—ื‘ื” ืกืจื˜ ืชื™ืขื•ื“ื™, ื’ืจืฃ
Redis ืขืจืš ืžืคืชื— ืกืจื˜ ืชื™ืขื•ื“ื™, ื’ืจืฃ*
ArangoDB - ื’ืจืฃ, ืžืกืžืš
ืื•ืจื™ื™ื ื˜ - ื’ืจืฃ, ืžืกืžืš, ื™ื—ืกื™
Azure CosmosDB - ื’ืจืฃ, ืžืกืžืš, ื™ื—ืกื™

ื”ืขืจื•ืช ืฉื•ืœื—ืŸ

ื›ื•ื›ื‘ื™ื•ืช ื‘ื˜ื‘ืœื” ืžืกืžื ื•ืช ื”ืฆื”ืจื•ืช ื”ืžืฆืจื™ื›ื•ืช ื”ืกืชื™ื™ื’ื•ื™ื•ืช:

  • ื”- PostgreSQL DBMS ืื™ื ื• ืชื•ืžืš ื‘ืžื•ื“ืœ ื ืชื•ื ื™ ื”ื’ืจืฃ, ืืš ืžื•ืฆืจ ื–ื” ื›ืŸ ืชื•ืžืš ื‘ื• ืžื‘ื•ืกืก ืขืœ ื–ื”, ื›ื’ื•ืŸ AgensGraph.
  • ื‘ื™ื—ืก ืœ-MongoDB, ื ื›ื•ืŸ ื™ื•ืชืจ ืœื“ื‘ืจ ืขืœ ื ื•ื›ื—ื•ืช ืฉืœ ืื•ืคืจื˜ื•ืจื™ื ื’ืจืคื™ื ื‘ืฉืคืช ื”ืฉืื™ืœืชื” ($lookup, $graphLookup) ืžืืฉืจ ืขืœ ืชืžื™ื›ื” ื‘ืžื•ื“ืœ ื”ื’ืจืฃ, ืื ื›ื™, ื›ืžื•ื‘ืŸ, ื”ืฆื’ืชื ื“ืจืฉื” ื›ืžื” ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื‘ืจืžืช ื”ืื—ืกื•ืŸ ื”ืคื™ื–ื™ืช ื‘ื›ื™ื•ื•ืŸ ืฉืœ ืชืžื™ื›ื” ื‘ืžื•ื“ืœ ื”ื’ืจืฃ.
  • ื‘ื™ื—ืก ืœืจื“ื™ืก, ืื ื—ื ื• ืžืชื›ื•ื•ื ื™ื ืœื”ืจื—ื‘ื” RedisGraph.

ืœืื—ืจ ืžื›ืŸ, ืขื‘ื•ืจ ื›ืœ ืื—ืช ืžื”ืžื—ืœืงื•ืช, ื ืจืื” ื›ื™ืฆื“ ืžื™ื•ืฉืžืช ืชืžื™ื›ื” ื‘ืžืกืคืจ ืžื•ื“ืœื™ื ื‘-DBMS ืžืžื—ืœืงื” ื–ื•. ื ืฉืงื•ืœ ืืช ื”ืžื•ื“ืœื™ื ื”ื”ืชื™ื™ื—ืกื•ืชื™ื™ื, ื”ืžืกืžื›ื™ื ื•ื”ื’ืจืคื™ื ื›ื—ืฉื•ื‘ื™ื ื‘ื™ื•ืชืจ ื•ื ืฉืชืžืฉ ื‘ื“ื•ื’ืžืื•ืช ืฉืœ DBMSs ืกืคืฆื™ืคื™ื™ื ื›ื“ื™ ืœื”ืจืื•ืช ื›ื™ืฆื“ ื”"ื—ืกืจื™ื" ืžื™ื•ืฉืžื™ื.

DBMS ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืžื•ื“ืœ ื”ื”ืชื™ื™ื—ืกื•ืชื™

ืžืขืจื›ื•ืช ื”-DBMS ื”ืžื•ื‘ื™ืœื•ืช ื›ื™ื•ื ื”ืŸ ื™ื—ืกื™ื•ืช; ื”ืชื—ื–ื™ืช ืฉืœ ื’ืจื˜ื ืจ ืœื ื™ื›ื•ืœื” ืœื”ื™ื—ืฉื‘ ื ื›ื•ืŸ ืื ืžืขืจื›ื•ืช ื”-RDBMS ืœื ื”ืจืื• ืชื ื•ืขื” ื‘ื›ื™ื•ื•ืŸ ืฉืœ ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื. ื•ื”ื ืžืคื’ื™ื ื™ื. ื›ืขืช ื ื™ืชืŸ ืœื”ืคื ื•ืช ืืช ื”ืจืขื™ื•ืŸ ืฉ-DBMS ืžืจื•ื‘ื” ื“ื’ืžื™ื ื”ื•ื ื›ืžื• ืกื›ื™ืŸ ืฉื•ื•ื™ืฆืจื™ืช, ืฉืื™ื ื” ื™ื›ื•ืœื” ืœืขืฉื•ืช ื“ื‘ืจ ื˜ื•ื‘, ื™ืฉื™ืจื•ืช ืœืœืืจื™ ืืœื™ืกื•ืŸ.

ื”ืžื—ื‘ืจ, ืœืขื•ืžืช ื–ืืช, ืžืขื“ื™ืฃ ืืช ื”ื˜ืžืขืช ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื‘-Microsoft SQL Server, ืฉืขืœ ื“ื•ื’ืžื” ื–ื• ืชืชื•ืืจ ืชืžื™ื›ืช RDBMS ืขื‘ื•ืจ ืžื•ื“ืœื™ื ืฉืœ ืžืกืžื›ื™ื ื•ื’ืจืคื™ื.

ืžื•ื“ืœ ืžืกืžืš ื‘-MS SQL Server

ื›ื‘ืจ ื”ื™ื• ืฉื ื™ ืžืืžืจื™ื ืžืฆื•ื™ื ื™ื ืขืœ Habrรฉ ืขืœ ื”ืื•ืคืŸ ืฉื‘ื• MS SQL Server ืžื™ื™ืฉื ืชืžื™ื›ื” ื‘ืžื•ื“ืœ ื”ืžืกืžื›ื™ื; ืื ื™ ืืกืชืคืง ื‘ืกื™ืคื•ืจ ืงืฆืจ ื•ืคืจืฉื ื•ืช:

ื”ื“ืจืš ืœืชืžื•ืš ื‘ืžื•ื“ืœ ื”ืžืกืžื›ื™ื ื‘-MS SQL Server ืื•ืคื™ื™ื ื™ืช ืœืžื“ื™ ืขื‘ื•ืจ DBMSs ื™ื—ืกื™: ืžืกืžื›ื™ JSON ืžื•ืฆืขื™ื ืœื”ื™ื•ืช ืžืื•ื—ืกื ื™ื ื‘ืฉื“ื•ืช ื˜ืงืกื˜ ืจื’ื™ืœื™ื. ื”ืชืžื™ื›ื” ื‘ืžื•ื“ืœ ื”ืžืกืžืš ื”ื™ื ืœืกืคืง ืื•ืคืจื˜ื•ืจื™ื ืžื™ื•ื—ื“ื™ื ืœื ืชื— JSON ื–ื”:

  • JSON_VALUE ื›ื“ื™ ืœื—ืœืฅ ืขืจื›ื™ ืชื›ื•ื ื•ืช ืกืงืœืจื™ื•ืช,
  • JSON_QUERY ืœื—ืœืฅ ืžืกืžื›ื™ ืžืฉื ื”.

ื”ืืจื’ื•ืžื ื˜ ื”ืฉื ื™ ืฉืœ ืฉื ื™ ื”ืื•ืคืจื˜ื•ืจื™ื ื”ื•ื ื‘ื™ื˜ื•ื™ ื‘ืชื—ื‘ื™ืจ ื“ืžื•ื™ JSONPath.

ื‘ืื•ืคืŸ ืžื•ืคืฉื˜, ืื ื• ื™ื›ื•ืœื™ื ืœื•ืžืจ ืฉืžืกืžื›ื™ื ื”ืžืื•ื—ืกื ื™ื ื‘ืฆื•ืจื” ื–ื• ืื™ื ื "ื™ืฉื•ื™ื•ืช ืžื”ืฉื•ืจื” ื”ืจืืฉื•ื ื”" ื‘-DBMS ื™ื—ืกื™, ื‘ื ื™ื’ื•ื“ ืœ-tuples. ื‘ืื•ืคืŸ ืกืคืฆื™ืคื™, ื‘-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 ื‘ื”ืชืืžื”.

ื˜ื‘ืœืื•ืช ืžื”ืกื•ื’ ื”ืจืืฉื•ืŸ ื“ื•ืžื•ืช ืœื˜ื‘ืœืื•ืช ืจื’ื™ืœื•ืช ืœืื—ืกื•ืŸ ืจืฉื•ืžื•ืช, ื›ืืฉืจ ื”ื”ื‘ื“ืœ ื”ื—ื™ืฆื•ื ื™ ื”ื™ื—ื™ื“ ื”ื•ื ืฉื”ื˜ื‘ืœื” ืžื›ื™ืœื” ืฉื“ื” ืžืขืจื›ืช $node_id - ืžื–ื”ื” ื™ื™ื—ื•ื“ื™ ืฉืœ ืฆื•ืžืช ื’ืจืฃ ื‘ืชื•ืš ืžืกื“ ื”ื ืชื•ื ื™ื.

ื‘ืื•ืคืŸ ื“ื•ืžื”, ืœื˜ื‘ืœืื•ืช ืžื”ืกื•ื’ ื”ืฉื ื™ ื™ืฉ ืฉื“ื•ืช ืžืขืจื›ืช $from_id ะธ $to_id, ืขืจื›ื™ื ื‘ื˜ื‘ืœืื•ืช ื›ืืœื” ืžื’ื“ื™ืจื™ื ื‘ื‘ื™ืจื•ืจ ืืช ื”ืงืฉืจื™ื ื‘ื™ืŸ ืฆืžืชื™ื. ื˜ื‘ืœื” ื ืคืจื“ืช ืžืฉืžืฉืช ืœืื—ืกื•ืŸ ืžืขืจื›ื•ืช ื™ื—ืกื™ื ืžื›ืœ ืกื•ื’.

ื”ืื DBMSs ืจื‘-ืžื•ื“ืœื™ื ื”ื ื”ื‘ืกื™ืก ืœืžืขืจื›ื•ืช ืžื™ื“ืข ืžื•ื“ืจื ื™ื•ืช? ื”ื‘ื” ื ืžื—ื™ืฉ ื–ืืช ื‘ืืžืฆืขื•ืช ื“ื•ื’ืžื”. ืชืŸ ืœื ืชื•ื ื™ ื”ื’ืจืฃ ืคืจื™ืกื” ื›ืžื• ื–ื• ืฉืžื•ืฆื’ืช ื‘ืื™ื•ืจ. ืœืื—ืจ ืžื›ืŸ ื›ื“ื™ ืœื™ืฆื•ืจ ืืช ื”ืžื‘ื ื” ื”ืžืชืื™ื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื, ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ืฉืื™ืœืชื•ืช ื”-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);

ื”ืกืคืฆื™ืคื™ื•ืช ื”ืขื™ืงืจื™ืช ืฉืœ ื˜ื‘ืœืื•ืช ื›ืืœื” ื”ื™ื ืฉื‘ืฉืื™ืœืชื•ืช ื ื’ื“ืŸ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืชื‘ื ื™ื•ืช ื’ืจืคื™ื ืขื ืชื—ื‘ื™ืจ ื“ืžื•ื™ ืกื™ื™ืคืจ (ืขื ื–ืืช, "*"ื•ื›ื•' ืขื“ื™ื™ืŸ ืœื ื ืชืžื›ื™ื). ื‘ื”ืชื‘ืกืก ืขืœ ืžื“ื™ื“ื•ืช ื‘ื™ืฆื•ืขื™ื, ื ื™ืชืŸ ื’ื ืœื”ื ื™ื— ืฉื”ืื•ืคืŸ ืฉื‘ื• ื ืชื•ื ื™ื ืžืื•ื—ืกื ื™ื ื‘ื˜ื‘ืœืื•ืช ืืœื• ืฉื•ื ื” ืžื”ืื•ืคืŸ ืฉื‘ื• ื ืชื•ื ื™ื ืžืื•ื—ืกื ื™ื ื‘ื˜ื‘ืœืื•ืช ืจื’ื™ืœื•ืช ื•ื”ื•ื ืžื•ืชืื ืœื‘ื™ืฆื•ืข ืฉืื™ืœืชื•ืช ื’ืจืคื™ื ื›ืืœื”.

SELECT Cafe.name
  FROM Person, likes, Cafe
  WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
  AND Person.name = 'John';

ื™ืชืจ ืขืœ ื›ืŸ, ื“ื™ ืงืฉื” ืฉืœื ืœื”ืฉืชืžืฉ ื‘ืชื‘ื ื™ื•ืช ื’ืจืคื™ื ืืœื” ื‘ืขืช ืขื‘ื•ื“ื” ืขื ื˜ื‘ืœืื•ืช ื›ืืœื”, ืฉื›ืŸ ื‘ืฉืื™ืœืชื•ืช SQL ืจื’ื™ืœื•ืช ืœืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื“ื•ืžื•ืช ื™ื”ื™ื” ืฆื•ืจืš ืœืขืฉื•ืช ืžืืžืฆื™ื ื ื•ืกืคื™ื ื›ื“ื™ ืœื”ืฉื™ื’ ืžื–ื”ื™ ืฆื•ืžืช "ื’ืจืฃ" ืฉืœ ื”ืžืขืจื›ืช ($node_id, $from_id, $to_id; ืžืื•ืชื” ืกื™ื‘ื”, ืฉืื™ืœืชื•ืช ืœื”ื›ื ืกืช ื ืชื•ื ื™ื ืื™ื ืŸ ืžื•ืฆื’ื•ืช ื›ืืŸ ืžื›ื™ื•ื•ืŸ ืฉื”ืŸ ืžืกื•ืจื‘ืœื•ืช ืฉืœื ืœืฆื•ืจืš).

ืœืกื™ื›ื•ื ืชื™ืื•ืจ ื”ื”ื˜ืžืขื•ืช ืฉืœ ื“ื’ืžื™ ื”ืžืกืžื›ื™ื ื•ื”ื’ืจืคื™ื ื‘-MS SQL Server, ืืฆื™ื™ืŸ ืฉื”ื˜ืžืขื•ืช ื›ืืœื” ืฉืœ ืžื•ื“ืœ ืื—ื“ ืขืœ ื’ื‘ื™ ืื—ืจ ืœื ื ืจืื•ืช ืžื•ืฆืœื—ื•ืช, ื‘ืขื™ืงืจ ืžื ืงื•ื“ืช ืžื‘ื˜ ืฉืœ ืขื™ืฆื•ื‘ ืฉืคื”. ื™ืฉ ืฆื•ืจืš ืœื”ืจื—ื™ื‘ ืฉืคื” ืื—ืช ืขื ืื—ืจืช, ื”ืฉืคื•ืช ืื™ื ืŸ "ืื•ืจืชื•ื’ื•ื ืœื™ื•ืช" ืœื—ืœื•ื˜ื™ืŸ, ื›ืœืœื™ ื”ืชืื™ืžื•ืช ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ื“ื™ ืžื•ื–ืจื™ื.

DBMS ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžื•ื“ืœ ื”ืžืกืžื›ื™ื

ื‘ื—ืœืง ื–ื”, ื‘ืจืฆื•ื ื™ ืœื”ืžื—ื™ืฉ ืืช ื”ื™ื™ืฉื•ื ืฉืœ ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื‘ืžืกืžื›ื™ DBMS ื‘ืืžืฆืขื•ืช ื”ื“ื•ื’ืžื” ืฉืœ ื”ืœื ืคื•ืคื•ืœืจื™ ืฉื‘ื”ื, MongoDB (ื›ืืžื•ืจ, ื™ืฉ ืœื• ืจืง ืื•ืคืจื˜ื•ืจื™ื ื’ืจืคื™ื ืžื•ืชื ื™ื $lookup ะธ $graphLookup, ืœื ืขื•ื‘ื“ ืขืœ ืื•ืกืคื™ื ืžืจื•ืกืงื™ื), ืืœื ื‘ืืžืฆืขื•ืช ื“ื•ื’ืžื” ืฉืœ DBMS ื‘ื•ื’ืจ ื•"ืืจื’ื•ื ื™" ื™ื•ืชืจ MarkLogic.

ืื– ืชืŸ ืœืื•ืกืฃ ืœื”ื›ื™ืœ ืงื‘ื•ืฆื” ืฉืœ ืžืกืžื›ื™ XML ืžื”ืกื•ื’ ื”ื‘ื (MarkLogic ืžืืคืฉืจ ืœืš ื’ื ืœืื—ืกืŸ ืžืกืžื›ื™ JSON):

<Person INN="631803299804">
  <name>John</name>
  <surname>Smith</surname>
</Person>

ืžื•ื“ืœ ื™ื—ืกื™ ื‘-MarkLogic

ื ื™ืชืŸ ืœื™ืฆื•ืจ ืชืฆื•ื’ื” ื™ื—ืกื™ืช ืฉืœ ืื•ืกืฃ ืžืกืžื›ื™ื ื‘ืืžืฆืขื•ืช ืชื‘ื ื™ืช ืชืฆื•ื’ื” (ืชื•ื›ืŸ ืฉืœ ืืœืžื ื˜ื™ื value ื‘ื“ื•ื’ืžื” ืœืžื˜ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช 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>

ืืชื” ื™ื›ื•ืœ ืœื˜ืคืœ ื‘ืชืฆื•ื’ื” ืฉื ื•ืฆืจื” ื‘ืืžืฆืขื•ืช ืฉืื™ืœืชืช SQL (ืœื“ื•ื’ืžื”, ื“ืจืš ODBC):

SELECT name, surname FROM Person WHERE name="John"

ืœืžืจื‘ื” ื”ืฆืขืจ, ื”ืชืฆื•ื’ื” ื”ื™ื—ืกื™ืช ืฉื ื•ืฆืจื” ืขืœ ื™ื“ื™ ืชื‘ื ื™ืช ื”ืชืฆื•ื’ื” ื”ื™ื ืœืงืจื™ืื” ื‘ืœื‘ื“. ื‘ืขืช ืขื™ื‘ื•ื“ ื‘ืงืฉื” ืขื‘ื•ืจื•, MarkLogic ืชื ืกื” ืœื”ืฉืชืžืฉ ืื™ื ื“ืงืกื™ื ืฉืœ ืžืกืžื›ื™ื. ื‘ืขื‘ืจ, ืœ-MarkLogic ื”ื™ื• ื”ืฉืงืคื•ืช ื™ื—ืกื™ื ืžื•ื’ื‘ืœื•ืช ืœื—ืœื•ื˜ื™ืŸ ืžื‘ื•ืกืก ืื™ื ื“ืงืก ื•ื ื™ืชื ื™ื ืœื›ืชื™ื‘ื”, ืื‘ืœ ืขื›ืฉื™ื• ื”ื ื ื—ืฉื‘ื™ื ืžื•ื“ื—ื™ื.

ืžื•ื“ืœ ื’ืจืฃ ื‘-MarkLogic

ืขื ืชืžื™ื›ื” ื‘ืžื•ื“ืœ ื”ื’ืจืฃ (RDF), ื”ื›ืœ ื‘ืขืจืš ืื•ืชื• ื“ื‘ืจ. ืฉื•ื‘ ื‘ืขื–ืจืช ื”ืขื–ืจื” ืชื‘ื ื™ืช ืชืฆื•ื’ื” ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ื™ื™ืฆื•ื’ RDF ืฉืœ ืื•ืกืฃ ืžืกืžื›ื™ื ืžื”ื“ื•ื’ืžื” ืฉืœืžืขืœื”:

<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>

ืืชื” ื™ื›ื•ืœ ืœื˜ืคืœ ื‘ื’ืจืฃ ื”-RDF ื”ืžืชืงื‘ืœ ื‘ืืžืฆืขื•ืช ืฉืื™ืœืชืช SPARQL:

PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
  :631803299804 :name ?name ; :surname ?surname .
}

ื‘ื ื™ื’ื•ื“ ืœื–ื” ื”ื”ืชื™ื™ื—ืกื•ืชื™, MarkLogic ืชื•ืžืš ื‘ืžื•ื“ืœ ื”ื’ืจืฃ ื‘ืฉืชื™ ื“ืจื›ื™ื ืื—ืจื•ืช:

  1. DBMS ื™ื›ื•ืœ ืœื”ื™ื•ืช ืื—ืกื•ืŸ ื ืคืจื“ ืžืŸ ื”ืžื ื™ื™ืŸ ืฉืœ ื ืชื•ื ื™ RDF (ื”ืฉืœืฉื•ืช ื‘ื• ื™ื™ืงืจืื• ื”ืฆืœื™ื— ื‘ื ื™ื’ื•ื“ ืœืืœื” ืฉืชื•ืืจื• ืœืขื™ืœ ื—ื™ืœื•ืฅ).
  2. ื ื™ืชืŸ ืคืฉื•ื˜ ืœื”ื›ื ื™ืก RDF ื‘ืกืจื™ืืœื™ื–ืฆื™ื” ืžื™ื•ื—ื“ืช ืœืžืกืžื›ื™ XML ืื• JSON (ื•ืœืื—ืจ ืžื›ืŸ ื™ื™ืงืจื ืฉืœื™ืฉื™ื™ื” ืœื ืžื ื•ื”ืœ). ื–ื• ื›ื ืจืื” ื—ืœื•ืคื” ืœืžื ื’ื ื•ื ื™ื idref ื•ื›ื• '

ืžื•ืฉื’ ื˜ื•ื‘ ืื™ืš ื“ื‘ืจื™ื "ื‘ืืžืช" ืขื•ื‘ื“ื™ื ื‘-MarkLogic ื ื™ืชืŸ ืขืœ ื™ื“ื™ API ืื•ืคื˜ื™, ื‘ืžื•ื‘ืŸ ื–ื”, ื”ื™ื ื‘ืจืžื” ื ืžื•ื›ื”, ืื ื›ื™ ืžื˜ืจืชื” ื”ืคื•ื›ื” ื“ื•ื•ืงื - ืœื ืกื•ืช ืœื”ืคืฉื˜ ืžืžื•ื“ืœ ื”ื ืชื•ื ื™ื ื‘ื• ื ืขืฉื” ืฉื™ืžื•ืฉ, ืœื”ื‘ื˜ื™ื— ืขื‘ื•ื“ื” ืขืงื‘ื™ืช ืขื ื ืชื•ื ื™ื ื‘ืžื•ื“ืœื™ื ืฉื•ื ื™ื, ื˜ืจื ื–ืงืฆื™ื•ื ืœื™ื•ืช ื•ื›ื•'.

DBMS ืจื™ื‘ื•ื™ ื“ื’ืžื™ื "ืœืœื ื“ื’ื ืจืืฉื™"

ื™ืฉ ื‘ืฉื•ืง ื’ื DBMS ืฉืžืžืฆื‘ื™ื ืขืฆืžื ื›ืจื‘-ืžื•ื“ืœื™ื ื‘ืชื—ื™ืœื”, ืœืœื ืฉื•ื ืžื•ื“ืœ ืจืืฉื™ ืฉืขื‘ืจ ื‘ื™ืจื•ืฉื”. ืืœื• ื›ื•ืœืœื™ื ArangoDB, ืื•ืจื™ื™ื ื˜ (ืžืฉื ืช 2018 ื—ื‘ืจืช ื”ืคื™ืชื•ื— ืฉื™ื™ื›ืช ืœ-SAP) ื• CosmosDB (ืฉื™ืจื•ืช ื›ื—ืœืง ืžืคืœื˜ืคื•ืจืžืช ื”ืขื ืŸ ืฉืœ Microsoft Azure).

ืœืžืขืฉื”, ื™ืฉื ื ืžื•ื“ืœื™ื "ื”ืœื™ื‘ื”" ื‘-ArangoDB ื•-OrientDB. ื‘ืฉื ื™ ื”ืžืงืจื™ื, ืืœื• ื”ื ืžื•ื“ืœื™ื ืฉืœ ื ืชื•ื ื™ื ืžืฉืœื”ื, ืฉื”ื ื”ื›ืœืœื•ืช ืฉืœ ื”ืžืกืžืš ื”ืจืืฉื•ืŸ. ื”ื”ื›ืœืœื•ืช ื ื•ืขื“ื• ื‘ืขื™ืงืจ ืœื”ืงืœ ืขืœ ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ืฉืื™ืœืชื•ืช ื‘ืขืœื•ืช ืื•ืคื™ ื’ืจืฃ ื•ื™ื—ืกื™.

ืžื•ื“ืœื™ื ืืœื” ื”ื ื”ื™ื—ื™ื“ื™ื ื”ื–ืžื™ื ื™ื ืœืฉื™ืžื•ืฉ ื‘-DBMS ืฉืฆื•ื™ืŸ; ืฉืคื•ืช ื”ืฉืื™ืœืชื” ืฉืœื”ื ื ื•ืขื“ื• ืœืขื‘ื•ื“ ืื™ืชื. ื›ืžื•ื‘ืŸ, ืžื•ื“ืœื™ื ื•-DBMS ื›ืืœื” ืžื‘ื˜ื™ื—ื™ื, ืื‘ืœ ื—ื•ืกืจ ื”ืชืื™ืžื•ืช ืขื ืžื•ื“ืœื™ื ื•ืฉืคื•ืช ืกื˜ื ื“ืจื˜ื™ื™ื ืœื ืžืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘-DBMS ืืœื” ื‘ืžืขืจื›ื•ืช ืžื“ื•ืจ ืงื•ื“ื - ื›ื“ื™ ืœื”ื—ืœื™ืฃ ืืช ื”-DBMS ืฉื›ื‘ืจ ื ืขืฉื” ื‘ื”ื ืฉื™ืžื•ืฉ ืฉื.

ื›ื‘ืจ ื”ื™ื™ืชื” ืžืืžืจ ื ืคืœื ืขืœ ArangoDB ื•-OrientDB ื‘-Habrรฉ: ื”ืฆื˜ืจืฃ ืœื‘ืกื™ืกื™ ื ืชื•ื ื™ื ืฉืœ NoSQL.

ArangoDB

ArangoDB ื˜ื•ืขืŸ ืœืชืžื™ื›ื” ื‘ืžื•ื“ืœ ื ืชื•ื ื™ ื’ืจืฃ.

ื”ืฆืžืชื™ื ืฉืœ ื’ืจืฃ ื‘-ArangoDB ื”ื ืžืกืžื›ื™ื ืจื’ื™ืœื™ื, ื•ื”ืงืฆื•ื•ืช ื”ื ืžืกืžื›ื™ื ืžืกื•ื’ ืžื™ื•ื—ื“ ืฉื™ื—ื“ ืขื ืฉื“ื•ืช ืžืขืจื›ืช ืจื’ื™ืœื™ื ื™ืฉ (_key, _id, _rev) ืฉื“ื•ืช ืžืขืจื›ืช _from ะธ _to. ืžืกืžื›ื™ื ื‘ืžืกืžื›ื™ DBMS ืžืฉื•ืœื‘ื™ื ื‘ืื•ืคืŸ ืžืกื•ืจืชื™ ืœืื•ืกืคื™ื. ืื•ืกืคื™ ืžืกืžื›ื™ื ื”ืžื™ื™ืฆื’ื™ื ืงืฆื•ื•ืช ื ืงืจืื™ื ืื•ืกืคื™ ืงืฆื” ื‘-ArangoDB. ืื’ื‘, ืžืกืžื›ื™ ืื™ืกื•ืฃ ืงืฆื•ื•ืช ื”ื ื’ื ืžืกืžื›ื™ื, ืื– ืงืฆื•ื•ืช ื‘-ArangoDB ื™ื›ื•ืœื™ื ืœืฉืžืฉ ื’ื ื›ืฆืžืชื™ื.

ื ืชื•ื ื™ื ื’ื•ืœืžื™ื™ื

ืชื ื• ืœื ื• ืื•ืกืฃ persons, ืฉื”ืžืกืžื›ื™ื ืฉืœื• ื ืจืื™ื ื›ืš:

[
  {
    "_id"  : "people/alice" ,
    "_key" : "alice" ,
    "name" : "ะะปะธัะฐ"
  },
  {
    "_id"  : "people/bob" ,
    "_key" : "bob" ,
    "name" : "ะ‘ะพะฑ"  
  }
]

ืฉื™ื”ื™ื” ื’ื ืื•ืกืฃ cafes:

[
  {
    "_id" : "cafes/jd" ,
    "_key" : "jd" ,
    "name" : "ะ”ะถะพะฝ ะ”ะพะฝะฝ"  
  },
  {
    "_id" : "cafes/jj" ,
    "_key" : "jj" ,
    "name" : "ะ–ะฐะฝ-ะ–ะฐะบ"
  }
]

ื•ืื– ื”ืื•ืกืฃ likes ืขืฉื•ื™ ืœื”ื™ืจืื•ืช ื›ืš:

[
  {
    "_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 
  }
]

ืฉืื™ืœืชื•ืช ื•ืชื•ืฆืื•ืช

ืฉืื™ืœืชื” ื‘ืกื’ื ื•ืŸ ื’ืจืฃ ื‘ืฉืคืช AQL ื”ืžืฉืžืฉืช ื‘-ArangoDB, ื”ืžื—ื–ื™ืจื” ื‘ืฆื•ืจื” ืงืจื™ื ืื ื•ืฉื™ืช ืžื™ื“ืข ืขืœ ืžื™ ืื•ื”ื‘ ืื™ื–ื” ื‘ื™ืช ืงืคื”, ื ืจืื™ืช ื›ืš:

FOR p IN persons
  FOR c IN OUTBOUND p likes
  RETURN { person : p.name , likes : c.name }

ื‘ืกื’ื ื•ืŸ ื™ื—ืกื™, ืฉื‘ื• ืื ื• "ืžื—ืฉื‘ื™ื" ื™ื—ืกื™ื ื‘ืžืงื•ื ืžืื—ืกื ื™ื ืื•ืชื, ื ื™ืชืŸ ืœืฉื›ืชื‘ ืืช ื”ืฉืื™ืœืชื” ื”ื–ื• ื›ืš (ืื’ื‘, ืœืœื ื”ืื•ืกืฃ likes ื™ื›ื•ืœ ืœื”ืกืชื“ืจ ื‘ืœื™):

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 }

ื”ืชื•ืฆืื” ื‘ืฉื ื™ ื”ืžืงืจื™ื ืชื”ื™ื” ื–ื”ื”:

[
  { "person" : "ะะปะธัะฐ" , likes : "ะ–ะฐะฝ-ะ–ะฐะบ" } ,
  { "person" : "ะะปะธัะฐ" , likes : "ะ”ะถะพะฝ ะ”ะพะฝะฝ" } ,
  { "person" : "ะ‘ะพะฑ" , likes : "ะ”ะถะพะฝ ะ”ะพะฝะฝ" }
]

ืขื•ื“ ืฉืื™ืœืชื•ืช ื•ืชื•ืฆืื•ืช

ืื ื ืจืื” ืฉืคื•ืจืžื˜ ื”ืชื•ืฆืื” ืฉืœืžืขืœื” ืื•ืคื™ื™ื ื™ ื™ื•ืชืจ ืœ-DBMS ื™ื—ืกื™ ืžืืฉืจ ืœ-DBMS ืฉืœ ืžืกืžืš, ืืชื” ื™ื›ื•ืœ ืœื ืกื•ืช ืืช ื”ืฉืื™ืœืชื” ื”ื–ื• (ืื• ืฉืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ COLLECT):

FOR p IN persons
  RETURN {
    person : p.name,
    likes : (
      FOR c IN OUTBOUND p likes
      RETURN c.name
    )
}

ื”ืชื•ืฆืื” ืชื™ืจืื” ื›ืš:

[
  { "person" : "ะะปะธัะฐ" , likes : ["ะ–ะฐะฝ-ะ–ะฐะบ" , "ะ”ะถะพะฝ ะ”ะพะฝะฝ"]  } ,
  { "person" : "ะ‘ะพะฑ" , likes : ["ะ”ะถะพะฝ ะ”ะพะฝะฝ"] }
]

ืื•ืจื™ื™ื ื˜

ื”ื‘ืกื™ืก ืœื”ื˜ืžืขืช ืžื•ื“ืœ ื’ืจืฃ ืขืœ ื’ื‘ื™ ืžื•ื“ืœ ืžืกืžืš ื‘-OrientDB ื”ื•ื ื”ื–ื“ืžื ื•ืช ืœืฉื“ื•ืช ืžืกืžื›ื™ื, ื‘ื ื•ืกืฃ ืœืขืจื›ื™ื ืกืงืœืจื™ื ืกื˜ื ื“ืจื˜ื™ื™ื ืคื—ื•ืช ืื• ื™ื•ืชืจ, ื™ืฉ ื’ื ืขืจื›ื™ื ืžืกื•ื’ื™ื ื›ื’ื•ืŸ LINK, LINKLIST, LINKSET, LINKMAP ะธ LINKBAG. ื”ืขืจื›ื™ื ืฉืœ ืกื•ื’ื™ื ืืœื” ื”ื ืงื™ืฉื•ืจื™ื ืื• ืื•ืกืคื™ ืงื™ืฉื•ืจื™ื ืžื–ื”ื™ ืžืขืจื›ืช ืžืกืžื›ื™ื.

ืœืžื–ื”ื” ื”ืžืกืžืš ืฉื”ื•ืงืฆื” ืขืœ ื™ื“ื™ ื”ืžืขืจื›ืช ื™ืฉ "ืžืฉืžืขื•ืช ืคื™ื–ื™ืช", ื”ืžืฆื™ื™ื ืช ืืช ืžื™ืงื•ื ื”ืจืฉื•ืžื” ื‘ืžืกื“ ื”ื ืชื•ื ื™ื, ื•ื”ื•ื ื ืจืื” ื‘ืขืจืš ื›ืš: @rid : #3:16. ืœืคื™ื›ืš, ื”ืขืจื›ื™ื ืฉืœ ืžืืคื™ื™ื ื™ ื”ื™ื™ื—ื•ืก ื”ื ื‘ืืžืช ืžืฆื‘ื™ืขื™ื (ื›ืžื• ื‘ืžื•ื“ืœ ื”ื’ืจืฃ) ื•ืœื ืชื ืื™ ื‘ื—ื™ืจื” (ื›ืžื• ื‘ืžื•ื“ืœ ื”ื”ืชื™ื™ื—ืกื•ืชื™).

ื›ืžื• ArangoDB, ืงืฆื•ื•ืช ื‘-OrientDB ืžื™ื•ืฆื’ื™ื ื›ืžืกืžื›ื™ื ื ืคืจื“ื™ื (ืื ื›ื™ ืื ืœืงืฆื” ืื™ืŸ ืžืืคื™ื™ื ื™ื ืžืฉืœื•, ื ื™ืชืŸ ืœื™ืฆื•ืจ ืื•ืชื• ืงืœ, ื•ื–ื” ืœื ื™ืชืื™ื ืœืžืกืžืš ื ืคืจื“).

ื ืชื•ื ื™ื ื’ื•ืœืžื™ื™ื

ื‘ืคื•ืจืžื˜ ืงืจื•ื‘ ืœ ืคื•ืจืžื˜ dump ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ OrientDB, ื”ื ืชื•ื ื™ื ืžื”ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช ืขื‘ื•ืจ ArangoDB ื™ื™ืจืื• ื‘ืขืจืš ื›ืš:

[
     {
      "@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"
    }
  ]

ื›ืคื™ ืฉืื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช, ืงื•ื“ืงื•ื“ื™ื ืžืื—ืกื ื™ื ื’ื ืžื™ื“ืข ืขืœ ืงืฆื•ื•ืช ื ื›ื ืกื™ื ื•ื™ื•ืฆืื™ื. ื‘ึผึฐ ืฉื™ืžื•ืฉ ืžืžืฉืง ื”-API ืฉืœ ื”ืžืกืžื›ื™ื ืฆืจื™ืš ืœืคืงื— ื‘ืขืฆืžื• ืขืœ ืฉืœืžื•ืช ื”ื”ืชื™ื™ื—ืกื•ืช, ื•ืžืžืฉืง ื”-API ืฉืœ Graph ืœื•ืงื— ืขืœ ืขืฆืžื• ืืช ื”ืขื‘ื•ื“ื” ื”ื–ื•. ืื‘ืœ ื‘ื•ืื• ื ืจืื” ืื™ืš ื ืจืื™ืช ื’ื™ืฉื” ืœ-OrientDB ื‘ืฉืคื•ืช ืฉืื™ืœืชื•ืช "ื˜ื”ื•ืจื•ืช" ืฉืื™ื ืŸ ืžืฉื•ืœื‘ื•ืช ื‘ืฉืคื•ืช ืชื›ื ื•ืช.

ืฉืื™ืœืชื•ืช ื•ืชื•ืฆืื•ืช

ืฉืื™ืœืชื” ื“ื•ืžื” ื‘ืžื˜ืจื” ืœืฉืื™ืœืชื” ืžื”ื“ื•ื’ืžื” ืขื‘ื•ืจ ArangoDB ื‘-OrientDB ื ืจืื™ืช ื›ืš:

SELECT name AS person_name, OUT('likes').name AS cafe_name
   FROM Person
   UNWIND cafe_name

ื”ืชื•ืฆืื” ืชืชืงื‘ืœ ื‘ื˜ื•ืคืก ื”ื‘ื:

[
  { "person_name": "ะะปะธัะฐ", "cafe_name": "ะ”ะถะพะฝ ะ”ะพะฝะฝ" },
  { "person_name": "ะะปะธัะฐ", "cafe_name": "ะ–ะฐะฝ-ะ–ะฐะบ" },
  { "person_name": "ะ‘ะพะฑ",  "cafe_name": "ะ–ะฐะฝ-ะ–ะฐะบ" }
]

ืื ืคื•ืจืžื˜ ื”ืชื•ืฆืื” ื ืจืื” ืฉื•ื‘ "ื™ื—ืกื™", ืขืœื™ืš ืœื”ืกื™ืจ ืืช ื”ืงื• ืขื UNWIND():

[
  { "person_name": "ะะปะธัะฐ", "cafe_name": [ "ะ”ะถะพะฝ ะ”ะพะฝะฝ", "ะ–ะฐะฝ-ะ–ะฐะบ" ] },
  { "person_name": "ะ‘ะพะฑ",  "cafe_name": [ "ะ–ะฐะฝ-ะ–ะฐะบ" ' }
]

ื ื™ืชืŸ ืœืชืืจ ืืช ืฉืคืช ื”ืฉืื™ืœืชื” ืฉืœ OrientDB ื›-SQL ืขื ืชื•ืกืคื•ืช ื“ืžื•ื™ื•ืช ื’ืจืžืœื™ืŸ. ื‘ื’ืจืกื” 2.2 ื”ื•ืคื™ืข ื˜ื•ืคืก ื‘ืงืฉื” ื“ืžื•ื™ ืกื™ื™ืคืจ, 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 ("ืจืฆืฃ ืื˜ื•ื-ืจืฉื•ืžื”"), ืฉื’ื ื”ื•ื ืงืจื•ื‘ ืœืžืกืžืš ืื—ื“.

ื”ืื DBMSs ืจื‘-ืžื•ื“ืœื™ื ื”ื ื”ื‘ืกื™ืก ืœืžืขืจื›ื•ืช ืžื™ื“ืข ืžื•ื“ืจื ื™ื•ืช?

ืื‘ืœ ืžื•ื“ืœ ื”ื ืชื•ื ื™ื ืฉื ื‘ื—ืจ ืขืœ ื™ื“ื™ ื”ืžืฉืชืžืฉ ื•ื”-API ื‘ื• ื ืขืฉื” ืฉื™ืžื•ืฉ ืงื‘ื•ืขื™ื ื‘ื–ืžืŸ ื™ืฆื™ืจืช ื—ืฉื‘ื•ืŸ ื‘ืฉื™ืจื•ืช. ืœื ื ื™ืชืŸ ืœื’ืฉืช ืœื ืชื•ื ื™ื ื”ื˜ืขื•ื ื™ื ื‘ื“ื’ื ืื—ื“ ื‘ืคื•ืจืžื˜ ืฉืœ ื“ื’ื ืื—ืจ, ื›ืคื™ ืฉืžืžื—ื™ืฉ ืžืฉื”ื• ื›ืžื• ื–ื”:

ื”ืื DBMSs ืจื‘-ืžื•ื“ืœื™ื ื”ื ื”ื‘ืกื™ืก ืœืžืขืจื›ื•ืช ืžื™ื“ืข ืžื•ื“ืจื ื™ื•ืช?

ืœืคื™ื›ืš, ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื‘-Azure CosmosDB ื›ื™ื•ื ื”ื•ื ืจืง ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืžืกืคืจ ืžืกื“ื™ ื ืชื•ื ื™ื ื”ืชื•ืžื›ื™ื ื‘ื“ื’ืžื™ื ืฉื•ื ื™ื ืžื™ืฆืจืŸ ืื—ื“, ืžื” ืฉืœื ืคื•ืชืจ ืืช ื›ืœ ื”ื‘ืขื™ื•ืช ืฉืœ ืื—ืกื•ืŸ ืจื‘-ื•ื•ืจื™ืืฆื™ื•ืช.

DBMS ืจื™ื‘ื•ื™ ืžื•ื“ืœื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžื•ื“ืœ ื’ืจืฃ?

ืจืื•ื™ื” ืœืฆื™ื•ืŸ ื”ืขื•ื‘ื“ื” ืฉืขื“ื™ื™ืŸ ืื™ืŸ ื‘ืฉื•ืง DBMSs ืžืจื•ื‘ื™ ื“ื’ืžื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžื•ื“ืœ ื’ืจืฃ (ืœืžืขื˜ ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื“ื’ืžื™ื ืขื‘ื•ืจ ืฉื ื™ ื“ื’ืžื™ ื’ืจืคื™ื ื‘ื• ื–ืžื ื™ืช: RDF ื•-LPG; ืจืื” ื–ืืช ื‘ ืคืจืกื•ื ืงื•ื“ื). ื”ืงืฉื™ื™ื ื”ื’ื“ื•ืœื™ื ื‘ื™ื•ืชืจ ื ื’ืจืžื™ื ืžื™ื™ืฉื•ื ืžื•ื“ืœ ืžืกืžืš ืขืœ ื’ื‘ื™ ืžื•ื“ืœ ื’ืจืคื™, ื•ืœื ื™ื—ืกื™.

ื”ืฉืืœื” ื›ื™ืฆื“ ืœื™ื™ืฉื ืžื•ื“ืœ ื™ื—ืกื™ ืขืœ ื’ื‘ื™ ืžื•ื“ืœ ื”ื’ืจืฃ ื ืฉืงืœืœื” ืขื•ื“ ื‘ืžื”ืœืš ื”ื™ื•ื•ืฆืจื•ืชื• ืฉืœ ื”ืื—ืจื•ืŸ. ืึตื™ืš ื“ื™ื‘ืจ, ืœืžืฉืœ, ื“ื™ื•ื•ื™ื“ ืžืงื’ื•ื‘ืจืŸ:

ืื™ืŸ ืฉื•ื ื“ื‘ืจ ื˜ื‘ื•ืข ื‘ื’ื™ืฉืช ื”ื’ืจืคื™ื ืฉืžื•ื ืข ื™ืฆื™ืจืช ืฉื›ื‘ื” (ืœืžืฉืœ, ืขืœ ื™ื“ื™ ืื™ื ื“ืงืก ืžืชืื™ื) ืขืœ ืžืกื“ ื ืชื•ื ื™ื ื’ืจืคื™ื ื”ืžืืคืฉืจืช ืชืฆื•ื’ื” ื™ื—ืกื™ืช ืขื (1) ืฉื—ื–ื•ืจ ืฉืœ tuples ืžื–ื•ื’ื•ืช ืขืจื›ื™ ืžืคืชื— ืจื’ื™ืœื™ื ื•-2) ืงื™ื‘ื•ืฅ ืฉืœ tuples ืœืคื™ ืกื•ื’ ื™ื—ืก.

ื‘ืขืช ื™ื™ืฉื•ื ืžื•ื“ืœ ืžืกืžืš ืขืœ ื’ื‘ื™ ืžื•ื“ืœ ื’ืจืฃ, ืขืœื™ืš ืœื–ื›ื•ืจ, ืœืžืฉืœ, ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

  • ืืœืžื ื˜ื™ื ืฉืœ ืžืขืจืš JSON ื ื—ืฉื‘ื™ื ืžืกื•ื“ืจื™ื, ืืš ืืœื” ืฉืžืงื•ืจื ื‘ืงื•ื“ืงื•ื“ ืฉืœ ืงืฆื” ืฉืœ ื”ื’ืจืฃ ืื™ื ื ืžืกื•ื“ืจื™ื;
  • ื”ื ืชื•ื ื™ื ื‘ืžื•ื“ืœ ื”ืžืกืžืš ืžื‘ื•ื˜ืœื™ื ื‘ื“ืจืš ื›ืœืœ; ืขื“ื™ื™ืŸ ืื™ื ืš ืจื•ืฆื” ืœืื—ืกืŸ ืžืกืคืจ ืขื•ืชืงื™ื ืฉืœ ืื•ืชื• ืžืกืžืš ืžื•ื˜ื‘ืข, ื•ืœืžืกืžื›ื™ ืžืฉื ื” ื‘ื“ืจืš ื›ืœืœ ืื™ืŸ ืžื–ื”ื™ื;
  • ืžืฆื“ ืฉื ื™, ื”ืื™ื“ื™ืื•ืœื•ื’ื™ื” ืฉืœ DBMSs ืฉืœ ืžืกืžื›ื™ื ื”ื™ื ืฉืžืกืžื›ื™ื ื”ื "ืื’ืจื’ื˜ื™ื" ืžื•ื›ื ื™ื ืฉืœื ืฆืจื™ืš ืœื‘ื ื•ืช ืžื—ื“ืฉ ื‘ื›ืœ ืคืขื. ื ื“ืจืฉ ืœืกืคืง ืœืžื•ื“ืœ ื”ื’ืจืฃ ืืช ื”ื™ื›ื•ืœืช ืœื”ืฉื™ื’ ื‘ืžื”ื™ืจื•ืช ืชืช-ื’ืจืฃ ื”ืžืชืื™ื ืœืžืกืžืš ื”ืžื•ื’ืžืจ.

ืงืฆืช ืคืจืกื•ื

ื›ื•ืชื‘ ื”ืžืืžืจ ืงืฉื•ืจ ืœืคื™ืชื•ื— ื”-NitrosBase DBMS, ืฉื”ืžื•ื“ืœ ื”ืคื ื™ืžื™ ืฉืœื• ื”ื•ื ื’ืจืฃ, ื•ื”ืžื•ื“ืœื™ื ื”ื—ื™ืฆื•ื ื™ื™ื - ืจืœืฆื™ื•ื ื™ื™ื ื•ืžืกืžื›ื™ื - ื”ื ื™ื™ืฆื•ื’ื™ื•. ื›ืœ ื”ื“ื’ืžื™ื ืฉื•ื•ื™ื: ื›ืžืขื˜ ื›ืœ ื ืชื•ื ื™ื ื–ืžื™ื ื™ื ื‘ื›ืœ ืื—ื“ ืžื”ื ื‘ืืžืฆืขื•ืช ืฉืคืช ืฉืื™ืœืชื” ื˜ื‘ืขื™ืช ืœื•. ื™ืชืจื” ืžื›ืš, ื‘ื›ืœ ืชืฆื•ื’ื”, ื ื™ืชืŸ ืœืฉื ื•ืช ืืช ื”ื ืชื•ื ื™ื. ืฉื™ื ื•ื™ื™ื ื™ื‘ื•ืื• ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ื‘ืžื•ื“ืœ ื”ืคื ื™ืžื™ ื•ื‘ื”ืชืื ื’ื ื‘ื”ืฉืงืคื•ืช ืื—ืจื•ืช.

ืื ื™ ืžืงื•ื•ื” ืฉืืชืืจ ืื™ืš ื ืจืื™ืช ื”ืชืืžืช ื“ื’ืžื™ื ื‘- NitrosBase ื‘ืื—ื“ ืžื”ืžืืžืจื™ื ื”ื‘ืื™ื.

ืžืกืงื ื”

ืื ื™ ืžืงื•ื•ื” ืฉื”ืงื•ื•ื™ื ื”ื›ืœืœื™ื™ื ืฉืœ ืžื” ืฉื ืงืจื ืžื•ืœื˜ื™-ืžื•ื“ืœื™ื ื’ ื”ืคื›ื• ืคื—ื•ืช ืื• ื™ื•ืชืจ ื‘ืจื•ืจื™ื ืœืงื•ืจื. DBMSs ืจื™ื‘ื•ื™ ื“ื’ืžื™ื ืฉื•ื ื™ื ืœืžื“ื™, ื•"ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื“ื’ืžื™ื" ื™ื›ื•ืœื” ืœื”ื™ืจืื•ืช ืื—ืจืช. ื›ื“ื™ ืœื”ื‘ื™ืŸ ืžื” ื ืงืจื "ืžื•ืœื˜ื™-ืžื•ื“ืœ" ื‘ื›ืœ ืžืงืจื” ืกืคืฆื™ืคื™, ื›ื“ืื™ ืœืขื ื•ืช ืขืœ ื”ืฉืืœื•ืช ื”ื‘ืื•ืช:

  1. ื”ืื ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ืชืžื™ื›ื” ื‘ืžื•ื“ืœื™ื ืžืกื•ืจืชื™ื™ื ืื• ืขืœ ืื™ื–ืฉื”ื• ืžื•ื“ืœ "ื”ื™ื‘ืจื™ื“ื™"?
  2. ื”ืื ื”ื“ื’ืžื™ื "ืฉื•ื•ื™ื", ืื• ืฉืื—ื“ ืžื”ื ื ื•ืฉื ื”ืื—ืจื™ื?
  3. ื”ืื ื”ื“ื’ืžื™ื "ืื“ื™ืฉื™ื" ื–ื” ืœื–ื”? ื”ืื ื ื™ืชืŸ ืœืงืจื•ื ื ืชื•ื ื™ื ืฉื ื›ืชื‘ื• ื‘ืžื•ื“ืœ ืื—ื“ ื‘ืžื•ื“ืœ ืื—ืจ ืื• ืืคื™ืœื• ืœื“ืจื•ืก?

ืื ื™ ื—ื•ืฉื‘ ืฉื›ื‘ืจ ืืคืฉืจ ืœืขื ื•ืช ื‘ื—ื™ื•ื‘ ืขืœ ื”ืฉืืœื” ืœื’ื‘ื™ ื”ืจืœื•ื•ื ื˜ื™ื•ืช ืฉืœ DBMS ืจื‘-ืžื•ื“ืœื™ื, ืื‘ืœ ื”ืฉืืœื” ื”ืžืขื ื™ื™ื ืช ื”ื™ื ืื™ืœื• ืกื•ื’ื™ื ืžื”ื ื™ื”ื™ื• ืžื‘ื•ืงืฉื™ื ื™ื•ืชืจ ื‘ืขืชื™ื“ ื”ืงืจื•ื‘. ื ืจืื” ื›ื™ DBMSs ืžืจื•ื‘ื™ ืžื•ื“ืœื™ื ื”ืชื•ืžื›ื™ื ื‘ืžื•ื“ืœื™ื ืžืกื•ืจืชื™ื™ื, ื‘ืขื™ืงืจ ื™ื—ืกื™ื™ื, ื™ื”ื™ื• ืžื‘ื•ืงืฉื™ื ื™ื•ืชืจ; ื”ืคื•ืคื•ืœืจื™ื•ืช ืฉืœ DBMS ืžืจื•ื‘ื™ ื“ื’ืžื™ื, ื”ืžืฆื™ืขื™ื ื“ื’ืžื™ื ื—ื“ืฉื™ื ื”ืžืฉืœื‘ื™ื ืืช ื”ื™ืชืจื•ื ื•ืช ืฉืœ ื“ื’ืžื™ื ืžืกื•ืจืชื™ื™ื ืฉื•ื ื™ื, ื”ื™ื ืขื ื™ื™ืŸ ืฉืœ ื”ืขืชื™ื“ ื”ืจื—ื•ืง ื™ื•ืชืจ.

ืจืง ืžืฉืชืžืฉื™ื ืจืฉื•ืžื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืชืฃ ื‘ืกืงืจ. ืœื”ืชื—ื‘ืจื‘ื‘ืงืฉื”.

ื”ืื ืืชื” ืžืฉืชืžืฉ ื‘-DBMS ืžืจื•ื‘ื” ืžื•ื“ืœื™ื?

  • ืื ื—ื ื• ืœื ืžืฉืชืžืฉื™ื ื‘ื–ื”, ืื ื—ื ื• ืžืื—ืกื ื™ื ื”ื›ืœ ื‘-DBMS ืื—ื“ ื•ื‘ื“ื’ื ืื—ื“

  • ืื ื• ืžืฉืชืžืฉื™ื ื‘ื™ื›ื•ืœื•ืช ืžืจื•ื‘ื•ืช ื“ื’ืžื™ื ืฉืœ DBMS ืžืกื•ืจืชื™ื™ื

  • ืื ื• ืžืชืจื’ืœื™ื ื”ืชืžื“ื” ืžืจื•ื‘ืช ืขื™ื ื™ื™ื

  • ืื ื• ืžืฉืชืžืฉื™ื ื‘-DBMS ืจื‘-ืžื•ื“ืœื™ื ื—ื“ืฉ (Arango, Orient, CosmosDB)

19 ืžืฉืชืžืฉื™ื ื”ืฆื‘ื™ืขื•. 4 ืžืฉืชืžืฉื™ื ื ืžื ืขื•.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”