ΠΠ»Ρ PostgreSQL ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ AGE (AgensGraph-Extension) Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠ·ΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² openCypher Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΈΡ
Π΄Π°Π½Π½ΡΡ
, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ
Π³ΡΠ°Ρ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΡΡΡΠΎΠΊ Π³ΡΠ°ΡΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΡΠ΅ ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡ
ΠΎΠΆΡΡ Π½Π° ΡΠ΅ΡΡ — Π·Π°Π΄Π°ΡΡΡΡ ΡΠ·Π»Ρ, ΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ. AGE ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Bitnine ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡΠΎΠ²ΠΈΡΠ΅Π»ΡΡΡΠ²ΠΎ Π€ΠΎΠ½Π΄Π° Apache ΠΈ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠ½ Π² ΠΈΠ½ΠΊΡΠ±Π°ΡΠΎΡ Apache.
ΠΡΠΎΠ΅ΠΊΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π‘Π£ΠΠ AgensGraph, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΎΠ² ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ PostgreSQL. ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ AGE Π² ΡΠΎΡΠΌΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°Π΄ ΡΡΠ°ΡΠ½ΡΠΌΠΈ Π²ΡΠΏΡΡΠΊΠ°ΠΌΠΈ PostgreSQL. ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π΄Π½ΡΡ
Π²ΡΠΏΡΡΠΊ Apache AGE 0.2.0 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ PostgreSQL 11.
Π ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ AGE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² Cypher, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ «CREATE» Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ «MATCH» Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½ΡΡ
Π² Π³ΡΠ°ΡΠ΅ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ (WHERE), Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (ORDER BY) ΠΈ Ρ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ (SKIP, LIMIT). Π Π΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ
, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ Π·Π°ΠΏΡΠΎΡΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ «RETURN». ΠΠ»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΏΠΎΡΠΊΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ «WITH».
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΠ, ΡΠΎΡΠ΅ΡΠ°ΡΡΠΈΡ
ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π² ΡΠΎΡΠΌΠ΅ Π³ΡΠ°ΡΠ°, ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² SQL ΠΈ Cypher.
ΠΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² Π²Π΅ΡΡΠΈΠ½ ΠΈ ΡΡΠ±Π΅Ρ Π³ΡΠ°ΡΠ°.
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠΈΠΏΠΎΠ² Agtype, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ ΡΠΈΠΏΡ Π΄Π»Ρ ΡΡΠ±Π΅Ρ, Π²Π΅ΡΡΠΈΠ½ ΠΈ ΠΏΡΡΠ΅ΠΉ Π² Π³ΡΠ°ΡΠ΅. ΠΠ³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ. Π‘ΡΠ΅Π΄ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ: id, start_id, end_id, type, properties, head, last, length, size, startNode, endNode, timestamp, toBoolean, toFloat, toInteger ΠΈ coalesce.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru