áá±ááºáá®ááááºážá¡áá»ááºá¡áááºá áá áºáá»á¬ážááẠááŸá¯ááºááœá±ážááŸáááºá á¡áááºážáá¯á¶ážáá±á¬á·á áááºážááá¯á·á ááŸá¯ááºááœá±ážááŸá¯ááẠáááºážááá¯á·ááœáẠáá¯ááºáá±á¬ááºáá²á·áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážá ááŸá¯ááºááœá±ážááŸá¯ááŒá±á¬áá·áº ááŒá áºáááºá áá±áá¬áá»á¬ážá ááŸá¯ááºááœá±ážááŸá¯ááẠá¡áá¯á¶ážááŒá¯ááá·áº áá±áá¬áá¯á¶á á¶á¡áá»áá¯ážáá»áá¯ážááœáẠáááºááŸááá±áááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá±áᬠ"ááŒá®áž" ááŒá áºáá¬áá±á¬á¡áá« ááŒá¿áá¬ááŸááá±á¬ ááá¹ááá¬áá»á¬ážáá²á០áá áºáá¯ááẠáááºážá áá¯ááẠ("áá¯áááº")áá¬áá áááºážá á¡áá»áá¯ážá¡á á¬áž ("á¡áá»áá¯ážáá»áá¯áž") áááºážááŒá áºáááºá
áá»áá¯ážááŒá±á¬ááºážáááºááŒááºááŒááºážááŸá¬ áá»áá¯á·ááœááºážáá»áẠáááœá±á·áá±ážááẠáááºáááºáá«á
á¡ááŒá±á¬ááºážá¡áá¬
Polyglot á áœá²ááŒá²ááŸá¯
á¡áááºáá±á¬áºááŒáá«á¡áá»ááºáá»á¬ážááẠáá
áºáá«áá
áºáá¶ááœáẠá
áá
áºáá
áºáá¯ááá±á¬ááºá¡ááœááºážáááẠááá°áá®áá±á¬ DBMSs á¡áá»á¬ážá¡ááŒá¬ážááᯠáá±áá¬ááááºážáááºážáááºááŸáá·áº áááºážááá¯á·á¡á¬áž áá¯ááºáá±á¬ááºááŒááºážááá¯ááºáᬠááŒá¿áá¬á¡áá»áá¯ážáá»áá¯ážááᯠááŒá±ááŸááºážááá¯ááºá
á±áááºá áááºážááá¯á·áá
áºáá¯á
á®ááẠáááºážáááá¯ááºááá¯ááºáá±áá¬áá±á¬áºáááºááᯠáá¶á·ááá¯ážáá±ážááá·áº ááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬ DBMSs á¡áá»á¬ážá¡ááŒá¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáááºáá°áá±á¬á¡áá»ááºááᯠááŒá
áºáá±á«áºá
á±áááºá M. Fowler áá¡áááºážáááºááŒáá·áºá
Fowler ááẠe-commerce áááºáááºááŸá full-featured ááŸáá·áº high-load application ááœáẠdata storage ááá¯á á®á ááºááŒááºážáá¡á±á¬ááºáá«á¥ááá¬áááºážááŸááááºá
á€á¥ááá¬ááẠá¡áááºááẠáá»á²á·áá¬ážáá±áááºá ááá¯á·áá±á¬áº áááºááá¯ááºáᬠáááºááœááºáá»ááºá¡ááœáẠDBMS áá
áºáᯠááá¯á·ááá¯áẠá¡ááŒá¬ážáá
áºáá¯ááᯠááœá±ážáá»ááºáá¬ááœáẠá¡áá»áá¯á·áá±á¬ ááá·áºááœááºážá
ááºážá
á¬ážááŸá¯áá»á¬ážááᯠááœá±á·ááŸáááá¯ááºááẠá¥ááá¬á
ááá¯ááá¯á·áá±á¬áááá á¹áá¬ááºáá¯á¶ááœáẠáá»áœááºáá áºáŠážááŒá áºááŒááºážááẠáááœááºáá°ááŒá±á¬ááºáž áááºááŸá¬ážáá«áááºá
- áá±áá¬ááááºážáááºážááŸá¯ááᯠáá¯ááºáá±á¬ááºááá·áº áá¯ááºááá¬áááẠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ DBMS á¡áá±á¡ááœááºááŸáá·áº á¡áá»áá¯ážá¡á á¬áž ááá¯ážáá¬áá«áááºá á€ááááºážá ááŸá áºáááºááááºážááŸáá·áº á¡áá»áá¯ážááá®áá«á áá±áá¬ááᯠáááºáá°ááŒá¯áá±á¬ áá¯ááºááá¬áááẠáá±á¬ááºážááœááºáá«áááºá
- á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ DBMS á¡áá±á¡ááœááºá áá»á¬ážááŒá¬ážáá¬áááºááŸáá·áºá¡áá»áŸá á¡áá¯á¶ážááŒá¯áá¬ážááá·áº DBMS áá áºáá¯á á®á áá¯ááºáááºážáááá±áááá¹ááá¬áá»á¬áž (áá»áœááºážáá»ááºááá¯ááºááŸá¯á á¡ááŸá¬ážáá¶ááá¯ááºáááºá ááŒáá·áºáá¬ážáá±á¬áááŸáááá¯ááºááŸá¯) áá±ážáá±á¬ááºááŸá¯á ááááºáá»á¬ážááẠááá¯ážáá¬áá«áááºá
- ááá¯ááŸá±á¬ááºááŸá¯á áá áºááœá²áá áºáá¯áá¯á¶ážá áá¯ááºáááºážáááá±áááá¹ááá¬áá»á¬ážááᯠáá±áá»á¬á á±ááẠáááŒá áºááá¯ááºáá« - á¡áá°ážáááŒáá·áº á¡áá±á¬ááºážá¡áááºááŒá áºááŒááºážá
áááá á¹áá¬ááºáá¯á¶ áá«ááá¯ááºáá¬á ááŸá¯áá±á¬áá·áºááŸááŒáá·áºáá»áŸáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠá€áá²á·ááá¯á· ááŒá áºáá±ááẠá
- DBMS áá¯ááºáá¯ááºáá°áá¶á០ááá¯ááºá ááºááŸáá·áº áááºážááá¬ááá¯ááºáᬠáá¶á·ááá¯ážááŸá¯ áá¯ááºáá»á ááááºáá»á¬ážá áœá¬ ááá¯ážáá¬áááºá
- áááºáááºážá¡ááºá¡á¬áž á¡ááœááºá¡áá»áœá¶ááŸáá·áº áááºááŸááºáááºáá»á¬áž ááá¯ážááŒáá·áºáá¬áááºá
- áá±áá¬áááá¯ááºáá®ááŸá¯ááŒá±á¬áá·áº ááá¯ááºááá¯ááºááá¹áá¬áá±ážáá¯á¶ážááŸá¯á¶ážááŸá¯ ááá¯á·ááá¯áẠááŒá áºáááºáá»á¬ážá
á áá áºá á á¯á á¯áá±á«ááºážááá¯ááºááá¯ááºááŸá¯áá¯ááºáá»á áááẠ(TCO) ááœáẠáááá¬áááºááŸá¬ážá áœá¬ ááá¯ážáá¬áá«áááºá "á¡áá»á¬ážá¡ááŒá¬ážááá¯ááŸá±á¬ááºááŸá¯ááœá±ážáá»ááºá áá¬áá»á¬áž" áá¡ááŒá±á¡áá±ááŸááœááºáááºážááŸááá«ááá¬ážá
áá±á¬áºáááºáá»áá¯ážá á¯á¶
âmultivariate storageâ áá°áá±á¬ áá±á«áá¬áááᯠ2011 áá¯ááŸá áºááœáẠá áááºá¡áá¯á¶ážááŒá¯áá²á·áááºá áá»ááºážáááºááŸá¯á ááŒá¿áá¬áá»á¬ážááᯠááááŸááá¬ážáááºááŸá¯ááŸáá·áº á¡ááŒá±áá áºáá¯ááᯠááŸá¬ááœá±ááẠááŸá áºá¡áá±á¬áºááŒá¬ ááŒá¬ááŒáá·áºáá²á·ááŒá®áž 2015 áá¯ááŸá áºááœáẠGartner áá±á·áá¬áááºážá á áºáá°áá»á¬ážá ááŸá¯ááºááŒáá·áº á¡ááŒá±ááᯠáá¯á¶áá±á¬áºáá²á·áá«áááºá
- âáá»ááŸá
NoSQL DBMSs á¡ááœáẠá á»á±ážááœááºáááºážááœáŸáẠ- 2015 "
DBMS áá»á¬ážá á¡áá¬áááºá áááºážááá¯á·á áááá¯áá¬áááºáá¬áá»á¬ážááŸáá·áº áááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯ááá·áº áááºážáááºážáá»á¬ážááẠáá±á¬áºáááºáá±á«ááºážáá»á¬ážá áœá¬ ááŒá áºáááºá
- âáá»ááŸá
ODBMS á¡ááœáẠMagic Quadrant - 2016 "
ááááºáááºážáá¯ááºáááºážáááºáááºááá·áº DBMS áá»á¬ážááẠááááºáá±á¬ááºážáá áºáá¯áááºážáá¡á áááºá¡ááá¯ááºážá¡ááŒá Ạáááºá ááºááŸá¯ááŸáá·áº áááºááœáŸááºááŸá¯áááŸááá±á¬ áá±á¬áºáááºáá»á¬ážá áœá¬ááᯠáá±ážáá±á¬ááºáááºááŒá áºáááºá
á€áá
áºááŒáááºááœáẠGartner á០ááœá²ááŒááºážá
áááºááŒá¬áá°áá»á¬ážááẠáááºážááá¯á·á ááá·áºááŸááºážáá»ááºááŸáá·áº ááŸááºáááºáááºáᯠáááºááááºá á
á¬áá»ááºááŸá¬ááŸáá·áºá¡áá°ááœá¬ážáá»áŸááº
á¡á±á¬ááºáá±á¬áºááŒáá«ááá¬ážááœáẠáá±á¬áºáááºáá±á«ááºážáá»á¬ážá áœá¬áᯠááá¯áá¬ážáá±á¬ áá¯áá¹ááááá¡ááá·áºáááºááŸááºááŸá¯áá áºáá¯á á®ááŸá áá±á«ááºážáá±á¬ááºáá»á¬ážááẠDBMS ááá¯ááŒááá¬ážáááºá DBMS áá áºáá¯á á®á¡ááœááºá áá°ááá¶á·ááá¯ážáá±ážáá¬ážááá·áº áá±á¬áºááẠ(áá áºáá»áááºá áá áºáá¯áááºážááŒá áºáá²á·áá±á¬) ááŸáá·áº áááºážááŸáá·áºá¡áá° áááºááŸááá¶á·ááá¯ážáá±ážáá¬ážááá·áº áá±á¬áºáááºáá»á¬ážááᯠááœáŸááºááŒáá¬ážáááºá ááá¯á·á¡ááŒáẠá á¬áááºážááœááºážáá¬ážáá±á¬ DBMS áá»á¬ážááẠáááºážááá¯á·ááá¯ááºáá°ááá¯á· âáá°áá áá¯á¶á á¶áá»áá¯ážá á¯á¶â á¡ááŒá ẠáááºááŸááºááŒááŒá®áž áááºáá®ážáá°áá»á¬ážáá¡ááá¯á¡áá áááºááá·áº áááŠáž á¡ááœá±áááºáá¶ááá·áº áá±á¬áºáááºá០áááŸááá«á
DBMS | áááŠážáá¯á¶á ᶠ| á¡ááá¯áá±á¬áºáááºáá»á¬áž |
---|---|---|
Oracle á | áááºá ááºááŸá¯ | ááááºá á á¬ááœááºá á¬áááºáž |
MS SQL | áááºá ááºááŸá¯ | ááááºá á á¬ááœááºá á¬áááºáž |
PostgreSQL | áááºá ááºááŸá¯ | ááááº*á á á¬ááœááºá á¬áááºáž |
MarkLogic | ááŸááºáááºážáá¯ááºááŸáẠ| ááááºá áááºá ááºááŸá¯ |
MongoDB | ááŸááºáááºážáá¯ááºááŸáẠ| áá±á¬á·áááºááá¯ážá ááááº* |
áá±áá¬á¡ááœáẠ| áá»ááºááŒáá·áºáá±á¬áá±á¬áºáᶠ| ááŸááºáááºážáá¯ááºááŸááºá áááẠ|
Redis | áá±á¬á·-áááºááá¯áž | ááŸááºáááºážáá¯ááºááŸááºá ááááº* |
ArangoDB | - | ááááºá á á¬ááœááºá á¬áááºáž |
OrientDB | - | ááááºá á á¬ááœááºá á¬áááºážá áááºá ááºááŸá¯ |
Azure CosmosDB | - | ááááºá á á¬ááœááºá á¬áááºážá áááºá ááºááŸá¯ |
á á¬ážááœá²áá±á«áºááŸááŸááºá á¯áá»á¬áž
ááŒáá¯áááºá á¬áááºážááœááºážááẠááá¯á¡ááºááá·áº ááá¬ážááŸá ááŒááºááœáá·áºáá»á¬áž-
- PostgreSQL DBMS ááẠááááºáá±áá¬áá±á¬áºáááºááᯠááá¶á·ááá¯ážáá±á¬áºáááºáž á€áá¯ááºáá¯ááºá áááºážááᯠáá¶á·ááá¯ážáá±ážáááºá
áááºážááá¯á¡ááŒá±áá¶áááºá AgensGraph áá²á·ááá¯á·áá±á¬á - MongoDB ááŸáá·áº á
ááºáá»ááºážá query language ááœáẠááááºá¡á±á¬áºááá±áá¬áá»á¬áž ááŸááá±ááŒááºážá¡ááŒá±á¬ááºáž ááŒá±á¬ááá¯ááŒááºážááẠááá¯ááŸááºááẠ(
,$lookup
) ááááºáá±á¬áºáááºááᯠáá¶á·ááá¯ážááŒááºážáááºá áááºážááá¯á·á áááá«ááºážááẠááááºáá±á¬áºáááºááᯠáá¶á·ááá¯ážáá±ážááá·áº áŠážáááºáá»ááºááŒáá·áº áá¯ááºááá¯ááºážááá¯ááºáᬠááá¯ááŸá±á¬ááºááŸá¯á¡ááá·áºááœáẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááŸá¯áá»á¬áž ááá¯á¡ááºáá«áááºá$graphLookup
- Redis ááŸáá·áº á
ááºáá»ááºážá áá»áœááºá¯ááºááá¯á· ááá¯ááá¯áááºááŸá¬ extension ááŒá
áºáááºá
RedisGraph .
ááá¯á·áá±á¬ááºá á¡áááºážáá áºáá¯á á®á¡ááœááºá á€á¡áááºážá០DBMS ááœáẠáá±á¬áºáááºáá»á¬ážá áœá¬á¡ááœáẠá¡áá±á¬ááºá¡áá¶á·ááᯠáááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºááŒá±á¬ááºáž ááŒááá«áááºá áááºááœáŸááºááŸá¯á á á¬ááœááºá á¬áááºážááŸáá·áº ááááºáá áºáá±á¬áºáááºáá»á¬ážááᯠá¡áá±ážá¡ááŒá®ážáá¯á¶ážá¡ááŒá ẠáááºááŸááºááŒá®áž âáá»á±á¬ááºáá¯á¶ážáá±áá±á¬á¡áá¬áá»á¬ážâ ááᯠáááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºááŒá±á¬ááºážááŒáááẠáá®ážááŒá¬áž DBMSs ááá°áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
áááºá ááºáá±á¬áºáááºá¡áá±á«áºá¡ááŒá±áá¶ááŒá®áž Multi-model DBMS
ááááºáááºáž DBMS áá»á¬ážááẠáááºááŸáááœáẠáááºááœáŸááºáá±áá«áááºá RDBMS áá»á¬ážááẠáá±á¬áºáááºááºáá±á«ááºážáá»á¬ážá áœá¬á áŠážáááºáá¬ááá¯á· ááœá±á·áá»á¬ážááŸá¯ááᯠáááŒáá«á Gartner á ááá·áºááŸááºážáá»ááºááẠááŸááºáááºáááºáᯠáá°áááá¯ááºáááºááá¯ááºáá±á ááŒá®ážáá±á¬á· ááá¹áááŒááŒáááºá ááᯠáá±á¬áºáááºáẠDBMS ááẠáá±á¬ááºážá áœá¬ áá¬á០ááá¯ááºááá¯ááºáá±á¬ ááœááºáá¬ážááŸáá·áºáá°áááºáá°áá±á¬ á¡áá°á¡áááᯠLarry Ellison áᶠááá¯ááºááá¯áẠááœáŸááºááŒá¬ážááá¯ááºááŒá® ááŒá áºáááºá
ááá¯á·áá±á¬áºáááºáž á á¬áá±ážáá°ááẠá á¬ááœááºá á¬áááºážááŸáá·áº ááááºáá¯á¶á á¶áá»á¬ážá¡ááœáẠRDBMS áá¶á·ááá¯ážááŸá¯ááá¯ááºáᬠá¥ááá¬ááœáẠMicrosoft SQL Server ááœáẠáá±á¬áºáááºáá»á¬ážá áœá¬ááᯠáá±á¬áºáááºááºááá·áºááœááºážááŒááºážááᯠááŸá áºáááºáááºá
MS SQL Server ááŸá á á¬ááœááºá á¬áááºážáá¯á¶á á¶
Habre ááœáẠMS SQL Server ááẠá á¬ááœááºá á¬áááºážáá¯á¶á á¶á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºáá¯á¶ááŸáá·áºáááºáááºá áá±á¬ááºážááœááºáá±á¬áá±á¬ááºážáá«ážááŸá áºáá¯ááŸááá¬ážááŒá®ážááŒá áºáááºá áá»áœááºá¯ááºááẠá¡ááá¯áá»á¯á¶ážááŒááºááŒá±á¬ááŒááŒááºážááŸáá·áº ááŸááºáá»ááºáá±ážááŒááºážááá¯á·ááᯠááá·áºáááºááá¯ááºáá«áááºá
SQL Server 2016 ááœáẠJSON ááŸáá·áºá¡áá¯ááºáá¯ááºááŒááºážá SQL Server 2017 JSON
MS SQL Server ááœáẠá á¬ááœááºá á¬áááºážáá¯á¶á á¶ááᯠáá¶á·ááá¯ážáááºáááºážáááºážááẠáááºá áẠDBMS áá»á¬ážá¡ááœáẠá¡áá±á¬áºáá±áž áá¯á¶ááŸááºááŒá áºáááº- JSON á á¬ááœááºá á¬áááºážáá»á¬ážááᯠáá¬áááºá á¬áá¬ážá¡ááœááºáá»á¬ážááœáẠááááºážáááºážááẠá¡ááá¯ááŒá¯áá¬ážáááºá á á¬ááœááºá á¬áááºážáá±á¬áºáááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááẠဠJSON ááá¯ááœá²ááŒááºážá áááºááŒá¬ááẠá¡áá°ážá¡á±á¬áºááá±áá¬áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááºááŒá áºáááº-
scalar attribute áááºááá¯ážáá»á¬ážááᯠáá¯ááºáá°áááºáJSON_VALUE
á á¬áááºážáááºáá»á¬ážááᯠáá¯ááºáá°áááºáJSON_QUERY
á¡á±á¬áºááá±áá¬ááŸá áºáá¯áá¯á¶ážááá¯áááá¡ááŒááºážá¡áá¯á¶ááẠJSONPath áá²á·ááá¯á·áá±á¬á¡áá¬ážá¡ááá¯ááŸáá¡áá¯á¶ážá¡ááŸá¯ááºážáá áºáá¯ááŒá áºáááºá
á€áááºážááŒáá·áº ááááºážáááºážáá¬ážáá±á¬ á á¬ááœááºá á¬áááºážáá»á¬ážááẠtuples ááŸáá·áºááá°áá² áááºááœááºáá±á¬ DBMS ááŸá âááááááºážá á¬ážá¡áá¬áá»á¬ážâ ááá¯ááºáá«á á¡ááá¡áá»á¡á¬ážááŒáá·áºá MS SQL Server ááœáẠJSON á á¬ááœááºá á¬áááºážáá»á¬ážá á¡ááœááºáá»á¬ážáá±á«áºááœáẠáá±á¬áá±á¬ááẠá¡ááœáŸááºážáá»á¬áž áááŸááá«á á€áááºáááºáá»á¬ážá áááºááá¯ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¬ážáá»á¬ážááᯠáá»áááºáááºáááºááŸáá·áº á€áááºááá¯ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ á á¬ááœááºá á¬áááºážáá»á¬ážááá¯ááẠááœá±ážáá»ááºááẠáááºáá²á á±áááºá ááá¯á·áá±á¬áºá ááá¯ááá¯á·áá±á¬á¡ááœááºá¡ááœáẠááœááºáá»ááºáá¬ážáá±á¬áá±á¬áºáá¶áá áºáá¯ááŸáá·áº áááºážááœáẠá¡ááœáŸááºážáá áºáá¯áááºáá®ážááá¯ááºáááºá
ááá¯á·á¡ááŒááºá MS SQL Server ááẠá¡á±á¬áºááá±áá¬ááᯠá¡áá¯á¶ážááŒá¯á ááá¬ážáá»á¬ážá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážá០JSON á
á¬ááœááºá
á¬áááºážááᯠá¡áááºááŒá±á
áœá¬ áááºáá±á¬ááºááá¯ááºá
á±áá«áááºá FOR JSON PATH
áá±á¬ááºáá¯á¶ážááœááºá MS SQL Server ááẠá
á¬ááœááºá
á¬áááºážáááºáá±á¬ááºááŸá¯á ááá·áºáá»ááºáááºááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯ááºá
á±áááº- áááºááẠJSON ááᯠá¡áá¯á¶ážááŒá¯á ááá¬ážáá»á¬ážá¡ááŒá
áºááá¯á· ááŒáá¯ááœá²ááá¯ááºáááºá OPENJSON
CROSS APPLY
.
MS SQL Server ááœáẠááááºáá áºáá¯á¶á á¶
áááẠ(LPG) áá±á¬áºáááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááá¯áááºáž Microsoft SQL Server ááœáẠá¡ááŒáá·áºá¡á á¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážáááºá CREATE TABLE AS NODE
О CREATE TABLE AS EDGE
á¡áá®ážáá®ážá
ááá¬ážááááá¡áá»áá¯ážá¡á
á¬ážááẠááŸááºáááºážáá»á¬ážááá¯ááááºážáááºážáááºá¡ááœáẠáá¬áááºááá¬ážáá»á¬ážááŸáá·áºáááºáá°ááŒá®áž ááŒááºáááœá¬ááŒá¬ážáá»ááºááŸá¬ ááá¬ážááœáẠá
áá
áºá¡ááœááºáá
áºáá¯áá«ááŸáááẠ$node_id
â áá±áá¬áá±á·á
áºá¡ááœááºážááŸá ááááºáá
Ạnode áá
áºáá¯ááá°ážááŒá¬ážáá±á¬áááºááŸááºááŸá¯á
á¡áá¬ážáá°á áá¯áááá¡áá»áá¯ážá¡á
á¬ážáááá¬ážáá»á¬ážááœáẠá
áá
áºá¡ááœááºáá»á¬ážááŸááááºá $from_id
О $to_id
á ááá¯áá²á·ááá¯á·áá±á¬ ááá¬ážáá»á¬ážááœáẠááá·áºááœááºážááŸá¯áá»á¬ážááẠnode áá»á¬ážááŒá¬áž áá»áááºáááºááŸá¯áá»á¬ážááᯠááŸááºážáááºážá
áœá¬ áááºááŸááºáááºá á¡áá»áá¯ážá¡á
á¬ážáá
áºáá¯á
á®á áááºáá¶áá±ážáá»á¬ážááᯠááááºážáááºážááẠáá®ážááŒá¬ážááá¬ážáá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯áááºá
áá«ááᯠá¥ááá¬áá áºáá¯áá²á· á¥ááá¬ááŒááŒáá·áºáá¡á±á¬ááºá áá¯á¶ááœááºááŒáá¬ážááá·áºá¡ááá¯ááºáž ááááºáá áºáá±áá¬ááᯠlayout áá áºáá¯ááŸááá«á á±á ááá¯á·áá±á¬áẠáá±áá¬áá±á·á áºááœáẠáááºááá¯ááºáᬠááœá²á·á ááºážáá¯á¶ááᯠáááºáá®ážááẠá¡á±á¬ááºáá« 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);
ááá¯ááá¬ážáá»á¬ážá á¡ááááá°ážááŒá¬ážáá»ááºááŸá¬ áááºážááá¯á·ááŸáá·áº ááá·áºáá»ááºáááºáá±ážááœááºážáá»á¬ážááœáẠCypher-like syntax ááŒáá·áº ááááºáá¯á¶á
á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠááŒá
áºááá¯ááºááẠ(ááá¯á·áá±á¬áº â*
âá
áááºááŒáá·áº ááá±á¬ááºááœááºáá±ážáá±ážáá«)á á
áœááºážáá±á¬ááºááẠááá¯ááºážáá¬ááŸá¯áá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á á€ááá¬ážáá»á¬ážááœáẠáá±áá¬ááááºážáááºážáá¯á¶ááẠáá¯á¶ááŸááºááá¬ážáá»á¬ážááœáẠáá±áá¬ááááºážáááºážáá¯á¶ááŸáá·áº ááœá¬ááŒá¬ážááŒá®áž ááá¯áá²á·ááá¯á·áá±á¬ ááááºáá
áºáá±ážááŒááºážááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºáááºáá¯áááºáž áá°áááá¯ááºáááºá
SELECT Cafe.name
FROM Person, likes, Cafe
WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
AND Person.name = 'John';
ááá¯á·á¡ááŒááºá ááá¯áá²á·ááá¯á·áá±á¬ááá¬ážáá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá«ááœááºá€ááááºáá¯á¶á
á¶áá»á¬ážááá¯á¡áá¯á¶ážáááŒá¯áááºá¡áá±á¬áºáá±ážáááºáá²áá«áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áºáááºáá°áá±á¬ááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážáááºá¡ááœááºááá¯ážááá¯áž SQL queries áá»á¬ážááœáẠsystem "graph" node identifiers áá»á¬ážáááŸááááºáá±á¬ááºáááºááŒáá¯ážáááºážááŸá¯áá»á¬ážááŒá¯áá¯ááºáááºááá¯á¡ááºáááá·áºááẠ($node_id
, $from_id
, $to_id
; áá°áá®áá±á¬á¡ááŒá±á¬ááºážááŒá±á¬áá·áºá áá±áá¬ááá·áºááœááºážááẠá
á¯á¶á
ááºážáá±ážááŒááºážááŸá¯áá»á¬ážááẠáááá¯á¡ááºáá² áááºáá²áá±á¬ááŒá±á¬áá·áº á€áá±áá¬ááœáẠááŒáááºááá¯ááºáá«á)
MS SQL Server ááŸá á á¬ááœááºá á¬áááºážááŸáá·áº ááááºáá áºáá±á¬áºáááºáá»á¬ážá á¡áá±á¬ááºá¡áááºáá±á¬áºáá±á¬ááºááœááºááŸá¯áá»á¬ážá áá±á¬áºááŒáá»ááºá¡á¬áž á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáááºá á¡ááŒá¬ážáá áºáá¯áá¡áá±á«áºááŸá áá±á¬áºáááºáá áºáá¯á ááá¯ááá¯á·áá±á¬á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááẠá¡áááá¡á¬ážááŒáá·áº áá¬áá¬á áá¬ážáá®ááá¯ááºážá¡ááŒááºá¡á á¡á±á¬ááºááŒááºáá¯á¶ááá±á«áºááŒá±á¬ááºáž áááááŒá¯áááá«áááºá áá¬áá¬á áá¬ážáá áºáá¯ááŸáá·áº á¡ááŒá¬ážáá¬áá¬á áá¬ážáá»á¬ážááᯠááá¯ážáá»á²á·ááẠááá¯á¡ááºááŒá®áž áá¬áá¬á áá¬ážáá»á¬ážááẠáá¯á¶ážá âáá¯á¶ááá¹áá¬ááºâ ááá¯ááºáá±á¬ááŒá±á¬áá·áº ááá¯ááºáááºáá®áá±á¬ á ááºážáá»ááºážáá»á¬ážááẠá¡ááœááºáá°ážááŒá¬ážááá¯ááºáááºá
á á¬ááœááºá á¬áááºážáá±á¬áºáááºá¡áá±á«áºá¡ááŒá±áá¶ááŒá®áž Multi-model DBMS
á€ááá¹áááœááºá áááºážááá¯á·áá²á០áá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶ážááá¯ááºáá±á¬ MongoDB á á¥ááá¬ááᯠá¡áá¯á¶ážááŒá¯á á
á¬ááœááºá
á¬áááºáž DBMS ááœáẠáá±á¬áºáááºáá±á«ááºážáá»á¬ážá
áœá¬á á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááá¯ááºáá±á¬áºááá¯áá«áááºá $lookup
О $graphLookup
ááœá²ááŒááºážá
áááºááŒá¬áá¬ážáá±á¬ á
á¯áá±á¬ááºážááŸá¯áá»á¬ážááœáẠá¡áá¯ááºááá¯ááºáá«) ááá¯á·áá±á¬áº ááá¯ááá¯ááá·áºáá»ááºááŒá®áž "áá¯ááºáááºáž" DBMS á á¥ááá¬ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
ááá¯á·ááŒá±á¬áá·áºá á á¯á ááºážááŸá¯ááœáẠá¡á±á¬ááºáá«á¡áá»áá¯ážá¡á á¬ážá XML á á¬ááœááºá á¬áááºážá¡á á¯á¶áá«ááŸááá«á á± (MarkLogic á០JSON á á¬ááœááºá á¬áááºážáá»á¬ážááᯠááááºážáááºážáá¬ážááá¯ááºáááº)á
<Person INN="631803299804">
<name>John</name>
<surname>Smith</surname>
</Person>
MarkLogic ááŸá áááºá ááºáá¯á¶á á¶
á
á¬ááœááºá
á¬áááºážáá»á¬ážá
á¯á
ááºážááŸá¯á áááºá
ááºá¡ááŒááºááᯠá¡áá¯á¶ážááŒá¯á áááºáá®ážááá¯ááºáááºá value
á¡á±á¬ááºáá«á¥ááá¬ááœáẠarbitrary 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 query áá áºáá¯ááŒáá·áº áááºáá®ážáá¬ážáá±á¬ ááŒááºááœááºážááᯠáááºááŒá±ááŸááºážááá¯ááºááẠ(á¥ááá¬á ODBC ááŸáááá·áº)
SELECT name, surname FROM Person WHERE name="John"
áá¶ááá±á¬ááºážá
áœá¬ááŒáá·áºá áááºáá¬ážááŒááºáá¯á¶á
á¶áá¯á¶á
á¶á០áááºáá®ážáá¬ážááá·áº áááºá
ááºááŒááºááœááºážááẠáááºáááºáá¬ááŒá
áºáááºá áááºážá¡ááœáẠáá±á¬ááºážááá¯áá»ááºááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá«á MarkLogic ááᯠá¡áá¯á¶ážááŒá¯ááẠááŒáá¯ážá
á¬ážáá«áááºá
MarkLogic ááŸá ááááºáá áºáá±á¬áºáááº
áááẠ(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>
SPARQL áá±ážááŒááºážááŸá¯ááŒáá·áº áááŸááá¬áá±á¬ RDF ááááºááᯠáááºááŒá±ááŸááºážááá¯ááºáááº-
PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
:631803299804 :name ?name ; :surname ?surname .
}
áááºá ááºááŸá¯áá áºáá¯ááŸáá·áºááá°áá² MarkLogic ááẠááááºáá¯á¶á á¶ááᯠá¡ááŒá¬ážáááºážáááºážááŸá áºáá¯ááŒáá·áº áá¶á·ááá¯ážáááº-
- DBMS ááẠRDF áá±áá¬á á¡ááŒáá·áºá¡á áá®ážááŒá¬ážááá¯ááŸá±á¬ááºááŸá¯áá
áºáᯠááŒá
áºááá¯ááºááẠ(áááºážááœáẠáá±ážáááºáá±á¬ á¡ááœá²áá»á¬ážááᯠáá±á«áºáá«áááºá
á á®áá¶áááºá·ááœá² á¡áááºáá±á¬áºááŒáá«á¡áá»ááºáá»á¬ážááŸáá·áº ááá·áºáá»ááºáááºááŒá áºáááºááá¯ááºáá° ). - á¡áá°ážá¡ááŸááºá¡áá¬ážááŒá¯ááŒááºážááœáẠRDF ááᯠXML ááá¯á·ááá¯áẠJSON á
á¬ááœááºá
á¬áááºážáá»á¬ážáá²ááá¯á· ááá¯ážááá¯ážááŸááºážááŸááºáž ááá·áºááœááºážááá¯ááºááẠ(ááá¯á·áá±á¬áẠáá¯á¶ážááá¯áá±á«áºáááº
á á®áá¶ááá¬áž ) áááºážááẠááá¹ááá¬ážáá»á¬ážá¡ááœáẠá¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá áºáᯠááŒá áºááá¯ááºáááºáidref
áá«ááœá¬ážá
MarkLogic ááŸá¡áá¬áá»á¬áž "ááááº" á¡áá¯ááºáá¯ááºáá¯á¶ááá±á¬ááºážáá±á¬á
áááºáá°áž
Multi-model DBMS "áááºááá±á¬áºáááºááá«áá²"
á
á»á±ážááœááºááœáẠDBMS áá»á¬ážááẠáááºážááá¯á·ááᯠá¡ááœá±áááºáá¶áá¬ážáá±á¬ áááºááá±á¬áºáááºááá«áá² áááŠážáá¯á¶á
á¶áá»áá¯ážá
á¯á¶á¡ááŒá
ẠáááºááŸááºáá±ážááá·áº DBMS áá»á¬ážáááºáž ááŸááá«áááºá áááºážááá¯á· áá«áááºáááºá
ááááºáá±á¬á·á ArangoDB ááŸáá·áº OrientDB ááœáẠ"core" áá±á¬áºáááºáá»á¬ážááŸááááºá ááŒá áºáááºááŸá áºáá¯á áá¯á¶ážááœááºá áááºážááá¯á·ááẠáááºážááá¯á·áááá¯ááºááá¯ááºáá±áá¬áá±á¬áºáááºáá»á¬ážááŒá áºááŒá®ážá á á¬ááœááºá á¬áááºážáá áºáá¯á áá±áá¯áá»áá±á¬áºááŒáá»ááºáá»á¬ážááŒá áºáááºá áá±áá°áá»áááºááŸááºááŸá¯áá»á¬ážááẠá¡áááá¡á¬ážááŒáá·áº ááááºáá áºáá¯ááŸáá·áº áááºááœáŸááºááŸá¯ááá±á¬ááá¬áá áá±ážááŒááºážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºá á±ááẠááœááºáá°áá»á±á¬ááœá±á·á á±áááºááŒá áºáááºá
á€áá±á¬áºáááºáá»á¬ážááẠáááºááŸááºáá¬ážáá±á¬ DBMS ááœáẠá¡áá¯á¶ážááŒá¯ááẠáá áºáá¯áááºážáá±á¬ á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŒá áºáááº; áááºážááá¯á·á ááá¯ááºááá¯áẠquery languages ââáá»á¬ážááẠáááºážááá¯á·ááŸáá·áº á¡áá¯ááºáá¯ááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá áá¯ááºáá«áááºá ááá¯áá²á·ááá¯á·áá±á¬ áá±á¬áºáááºáá»á¬ážááŸáá·áº DBMS áá»á¬ážááẠá¡áá¬ážá¡áá¬áá±á¬ááºážáá»á¬áž ááŸááá±á¬áºáááºáž á á¶áá±á¬áºáááºáá»á¬ážááŸáá·áº áá¬áá¬á áá¬ážáá»á¬ážááŸáá·áº ááá¯ááºáááºáá®ááŸá¯ áááŸáááŒááºážááŒá±á¬áá·áº á¡ááá¯áá« DBMSs áá»á¬ážááᯠá¡ááœá±á¡ááŸá áºá áá áºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááẠáááŒá áºááá¯ááºáá²âááá¯áá±áá¬ááœáẠá¡áá¯á¶ážááŒá¯ááŒá®ážáá¬áž DBMSs áá»á¬ážááᯠá¡á á¬ážááá¯ážááẠáááŒá áºááá¯ááºáá±á
Habré ááœáẠArangoDB ááŸáá·áº OrientDB á¡ááŒá±á¬ááºáž á¡á¶á·ááŒááœáẠáá±á¬ááºážáá«ážáá
áºáá¯áẠááŸááá±ááŒá®ááŒá
áºáááºá
ArangoDB
ArangoDB ááẠááááºáá±áá¬áá±á¬áºáááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáá±á¬ááºážááá¯áá¬ážáááºá
ArangoDB ááŸá ááááºáá
áºáá¯á áá¯á¶ááŸááºáá»á¬ážááẠáá¬áááºá
á¬ááœááºá
á¬áááºážáá»á¬ážááŒá
áºááŒá®áž á¡á
áœááºážáá»á¬ážááẠáá¯á¶ááŸááºá
áá
áºáááºáááºáá»á¬ážááŸáá·áºá¡áá° áá«ááŸáááá·áº á¡áá°ážá¡áá»áá¯ážá¡á
á¬ážá á
á¬ááœááºá
á¬áááºážáá»á¬ážááŒá
áºááẠ(_key
, _id
, _rev
) á
áá
áºáááºáááºáá»á¬áž _from
О _to
. Document DBMS áá»á¬ážááœáẠá
á¬ááœááºá
á¬áááºážáá»á¬ážááᯠá¡á
ááºá¡áá¬á¡á¬ážááŒáá·áº á
á¯á
ááºážááŸá¯áá»á¬ážá¡ááŒá
Ạáá±á«ááºážá
ááºáá¬ážáááºá á¡á
áœááºážáá»á¬ážááá¯ááá¯ááºá
á¬ážááŒá¯áá±á¬ á
á¬ááœááºá
á¬áááºážáá»á¬ážá
á¯á
ááºážááŸá¯áá»á¬ážááᯠArangoDB ááŸá edge collections áá¯áá±á«áºáááºá á
áá¬ážáá
ááºá edge collection document áá»á¬ážááẠdocument áá»á¬ážááŒá
áºáááºá ááá¯á·ááŒá±á¬áá·áº ArangoDB ááŸá edges áá»á¬ážááẠnode áá»á¬ážá¡ááŒá
Ạáá¯ááºáá±á¬ááºááá¯ááºáááºá
ááá¥á®ážáá±áá¬
á
á¯á
ááºážááŸá¯áá
áºáá¯ááŸáááŒáá«á
áá¯á· 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
}
]
áá±ážááœááºážáá»á¬ážááŸáá·áºááááºáá»á¬áž
ArangoDB ááœááºá¡áá¯á¶ážááŒá¯ááá·áº AQL áá¬áá¬á áá¬ážááœáẠááááºáá¯á¶á á¶áá±ážáá»ááºáá áºáá¯ááẠáááºááá·áº áá±á¬áºáá®ááá¯ááºááᯠááŸá áºáááºáááºááŸáá·áº áááºáááºááá·áº áá°áá¬ážáááºááá¯ááºáá±á¬ áá±á¬ááºáá¯á¶á ᶠá¡áá»ááºá¡áááºááŒáá·áº ááŒááºáá±ážáááºááŸá¬ á€áá²á·ááá¯á· ááŒá áºáááº-
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
OrientDB ááŸá á
á¬ááœááºá
á¬áááºážáá±á¬áºáááºáá
áºáá¯áááááºááœáẠááááºáá¯á¶á
á¶áá
áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááœáẠá¡ááŒá±áá¶á¡áá»ááºááŸá¬ LINK
, LINKLIST
, LINKSET
, LINKMAP
О LINKBAG
. á€á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááááºááá¯ážáá»á¬ážááẠááá·áºááºáá»á¬áž ááá¯á·ááá¯áẠááá·áºááºáá»á¬áž á
á¯á
ááºážááŸá¯áá»á¬ážááŒá
áºáááºá
á
áá
áºááŸáááºááŸááºáá±ážáá¬ážáá±á¬ á
á¬ááœááºá
á¬áááºážá¡ááŸááºá¡áá¬ážááẠáá±áá¬áá±á·á
áºááŸá ááŸááºáááºážá áááºáá±áá¬ááᯠááœáŸááºááŒáá±á¬ "áá¯ááºááá¯ááºážááá¯ááºáᬠá¡áááá¹áá¬ááº" ááŸáááŒá®áž á€áá²á·ááá¯á· áá
áºá
á¯á¶áá
áºáᯠááŸááááº- @rid : #3:16
. ááá¯á·ááŒá±á¬áá·áºá áááºááœáŸááºážáá¯ááºááá¹áááá»á¬ážááááºááá¯ážáá»á¬ážááẠááœá±ážáá»ááºááŸá¯á¡ááŒá±á¡áá±áá»á¬áž (áááºá
ááºáá¯á¶á
á¶ááœááºáá²á·ááá¯á·) á¡á
á¬áž á¡ááŸááºááááºááœáŸááºážááááºážáá»á¬áž (ááááºáá¯á¶á
á¶ááœááºáá²á·ááá¯á·) ááŒá
áºáááºá
ArangoDB áá²á·ááá¯á·áááºá OrientDB ááŸá á¡á
áœááºážáá»á¬ážááᯠáá®ážááŒá¬ážá
á¬ááœááºá
á¬áááºážáá»á¬ážá¡ááŒá
Ạááá¯ááºá
á¬ážááŒá¯ááẠ(á¡á
áœááºážáá
áºáá¯ááœáẠáááºážáááá¯ááºááá¯ááºáá¯ááºááá¹áááá»á¬ážáááŸááá«áá áááºážááᯠááŒá¯áá¯ááºááá¯ááºáááºá
ááá¥á®ážáá±áá¬
áá®ážá
ááºáá²á·áá¯á¶á
á¶áá²á·áá«á
[
{
"@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"
}
]
áá»áœááºá¯ááºááá¯á·ááŒááºááá¯ááºáááºá¡ááá¯ááºážá áá±á«ááºááá¯ááºáá»á¬ážááẠá¡áááºááŸáá·áºá¡ááœááºá¡áá¬ážáá»á¬ážá¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºáá»á¬ážááᯠááááºážáááºážáá«áááºá ááŸá¬
áá±ážááœááºážáá»á¬ážááŸáá·áºááááºáá»á¬áž
OrientDB ááŸá ArangoDB á¡ááœáẠááá°áá¬á០á á¯á¶á ááºážáá±ážááŒááºážáá»ááºááŸáá·áº áááºáá°áá±á¬ query ááẠá€áá²á·ááá¯á· ááŒá áºáááº-
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 á áá±ážááŒááºážááŸá¯áá¬áá¬á
áá¬ážááᯠGremlin áá²á·ááá¯á· ááá·áºááœááºážááŸá¯áá»á¬ážááŒáá·áº SQL á¡ááŒá
Ạáá±á¬áºááŒááá¯ááºáá«áááºá áá¬ážááŸááºáž 2.2 ááœááºá Cypher-like áá±á¬ááºážááá¯ááŸá¯áá¯á¶á
á¶áá
áºáá¯áá±á«áºáá¬áááºá 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 á¡ááœááºážááá¯ááºážáá±á¬áºáááºáá±á¬áºáááºááœáẠááááºážáááºážáááº-
ááá¯á·áá±á¬áº á¡áá¯á¶ážááŒá¯áá°á០ááœá±ážáá»ááºáá¬ážáá±á¬ áá±áá¬áá±á¬áºáááºááŸáá·áº á¡áá¯á¶ážááŒá¯ááá·áº API ááᯠáááºáá±á¬ááºááŸá¯ááœáẠá¡áá±á¬áá·áºáá áºáᯠáááºáá®ážáá»áááºááœáẠááŒá¯ááŒááºáá¬ážáááºá á€áá²á·ááá¯á·áá±á¬á¡áá¬áá»á¬ážááŒáá·áº áá¯á¶ááŒáá¬ážááá·áºá¡ááá¯ááºáž áá±á¬áºáááºáá áºáá¯ááœáẠáááºáá¬ážáá±á¬áá±áá¬ááᯠá¡ááŒá¬ážáá±á¬áºáááºááá±á¬áºáááºááœáẠáááºáá±á¬ááºááŒáá·áºááŸá¯ááẠáááŒá áºááá¯ááºáá«-
ááá¯á·ááŒá±á¬áá·áº ááá±á· Azure CosmosDB ááœáẠáá±á¬áºáááºáá»áá¯ážá á¯á¶ááẠáá¯ááºáá¯ááºáá°áá áºáá¯á០ááá°áá®áá±á¬ áá±á¬áºáááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááá·áº áá±áá¬áá±á·á áºáá»á¬ážá áœá¬ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº á áœááºážáááºáá¬ááŒá áºááŒá®áž áá»áá¯ážá á¯á¶áá±á¬ ááá¯ááŸá±á¬ááºááŸá¯ááá¯ááºáᬠááŒá¿áá¬á¡á¬ážáá¯á¶ážááᯠááŒá±ááŸááºážááá±ážááá¯ááºáá«á
ááááºáá±á¬áºáááºá¡áá±á«áºá¡ááŒá±áá¶ááá·áº Multi-model DBMS?
ááááºáá±á¬áºáááºá¡áá±á«áºá¡ááŒá±áá¶ááá·áº á
á»á±ážááœááºááœáẠáá±á¬áºáááºáá»áá¯ážá
á¯á¶ DBMSs áá»á¬áž áááŸááá±ážááŒá±á¬ááºáž (ááááºáá±á¬áºáááºááŸá
áºáá¯ááᯠáááŒáá¯ááºáááºáááºáž áá±á¬áºáááºááºáá±á«ááºážáá»á¬ážá
áœá¬ áá¶á·ááá¯ážááŸá¯ááŸááœá²á áá»ááº- RDF ááŸáá·áº LPGá á€á¡áá¬ááᯠááŒáá·áºáá«á
ááááºáá±á¬áºáááºáááááºááœáẠáááºááœáŸááºááŸá¯áá¯á¶á
á¶áá
áºáá¯ááᯠáááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºááááºááá¯ááá·áºáá±ážááœááºážááᯠáá±á¬ááºááá¯ááºážááœááºááœá²á·á
ááºážá
ááºááœááºááẠááá·áºááœááºážá
ááºážá
á¬ážáá²á·áááºá áááºááá¯áá²
(á¥ááá¬- ááá·áºáá»á±á¬áºáá±á¬ á¡ááœáŸááºážááááºážááŒá¯áá¯ááºááŒááºážááŒáá·áº) ááááºáá±áá¬áá±á·á áºááœáẠá¡ááœáŸá¬áá áºáá¯áááºáá®ážááŒááºážááᯠááá·áºáá¬ážááá·áº ááááºáá»ááºážáááºááŸá¯ááœáẠ(á) áá¯á¶ááŸááºáá±á¬á·áááºááá¯ážá¡ááœá²áá»á¬ážá០tuple áá»á¬ážááᯠááŒááºáááºááá°ááŒááºážááŸáá·áº (á) á¡á¯ááºá á¯ááœá²á·ááŒááºážá áááºá ááºá¡áá»áá¯ážá¡á á¬ážá¡ááá¯áẠtuplesá
ááááºáá±á¬áºáááºáá áºáá¯áááááºááœáẠá á¬ááœááºá á¬áááºážáá¯á¶á á¶áá áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá·áºá¡áá«á á¥ááá¬á á¡á±á¬ááºáá«ááá¯á·ááᯠááŸááºáá¬ážáá¬ážáááºááá¯áááº-
- JSON á¡áááºážá¡áá»ááºážáá áºáá¯áááŒááºá ááºáá»á¬ážááᯠá á®á á¥áºáá¬ážáááºáᯠáá°ááá±á¬áºáááºáž ááááºáá¡á áœááºážá áœááºážá០ááœááºáá¬ááá·áºá¡áá¬áá»á¬ážááẠááá¯ááºáá«á
- á á¬ááœááºá á¬áááºážáá¯á¶á á¶ááŸá áá±áá¬áá»á¬ážááᯠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº áááŸááºáá±á¬á·áá²á áá°áá®áá±á¬ ááŒáŸá¯ááºááœááºážáá¬ážáá±á¬ á á¬ááœááºá á¬áááºážá áááá¹áá°áá»á¬ážá áœá¬ááᯠááẠáááááºážáááºážáá»ááºáá±ážáá«á á á¬áááºážáááºáá»á¬ážááœáẠá¡áá»á¬ážá¡á¬ážááŒáá·áº ááœá²ááŒá¬ážáááºááŸááºááŸá¯áá»á¬áž áááŸááá«á
- á¡ááŒá¬ážáá áºáááºááœááºá á á¬ááœááºá á¬áááºáž DBMSs áááá±á¬ááá¬ážááŸá¬ á á¬ááœááºá á¬áááºážáá»á¬ážááẠá¡ááŒáááºááá¯ááºážá¡áá áºáááºáá±á¬ááºáááºáááá¯á¡ááºáá² á¡áááºááá·áºáá¯ááºáá¬ážááá·áº âá á¯á ááºážáá»á¬ážâ ááŒá áºááẠá ááŒá®ážááœá¬ážáá±á¬á á¬ááœááºá á¬áááºážááŸáá·áºáááºááá¯ááºáá±á¬ á¡ááá¯ááºááœá²áá áºáá¯ááᯠáá»ááºááŒááºá áœá¬áááŸáááá¯ááºá á±ááẠááááºáá±á¬áºáááºááᯠáá¶á·ááá¯ážáá±ážááẠááá¯á¡ááºáá«áááºá
ááŒá±á¬áºááŒá¬áááºážáááºáž
áá±á¬ááºážáá«ážáá±ážáá¬ážáá°ááẠNitrosBase DBMS á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº áááºá ááºáá±ááŒá®ážá á¡ááœááºážááá¯ááºážáá¯á¶á á¶ááŒá áºááá·áº ááááºá ááŸáá·áº áááºá ááºááŸá¯ááŸáá·áº á á¬ááœááºá á¬áááºáž- ááŒááºááá±á¬áºáááºáá»á¬ážááẠáááºážáááá¯ááºá á¬ážááŒá¯ááŸá¯áá»á¬ážááŒá áºáááºá áá±á¬áºáááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠáá°áá®áááº- áááºážá¡ááœáẠááá¬ááá»áá±á¬ query language ááᯠá¡áá¯á¶ážááŒá¯á áááºážááá¯á·á¡áááºá០áááºááá·áºáá±áá¬áááᯠáááŸáááá¯ááºáá«áááºá ááá¯á·á¡ááŒááºá áááºááá·áºá¡ááŒááºááœááºáááá¯áá±áá¬ááá¯ááŒá±á¬ááºážáá²ááá¯ááºáááºá á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááẠá¡ááœááºážááá¯ááºážáá¯á¶á á¶ááœáẠáááºáááºá á±áááºááŒá áºááŒá®áž á¡ááŒá¬ážá¡ááŒááºáá»á¬ážááœááºáááºáž áááºáááºáááºááŒá áºáááºá
á¡á±á¬ááºáá±á¬áºááŒáá« áá±á¬ááºážáá«ážáá»á¬ážáá²á០áá áºáá¯ááœáẠNitrosBase ááœáẠáá±á¬áºáááºááŸáá·áº ááá¯ááºáá®ááá·áº áá¯á¶á á¶ááᯠáá±á¬áºááŒáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá
áá±á¬ááºáá»ááº
Multi-modeling áá¯áá±á«áºáá±á¬ áá±áá¯áá»á¡áá»ááºáá»á¬ážááᯠá á¬áááºáá°á¡ááœáẠááá¯á ááá¯á·ááá¯áẠáááºážáá«ážáá¬á á±ááẠáá»áŸá±á¬áºááá·áºáá«áááºá Multi-model DBMSs áá»á¬ážááẠá¡áá±á¬áºáá±ážááœá²ááŒá¬ážááŒá®áž "multi-model support" ááẠááœá²ááŒá¬ážááá¯ááºáááºá áá®ážááŒá¬ážááá á¹á áá áºáá¯á á®ááœáẠ"multi-model" áá¯áá±á«áºáááºááá¯áá¬ážáááºáááºá á¡á±á¬ááºáá«áá±ážááœááºážáá»á¬ážááá¯ááŒá±ááá¯ááẠá¡áá¯á¶ážáááºáááº-
- ááá¬ážááá¯ážáá» áá±á¬áºáááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááŒááºáž ááá¯á·ááá¯áẠ"áá±á«ááºážá ááº" áá±á¬áºááẠáá áºáá»áá¯ážáá»áá¯ážááᯠáá»áœááºá¯ááºááá¯á· ááŒá±á¬áá±áá«ááá¬ážá
- áá±á¬áºáááºáá»á¬ážááẠ"áááºážáá°" ááá¯á·ááá¯áẠáááºážááá¯á·á¡áááºá០áá áºáá¯ááẠá¡ááŒá¬ážá¡áá¬áá»á¬ážá á¡áááºážáá¶ááŒá áºáá«ááá¬ážá
- áá±á¬áºáááºáá»á¬ážááẠáá áºáá±á¬ááºááŸáá·áºáá áºáá±á¬áẠ"ááá°ážááŒá¬áž" áá«ááá¬ážá áá±á¬áºáááºáá áºáá¯ááœáẠáá±ážáá¬ážáá±á¬ á¡áá»ááºá¡áááºááᯠá¡ááŒá¬ážáá áºáá¯ááœáẠáááºááá¯ááºááẠááá¯á·ááá¯áẠáááºáá±ážááá¯ááºáá«ááá¬ážá
Multi-model DBMS ááááºá ááºááŸá¯ááŸáá·áºáááºáááºááá·áºáá±ážááœááºážááᯠá¡ááŒá¯ááá±á¬ááŒáá·áºááŒá±ááá¯ááºáá±ááŒá®áᯠáá»áœááºáá±á¬áºáááºáá«áááºá ááá¯á·áá±á¬áº á áááºáááºá á¬ážá áá¬áá±á¬ááºážááá·áºáá±ážááœááºážááŸá¬ áááŒá¬áá®áá¬áááœáẠáááºážááá¯á·ááẠáááºááá·áºá¡áá»áá¯ážá¡á á¬ážáá»á¬áž ááá¯ááá¯áá±á¬ááºážááá¯áá¬áááºáááºážá ááá¬ážááá¯ážáá» áá±á¬áºáááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááá·áº áá±á¬áºáááºáẠDBMS á¡áá»á¬ážá¡ááŒá¬ážááẠá¡áááá¡á¬ážááŒáá·áº áááºááœáŸááºááŸá¯ááŸááá±á¬ ááá¯á¡ááºáá»áẠááá¯áá»á¬ážáááá·áºáááºá áá±á¬áºáááºáá»áá¯ážá á¯á¶ DBMS áá»á¬ážá áá±áááºážá á¬ážááŸá¯ááẠááá¯ážáá¬á¡áá»áá¯ážáá»áá¯ážá á¡á¬ážáá¬áá»ááºáá»á¬ážááᯠáá±á«ááºážá ááºáá¬ážááá·áº áá±á¬áºáááºá¡áá áºáá»á¬ážááᯠáá±ážáá±á¬ááºááŒááºážááẠááá¯ááá¯áá±ážááœá¬áá±á¬ á¡áá¬áááºá ááá á¹á ááŒá áºáááºá
á
á¬áááºážááœááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážáᬠá
á
áºáááºážááœáẠáá«áááºááá¯ááºáá«áááºá
áááºááẠMulti-model DBMS ááá¯á¡áá¯á¶ážááŒá¯áá«ááá¬ážá
-
áááºážááá¯áá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážáááŒá¯áá«á á¡á¬ážáá¯á¶ážááᯠDBMS áá áºáá¯ááŸáá·áºáá±á¬áºáááºáá áºáá¯ááœááºááááºážáááºážáá«áááºá
-
áá»áœááºá¯ááºááá¯á·ááẠááá¬ážááá¯ážáá» DBMSs áá»á¬ážá áá±á¬áºáááºááºáá»á¬ážá áœá¬ á áœááºážáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
-
áá»áœááºá¯ááºááá¯á·ááẠpolyglot ááá¯á áœá²ááŒá²á áœá¬áá±á·áá»áá·áºáááºá
-
áá»áœááºá¯ááºááá¯á·ááẠáá±á¬áºáááºá¡áá ẠDBMS (Arangoá Orientá CosmosDB) ááá¯á¡áá¯á¶ážááŒá¯áááº
á¡áá¯á¶ážááŒá¯áá° ááá áŠáž áá²áá±ážáá²á·áááºá á¡áá¯á¶ážááŒá¯áá° 19 áŠáž ááŒá¬ážáá±áá²á·áá«áááºá
source: www.habr.com