ИзданиС Π½Π° Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ-Π³Ρ€Π°Ρ„ΠΎΠ²Π° Π‘Π£Π‘Π” EdgeDB 2.0

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ Π΅ Ρ€Π΅Π»ΠΈΠ· Π½Π° Π‘Π£Π‘Π” EdgeDB 2.0, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‰Π° Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ-Π³Ρ€Π°Ρ„ΠΎΠ²Π°Ρ‚Π° ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ Π΅Π·ΠΈΠΊ Π·Π° запитвания EdgeQL, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° със слоТни ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° Π΅Π·ΠΈΡ†ΠΈ Python ΠΈ Rust (парсСр ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π·Π° производитСлността части) ΠΈ сС разпространява ΠΏΠΎΠ΄ лицСнция Apache 2.0. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΊΠ°Ρ‚ΠΎ надстройка Π²ΡŠΡ€Ρ…Ρƒ PostgreSQL. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° Π΅Π·ΠΈΡ†ΠΈ Python, Go, Rust ΠΈ TypeScript/Javascript. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Ρ сС инструмСнтарий Π½Π° командния Ρ€Π΅Π΄ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π‘Π£Π‘Π” ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ изпълнСниС Π½Π° запитвания (REPL).

ВмСсто ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, Π² EdgeDB сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Π° систСма, основаваща сС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅. ВмСсто външни ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ (foreign key) Π·Π° опрСдСлянС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Ρ‡Ρ€Π΅Π· Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ (Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΊΠ°Ρ‚ΠΎ свойство Π½Π° Π΄Ρ€ΡƒΠ³ ΠΎΠ±Π΅ΠΊΡ‚).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Π—Π° ускоряванС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° заявкитС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ индСкси. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ строг типизация Π½Π° свойствата, ограничСния Π½Π° стойноститС Π½Π° свойствата, изчислСни свойства ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ. Π‘Ρ€Π΅Π΄ особСноститС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½Π°Ρ‚Π° схСма Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² 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’ } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия:

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ ΡƒΠ΅Π± интСрфСйс Π·Π° администриранС Π½Π° Π‘Π”, позволяващ ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, изпълнСниС Π½Π° EdgeQL запитвания ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π°Ρ‚Π° схСма Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡŠΡ‚ сС стартира с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«edgedb uiΒ», слСд ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° която става Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€ΡŠΡ‰Π΅Π½ΠΈΠ΅ към localhost.
    ИзданиС Π½Π° Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ-Π³Ρ€Π°Ρ„ΠΎΠ²Π° Π‘Π£Π‘Π” EdgeDB 2.0
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π΅ ΠΈΠ·Ρ€Π°Π·Π΅Π½ΠΈΠ΅ Β«GROUPΒ», позволяващо сСкциониранС ΠΈ агрСгация Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ EdgeQL, ΠΏΠΎ аналогия с Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π² опСрацията SELECT.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ. ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ сС опрСдСлят Π½Π° Π½ΠΈΠ²ΠΎ схСма Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ позволяват ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅, вмъкванС, ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ ΠΈ обновяванС. НапримСр, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΎ обновяванС Π½Π° публикацията само ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² схСмата Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. Π—Π° привязка към потрСбитСля Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½ΠΎΠ²Π° Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° current_user.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, опрСдСлящи Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π½Π° стойности (range).
  • ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π΅Π½Π° Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° клиСнтска Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π΅Π·ΠΈΠΊΠ° Rust.
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π±ΠΈΠ½Π°Ρ€Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° EdgeDB, Π² ΠΊΠΎΠΉΡ‚ΠΎ сС появява Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ сСсии Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°, ΠΏΡ€ΠΎΠ±ΠΈΠ²Π°Π½Π΅ ΠΏΡ€Π΅Π· HTTP, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ сокСт, която позволява Π΄Π° Π½Π΅ сС Π·Π°Π΄ΡŠΡ€ΠΆΠ° ΡΡŠΡ€Π²ΡŠΡ€Π΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π΄Π° сС стартира само ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° установяванС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° спСстяванС Π½Π° рСсурси Π² систСми Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster