ΠΠ°Π»ΠΈΡΠ½ΠΎ Π΅ ΠΏΡΡΠ²ΠΎΡΠΎ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π‘Π£ΠΠ EdgeDB, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π΄ΠΎΠ±Π°Π²ΠΊΠ° ΠΊΡΠΌ PostgreSQL Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π΅Π½ Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ Π΅Π·ΠΈΠΊ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ EdgeQL, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΎΠ΄ΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Python ΠΈ Rust ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Apache 2.0. ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Python, Go, Rust ΠΈ TypeScript/Javascript. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π‘Π£ΠΠ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ (REPL).
ΠΠΌΠ΅ΡΡΠΎ ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ, EdgeDB ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΠ±Π΅ΠΊΡΠΈ. ΠΠΌΠ΅ΡΡΠΎ Π²ΡΠ½ΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅Π· ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠ° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ (Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½Π° Π΄ΡΡΠ³ ΠΎΠ±Π΅ΠΊΡ). type Person { ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ -> str; } ΡΠΈΠΏ Π€ΠΈΠ»ΠΌ { Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ -> str; Π°ΠΊΡΡΠΎΡΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΠ·ΠΊΠΈ -> Π§ΠΎΠ²Π΅ΠΊ; }
ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ ΡΠΈΠ»Π½ΠΎ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ°, ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ. Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΡ Π΅ΠΌΠ°ΡΠ° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ EdgeDB, ΠΊΠΎΡΡΠΎ Π΄ΠΎΠ½ΡΠΊΡΠ΄Π΅ Π½Π°ΠΏΠΎΠΌΠ½Ρ Π½Π° ORM, Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠΌΠ΅ΡΠ²Π°Π½Π΅ Π½Π° ΡΡ Π΅ΠΌΠΈ, ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° JSON.
ΠΡΠΈΠ³ΡΡΠ΅Π½ΠΈ ΡΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° ΡΡ Π΅ΠΌΠ° - ΡΠ»Π΅Π΄ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΡ Π΅ΠΌΠ°ΡΠ°, ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ esdl ΡΠ°ΠΉΠ», ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βedgedb migration createβ ΠΈ Π‘Π£ΠΠ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ Π² ΡΡ Π΅ΠΌΠ°ΡΠ° ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠΊΡΠΈΠΏΡ Π·Π° ΠΌΠΈΠ³ΡΠΈΡΠ°Π½Π΅ ΠΊΡΠΌ Π½ΠΎΠ²Π° ΡΡ Π΅ΠΌΠ°. ΠΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΡ Π΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ.
ΠΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΊΠ°ΠΊΡΠΎ Π΅Π·ΠΈΠΊΡΡ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ GraphQL, ΡΠ°ΠΊΠ° ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΡ Π΅Π·ΠΈΠΊ EdgeDB, ΠΊΠΎΠΉΡΠΎ Π΅ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ Π½Π° SQL Π·Π° ΠΉΠ΅ΡΠ°ΡΡ
ΠΈΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΏΠΈΡΡΡΠΈ, ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ Π½Π°ΡΠΈΠ½ ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠΈ ΠΈ JOIN, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π΅Π΄Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π½Π° EdgeQL ΠΊΠ°ΡΠΎ ΠΈΠ·ΡΠ°Π· Π² Π΄ΡΡΠ³Π° Π·Π°ΡΠ²ΠΊΠ°. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ ΡΠΈΠΊΠ»ΠΈ. select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", actors := ( select Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } Π·Π° ΡΠΈΡΠ»ΠΎ Π² {0, 1, 2, 3} ΡΡΡΠ· ( ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ { number, number + 0.5 } );
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru