EdgeDB DBMS relyatsion grafigining birinchi barqaror nashri

EdgeDB DBMS ning birinchi barqaror nashri mavjud bo'lib, u PostgreSQL-ga murakkab ierarxik ma'lumotlar bilan ishlash uchun optimallashtirilgan relyatsion grafik ma'lumotlar modeli va EdgeQL so'rovlar tilini amalga oshirish bilan qo'shimcha hisoblanadi. Kod Python va Rust tillarida yozilgan va Apache 2.0 litsenziyasi ostida tarqatiladi. Mijoz kutubxonalari Python, Go, Rust va TypeScript/Javascript uchun tayyorlangan. DBMS boshqaruvi va interaktiv so'rovlarni bajarish (REPL) uchun buyruq qatori vositalarini taqdim etadi.

Jadvalga asoslangan ma'lumotlar modeli o'rniga EdgeDB ob'ekt turlariga asoslangan deklarativ tizimdan foydalanadi. Turlar orasidagi munosabatni aniqlash uchun tashqi kalitlar o'rniga mos yozuvlar bo'yicha bog'lanish qo'llaniladi (bitta ob'ekt boshqa ob'ektning mulki sifatida ishlatilishi mumkin). type Person { talab qilinadigan xususiyat nomi -> str; } type Movie { talab qilinadigan xususiyat nomi -> str; ko'p bo'g'inli aktyorlar -> Shaxs; }

Indekslar so'rovlarni qayta ishlashni tezlashtirish uchun ishlatilishi mumkin. Kuchli xususiyatni kiritish, mulk qiymatini cheklash, hisoblangan xususiyatlar va saqlangan protseduralar kabi xususiyatlar ham qo'llab-quvvatlanadi. ORMni biroz eslatuvchi EdgeDB obyektlarini saqlash sxemasining xususiyatlari orasida sxemalarni aralashtirish, turli ob'ektlardan xususiyatlarni bog'lash va integratsiyalangan JSON yordami mavjud.

Sxema migratsiyasini saqlash uchun o'rnatilgan vositalar taqdim etilgan - alohida esdl faylida ko'rsatilgan sxemani o'zgartirgandan so'ng, shunchaki "edgedb migration create" buyrug'ini bajaring va DBMS sxemadagi farqlarni tahlil qiladi va interaktiv ravishda sxemaga o'tish uchun skript yaratadi. yangi sxema. Sxema o'zgarishlar tarixi avtomatik ravishda kuzatiladi.

So'rovlarni yaratish uchun GraphQL so'rovlar tili va ierarxik ma'lumotlar uchun SQL moslashuvi bo'lgan xususiy EdgeDB tili qo'llab-quvvatlanadi. Roʻyxatlar oʻrniga soʻrov natijalari tuzilgan tarzda formatlanadi va quyi soʻrovlar va JOINlar oʻrniga bitta EdgeQL soʻrovini boshqa soʻrov ichida ifoda sifatida belgilashingiz mumkin. Tranzaksiyalar va tsikllar qo'llab-quvvatlanadi. Filmni tanlang { sarlavha, aktyorlar: { ism } } filtr .title = "Matrisa" insert Film { sarlavha := "Matrisa tirilishi", aktyorlar := ( { 'Keanu Rivs', 'Karri- Enn Moss', 'Laurens Fishburne' } ) } {0, 1, 2, 3} birlikdagi raqam uchun ( { raqam, raqam + 0.5 } ni tanlang);

Manba: opennet.ru

a Izoh qo'shish