Rilis grafik relasional DBMS EdgeDB 2.0

Rilis DBMS EdgeDB 2.0 disajikan, yang mengimplementasikan model data grafik relasional dan bahasa kueri EdgeQL, dioptimalkan untuk bekerja dengan data hierarki yang kompleks. Kode ini ditulis dalam Python dan Rust (bagian parser dan kinerja penting) dan didistribusikan di bawah lisensi Apache 2.0. Proyek ini sedang dikembangkan sebagai add-on untuk PostgreSQL. Pustaka klien disiapkan untuk Python, Go, Rust, dan TypeScript/Javascript. Menyediakan alat baris perintah untuk manajemen DBMS dan eksekusi kueri interaktif (REPL).

Alih-alih model data berbasis tabel, EdgeDB menggunakan sistem deklaratif berdasarkan tipe objek. Alih-alih kunci asing, tautan dengan referensi digunakan untuk mendefinisikan hubungan antar tipe (satu objek dapat digunakan sebagai properti objek lain).

ketik Orang { nama properti yang diperlukan -> str; } ketik Film { judul properti yang diperlukan -> str; aktor multi tautan -> Orang; }

Indeks dapat digunakan untuk mempercepat pemrosesan kueri. Fitur seperti pengetikan properti yang kuat, batasan nilai properti, properti terhitung, dan prosedur tersimpan juga didukung. Fitur skema penyimpanan objek EdgeDB, yang agak mengingatkan pada ORM, mencakup kemampuan untuk menggabungkan skema, menghubungkan properti dari objek yang berbeda, dan dukungan JSON terintegrasi.

Alat bawaan disediakan untuk menyimpan migrasi skema - setelah mengubah skema yang ditentukan dalam file esdl terpisah, cukup jalankan perintah "edgedb migrasi buat" dan DBMS akan menganalisis perbedaan dalam skema dan secara interaktif menghasilkan skrip untuk migrasi ke skema baru. Riwayat perubahan skema dilacak secara otomatis.

Untuk menghasilkan kueri, bahasa kueri GraphQL dan bahasa EdgeDB berpemilik, yang merupakan adaptasi SQL untuk data hierarki, didukung. Alih-alih daftar, hasil kueri diformat dengan cara terstruktur, dan alih-alih subkueri dan GABUNG, Anda bisa menentukan satu kueri EdgeQL sebagai ekspresi dalam kueri lain. Transaksi dan siklus didukung.

pilih Film { judul, aktor: { nama } } filter .title = "The Matrix" masukkan Film { title := "The Matrix Resurrections", aktor := ( pilih Filter orang .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } untuk bilangan dalam gabungan {0, 1, 2, 3} ( pilih { bilangan, bilangan + 0.5 } );

ΠΎΠ²ΠΎΠΉ Срсии:

  • Antarmuka web bawaan telah ditambahkan untuk administrasi basis data, memungkinkan Anda melihat dan mengedit data, menjalankan kueri EdgeQL, dan menganalisis skema penyimpanan yang digunakan. Antarmuka diluncurkan dengan perintah β€œeddb ui”, setelah itu tersedia saat mengakses localhost.
    Rilis grafik relasional DBMS EdgeDB 2.0
  • Ekspresi β€œGROUP” telah diterapkan, memungkinkan Anda mempartisi dan mengagregasi data serta mengelompokkan data menggunakan ekspresi EdgeQL arbitrer, mirip dengan pengelompokan dalam operasi SELECT.
  • Kemampuan untuk mengontrol akses di tingkat objek. Aturan akses ditentukan pada tingkat skema penyimpanan dan memungkinkan Anda membatasi kemampuan untuk menggunakan sekumpulan objek tertentu dalam operasi pengambilan, penyisipan, penghapusan, dan pembaruan. Misalnya, Anda bisa menambahkan aturan yang mengizinkan hanya penulis untuk memperbarui publikasi.
  • Menambahkan kemampuan untuk menggunakan variabel global dalam skema penyimpanan. Variabel global baru current_user telah diusulkan untuk diikat ke pengguna.
  • Menambahkan dukungan untuk tipe yang menentukan rentang nilai.
  • Perpustakaan klien resmi untuk bahasa Rust telah disiapkan.
  • Protokol biner EdgeDB telah distabilkan, sehingga memungkinkan untuk memproses beberapa sesi berbeda secara bersamaan dalam koneksi jaringan yang sama, meneruskan melalui HTTP, menggunakan variabel global dan status lokal.
  • Menambahkan dukungan untuk aktivasi soket, yang memungkinkan Anda untuk tidak menyimpan pengendali server di memori dan menjalankannya hanya ketika mencoba membuat koneksi (berguna untuk menghemat sumber daya pada sistem pengembang).

Sumber: opennet.ru

Tambah komentar