DBMS EdgeDB 2.0 relyatsion grafigining chiqarilishi

Murakkab ierarxik ma'lumotlar bilan ishlash uchun optimallashtirilgan relyatsion grafik ma'lumotlar modeli va EdgeQL so'rovlar tilini amalga oshiradigan EdgeDB 2.0 DBMS versiyasi taqdim etilgan. Kod Python va Rust-da yozilgan (tahlil qiluvchi va ishlash uchun muhim qismlar) va Apache 2.0 litsenziyasi ostida tarqatiladi. Loyiha PostgreSQL uchun qo'shimcha sifatida ishlab chiqilmoqda. 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);

Yangi versiyada:

  • Ma'lumotlar bazasini boshqarish uchun o'rnatilgan veb-interfeys qo'shildi, bu sizga ma'lumotlarni ko'rish va tahrirlash, EdgeQL so'rovlarini bajarish va foydalanilgan saqlash sxemasini tahlil qilish imkonini beradi. Interfeys "edgedb ui" buyrug'i bilan ishga tushiriladi, shundan so'ng u localhost-ga kirishda mavjud bo'ladi.
    DBMS EdgeDB 2.0 relyatsion grafigining chiqarilishi
  • “GROUP” iborasi amalga oshirildi, bu sizga SELECT operatsiyasida guruhlash kabi ixtiyoriy EdgeQL iboralari yordamida maʼlumotlar va maʼlumotlarni guruhlarga boʻlish va jamlash imkonini beradi.
  • Ob'ekt darajasida kirishni boshqarish qobiliyati. Kirish qoidalari saqlash sxemasi darajasida aniqlanadi va olish, qo'shish, o'chirish va yangilash operatsiyalarida ma'lum ob'ektlar to'plamidan foydalanish imkoniyatini cheklash imkonini beradi. Misol uchun, siz faqat muallifga nashrni yangilash imkonini beradigan qoida qo'shishingiz mumkin.
  • Saqlash sxemasida global o'zgaruvchilardan foydalanish imkoniyati qo'shildi. Foydalanuvchi bilan bog'lash uchun joriy_user yangi global o'zgaruvchisi taklif qilindi.
  • Qiymatlar oralig'ini belgilaydigan turlar uchun qo'shimcha qo'llab-quvvatlash.
  • Rust tili uchun rasmiy mijozlar kutubxonasi tayyorlandi.
  • EdgeDB ikkilik protokoli barqarorlashtirildi, bu global o'zgaruvchilar va mahalliy holatlardan foydalangan holda HTTP orqali yo'naltirish, bir xil tarmoq ulanishi doirasida bir vaqtning o'zida bir nechta turli seanslarni qayta ishlash imkonini beradi.
  • Soketni faollashtirish uchun qo'shimcha qo'llab-quvvatlash, bu sizga server ishlov beruvchisini xotirada saqlamaslik va uni faqat ulanishni o'rnatishga urinayotganda ishga tushirish imkonini beradi (ishlab chiqaruvchilar tizimlarida resurslarni tejash uchun foydali).

Manba: opennet.ru

a Izoh qo'shish