إصدار الرسم البياني العلائقي DBMS EdgeDB 4.0

تم تقديم إصدار EdgeDB 4.0 DBMS، الذي ينفذ نموذج بيانات الرسم البياني العلائقي ولغة استعلام EdgeQL، المُحسّنة للعمل مع البيانات الهرمية المعقدة. تمت كتابة التعليمات البرمجية بلغة Python وRust (المحلل اللغوي والأجزاء المهمة للأداء) ويتم توزيعها بموجب ترخيص Apache 2.0. يتم تطوير المشروع كوظيفة إضافية لـ PostgreSQL. مكتبات العملاء مُجهزة للغات Python وGo وRust. .NET، Elixir وTypeScript/Javascript. يوفر أدوات سطر الأوامر لإدارة قواعد البيانات وتنفيذ الاستعلام التفاعلي (REPL).

بدلاً من نموذج البيانات المستند إلى الجدول، يستخدم EdgeDB نظامًا تعريفيًا يعتمد على أنواع الكائنات. بدلاً من المفاتيح الخارجية، يتم استخدام الارتباط حسب المرجع لتحديد العلاقة بين الأنواع (يمكن استخدام كائن واحد كخاصية لكائن آخر).

اكتب الشخص { الاسم المطلوب: str؛ } اكتب الفيلم {العنوان المطلوب: str; جهات فاعلة متعددة: شخص؛ }

يمكن استخدام الفهارس لتسريع معالجة الاستعلام. يتم أيضًا دعم ميزات مثل كتابة الخصائص القوية وقيود قيمة الخاصية والخصائص المحسوبة والإجراءات المخزنة. تشتمل ميزات نظام تخزين كائنات EdgeDB، الذي يذكرنا إلى حد ما بـ ORM، على القدرة على مزج المخططات وربط الخصائص من كائنات مختلفة ودعم JSON المتكامل.

يتم توفير أدوات مدمجة لتخزين ترحيل المخطط - بعد تغيير المخطط المحدد في ملف esdl منفصل، ما عليك سوى تشغيل الأمر "edgedb ترحيل إنشاء" وسيقوم نظام إدارة قواعد البيانات (DBMS) بتحليل الاختلافات في المخطط وإنشاء برنامج نصي بشكل تفاعلي للترحيل إلى مخطط جديد. يتم تعقب تاريخ تغييرات المخطط تلقائيًا.

لإنشاء استعلامات، يتم دعم كل من لغة استعلام GraphQL ولغة EdgeDB الخاصة، وهي عبارة عن تعديل لـ SQL للبيانات الهرمية. بدلاً من القوائم، يتم تنسيق نتائج الاستعلام بطريقة منظمة، وبدلاً من الاستعلامات الفرعية وروابط JOIN، يمكنك تحديد استعلام EdgeQL واحد كتعبير داخل استعلام آخر. يتم دعم المعاملات والدورات.

حدد الفيلم { العنوان، الممثلين: { الاسم } } filter .title = "The Matrix" أدخل الفيلم { title := "The Matrix Resurrections"، الممثلين: = (حدد مرشح الشخص .name في { 'Keanu Reeves'، 'Carrie- آن موس، "لورانس فيشبورن" } ) }

новой версии:

  • تمت إضافة دعم للبحث عن النص الكامل، ويتم تنفيذه من خلال البرنامج الإضافي fts. لتحويل أي كائن إلى مستند قابل للبحث، يجب عليك استخدام فهرس fts::index، ويتم اقتراح وظيفة fts::search() للبحث عن عبارة معينة بين المستندات المفهرسة. يتم إرجاع النتائج في شكل صفوف تحتوي على الكائن الذي تم العثور عليه ووزن البحث الخاص به. على سبيل المثال: اكتب العنصر { مطلوب متاح: bool { default := false; }; الاسم المطلوب: شارع؛ الوصف المطلوب: str؛ فهرس fts::index on ( fts::with_options( .name, language := fts::Language.eng ) ); } مع res := ( حدد fts::search(Item, 'candy corn', language := 'eng')) ) حدد res.object {name, Score := res.score} بالترتيب حسب res.score desc;
  • تمت إضافة نوع بيانات جديد "متعدد النطاق" يحدد نطاقًا واحدًا أو أكثر من القيم لتمثيل فترات زمنية متقطعة. يتم إجراء تطبيع المناطق المتداخلة ضمن النطاقات المحددة تلقائيًا. يمكن لجميع الوظائف والمشغلات المتاحة مسبقًا لنطاقات المعالجة أن تعمل مع النوع "متعدد النطاقات". حدد multirange([range(8, 10)]) + range(1, 5) — range(3, 4);
  • تمت إضافة دعم المصادقة وتمكينه افتراضيًا لتقييد الوصول إلى GraphQL وEdgeQL عبر HTTP.
  • لإطلاق خدمة مصادقة تعمل بشكل منفصل عن مثيل قاعدة البيانات، تمت إضافة ملحق "auth"، الذي يدعم OAuth أو تسجيل الدخول باستخدام البريد الإلكتروني وكلمة المرور.
  • تمت إضافة ملحق pgcrypto الذي يوفر وظائف hmac وgen_salt وcrypt للتجزئة والتشفير. حدد ext::pgcrypto::digest('تشفير هذا', 'sha1');
  • تمت إضافة ملحق pg_trgm مع وظائف لتحديد تشابه السلسلة.
  • تم إجراء تحسينات لرفع مستوى الأداء. استهلاك الذاكرة على الخادم تم تخفيض حجمه بنسبة 40%. تمت إعادة كتابة كود محلل استعلامات EdgeQL بلغة Rust.
  • أضاف EdgeQL دعمًا لبناء جملة شرطية أكثر شيوعًا (إذا ... ثم .. وإلا ...). يوفر القدرة على استخدام DML المشروط لإنشاء كائنات متنوعة وتحديثها وحذفها بناءً على شروط محددة. تمت إضافة الوظائف to_bytes() وto_str() وenc::base64_encode وenc::base64_decode. يُسمح للمشغلات باستخدام تعبيرات "متى". حدد إذا كان العد (كائن) > 0 ثم "حصلت على بيانات" وإلا "لا توجد بيانات"؛ حدد (حدد مرشح المستخدم .name = 'Alice') ؟؟ (أدخل المستخدم { الاسم := 'أليس' }); حدد enc::base64_encode(b'hello');
  • تمت إضافة طريقة جديدة لتمرير القيم العالمية إلى استعلامات GraphQL - بدلاً من استخدام حقل منفصل، تمت إضافة القدرة على تمرير المتغيرات بناءً على كائن __globals__.

    المصدر: opennet.ru
شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster