Rilis stabil pertama dari grafik relasional DBMS EdgeDB

Rilis stabil pertama dari DBMS EdgeDB telah tersedia, yang merupakan add-on untuk PostgreSQL dengan implementasi model data grafik relasional dan bahasa kueri EdgeQL, yang dioptimalkan untuk bekerja dengan data hierarki yang kompleks. Kode ini ditulis dengan Python dan Rust dan didistribusikan di bawah lisensi Apache 2.0. 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 } );

Sumber: opennet.ru

Tambah komentar