Keluaran graf hubungan DBMS EdgeDB 2.0

Keluaran EdgeDB 2.0 DBMS dibentangkan, yang melaksanakan model data graf hubungan dan bahasa pertanyaan EdgeQL, dioptimumkan untuk bekerja dengan data hierarki yang kompleks. Kod ini ditulis dalam Python dan Rust (bahagian penghurai dan prestasi kritikal) dan diedarkan di bawah lesen Apache 2.0. Projek ini sedang dibangunkan sebagai tambahan untuk PostgreSQL. Perpustakaan pelanggan disediakan untuk Python, Go, Rust dan TypeScript/Javascript. Menyediakan alat baris arahan untuk pengurusan DBMS dan pelaksanaan pertanyaan interaktif (REPL).

Daripada model data berasaskan jadual, EdgeDB menggunakan sistem perisytiharan berdasarkan jenis objek. Daripada kunci asing, pautan melalui rujukan digunakan untuk menentukan hubungan antara jenis (satu objek boleh digunakan sebagai harta objek lain).

taip Orang { nama harta yang diperlukan -> str; } taip Filem { tajuk harta yang diperlukan -> str; pelakon berbilang pautan -> Orang; }

Indeks boleh digunakan untuk mempercepatkan pemprosesan pertanyaan. Ciri seperti penaipan harta yang kukuh, sekatan nilai harta, sifat yang dikira dan prosedur tersimpan juga disokong. Ciri-ciri skim storan objek EdgeDB, yang agak mengingatkan ORM, termasuk keupayaan untuk mencampurkan skema, memautkan sifat daripada objek berbeza dan sokongan JSON bersepadu.

Alat terbina dalam disediakan untuk menyimpan migrasi skema - selepas menukar skema yang ditentukan dalam fail esdl yang berasingan, jalankan sahaja arahan "edgedb migration create" dan DBMS akan menganalisis perbezaan dalam skema dan secara interaktif menjana skrip untuk berhijrah ke skema baharu. Sejarah perubahan skema dijejaki secara automatik.

Untuk menjana pertanyaan, kedua-dua bahasa pertanyaan GraphQL dan bahasa EdgeDB proprietari, yang merupakan penyesuaian SQL untuk data hierarki, disokong. Daripada senarai, hasil pertanyaan diformatkan dalam cara berstruktur dan bukannya subkueri dan JOIN, anda boleh menentukan satu pertanyaan EdgeQL sebagai ungkapan dalam pertanyaan lain. Urus niaga dan kitaran disokong.

pilih Filem { tajuk, pelakon: { nama } } penapis .tajuk = "The Matrix" masukkan Filem { tajuk := "The Matrix Resurrections", pelakon := ( pilih Penapis Orang .nama dalam { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } untuk nombor dalam gabungan {0, 1, 2, 3} ( pilih { nombor, nombor + 0.5 } );

Dalam versi baharu:

  • Antara muka web terbina dalam telah ditambah untuk pentadbiran pangkalan data, membolehkan anda melihat dan mengedit data, menjalankan pertanyaan EdgeQL dan menganalisis skema storan yang digunakan. Antara muka dilancarkan oleh arahan "edgedb ui", selepas itu ia tersedia apabila mengakses localhost.
    Keluaran graf hubungan DBMS EdgeDB 2.0
  • Ungkapan "GROUP" telah dilaksanakan, membolehkan anda membahagikan dan mengagregat data dan data kumpulan menggunakan ungkapan EdgeQL arbitrari, serupa dengan pengumpulan dalam operasi SELECT.
  • Keupayaan untuk mengawal akses pada tahap objek. Peraturan akses ditakrifkan pada tahap skema storan dan membolehkan anda mengehadkan keupayaan untuk menggunakan set objek tertentu dalam operasi pengambilan, sisip, padam dan kemas kini. Sebagai contoh, anda boleh menambah peraturan yang membenarkan hanya pengarang mengemas kini penerbitan.
  • Menambahkan keupayaan untuk menggunakan pembolehubah global dalam skema storan. Pembolehubah global current_user baru telah dicadangkan untuk mengikat pengguna.
  • Sokongan tambahan untuk jenis yang mentakrifkan julat nilai.
  • Perpustakaan pelanggan rasmi untuk bahasa Rust telah disediakan.
  • Protokol binari EdgeDB telah distabilkan, membolehkan untuk memproses beberapa sesi berbeza secara serentak dalam sambungan rangkaian yang sama, memajukan melalui HTTP, menggunakan pembolehubah global dan keadaan setempat.
  • Sokongan tambahan untuk pengaktifan soket, yang membolehkan anda tidak menyimpan pengendali pelayan dalam memori dan menjalankannya hanya apabila cuba mewujudkan sambungan (berguna untuk menyimpan sumber pada sistem pembangun).

Sumber: opennet.ru

Tambah komen