انتشار نمودار رابطه ای DBMS EdgeDB 2.0

نسخه EdgeDB 2.0 DBMS ارائه شده است که مدل داده های نمودار رابطه ای و زبان پرس و جو EdgeQL را پیاده سازی می کند که برای کار با داده های سلسله مراتبی پیچیده بهینه شده است. کد به زبان Python و Rust (تجزیه کننده و بخش های حیاتی عملکرد) نوشته شده و تحت مجوز آپاچی 2.0 توزیع شده است. این پروژه به عنوان یک افزونه برای PostgreSQL در حال توسعه است. کتابخانه های کلاینت برای Python، Go، Rust و TypeScript/Javascript آماده شده اند. ابزارهای خط فرمان را برای مدیریت DBMS و اجرای پرس و جو تعاملی (REPL) فراهم می کند.

به جای یک مدل داده مبتنی بر جدول، EdgeDB از یک سیستم اعلامی بر اساس انواع شی استفاده می کند. به جای کلیدهای خارجی، از پیوند با مرجع برای تعریف رابطه بین انواع استفاده می شود (یک شی می تواند به عنوان ویژگی یک شی دیگر استفاده شود).

نوع Person { نام ملک مورد نیاز -> str; } نوع فیلم { عنوان ملک مورد نیاز -> str; بازیگران چند پیوندی -> شخص; }

از شاخص ها می توان برای سرعت بخشیدن به پردازش پرس و جو استفاده کرد. ویژگی‌هایی مانند تایپ ویژگی قوی، محدودیت‌های ارزش ویژگی، ویژگی‌های محاسبه‌شده و رویه‌های ذخیره‌شده نیز پشتیبانی می‌شوند. از ویژگی های طرح ذخیره سازی اشیاء EdgeDB که تا حدودی یادآور ORM است، می توان به ترکیب طرحواره ها، ویژگی های پیوند از اشیاء مختلف و پشتیبانی یکپارچه JSON اشاره کرد.

ابزارهای داخلی برای ذخیره مهاجرت طرحواره ارائه شده است - پس از تغییر طرح مشخص شده در یک فایل esdl جداگانه، فقط دستور "edgedb migration create" را اجرا کنید و DBMS تفاوت های موجود در طرح را تجزیه و تحلیل کرده و به صورت تعاملی یک اسکریپت برای مهاجرت به طرح واره جدید تاریخچه تغییرات طرح واره به طور خودکار ردیابی می شود.

برای تولید پرس و جو، هم زبان پرس و جو GraphQL و هم زبان اختصاصی EdgeDB که اقتباسی از SQL برای داده های سلسله مراتبی است، پشتیبانی می شود. به جای لیست ها، نتایج پرس و جو به روشی ساختاریافته قالب بندی می شوند، و به جای پرس و جوهای فرعی و JOIN، می توانید یک پرس و جو EdgeQL را به عنوان یک عبارت در پرس و جوی دیگر مشخص کنید. تراکنش ها و چرخه ها پشتیبانی می شوند.

select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", بازیگران := ( Persona filter .name in { 'Keanu Reeves', 'Carrie- را انتخاب کنید Anne Moss', 'Laurence Fishburne' } ) } برای شماره در اتحادیه {0, 1, 2, 3} ( انتخاب کنید { number, number + 0.5 } );

در نسخه های جدید:

  • یک رابط وب داخلی برای مدیریت پایگاه داده اضافه شده است که به شما امکان می دهد داده ها را مشاهده و ویرایش کنید، پرس و جوهای EdgeQL را اجرا کنید و طرح ذخیره سازی مورد استفاده را تجزیه و تحلیل کنید. این رابط توسط دستور "edgedb UI" راه اندازی می شود، پس از آن هنگام دسترسی به لوکال هاست در دسترس می شود.
    انتشار نمودار رابطه ای DBMS EdgeDB 2.0
  • عبارت "GROUP" پیاده سازی شده است که به شما امکان می دهد داده ها و داده ها را با استفاده از عبارات دلخواه EdgeQL، مشابه گروه بندی در یک عملیات SELECT، پارتیشن بندی و جمع آوری کنید.
  • امکان کنترل دسترسی در سطح شی. قوانین دسترسی در سطح طرحواره ذخیره سازی تعریف شده است و به شما امکان می دهد توانایی استفاده از مجموعه خاصی از اشیاء را در عملیات واکشی، درج، حذف و به روز رسانی محدود کنید. به عنوان مثال، می‌توانید قاعده‌ای اضافه کنید که فقط به نویسنده اجازه می‌دهد یک نشریه را به‌روزرسانی کند.
  • قابلیت استفاده از متغیرهای سراسری در طرح ذخیره سازی اضافه شده است. یک متغیر جهانی فعلی current_user برای اتصال به کاربر پیشنهاد شده است.
  • پشتیبانی برای انواعی که محدوده مقادیر را تعریف می کنند اضافه شده است.
  • یک کتابخانه رسمی مشتری برای زبان Rust آماده شده است.
  • پروتکل باینری EdgeDB تثبیت شده است و پردازش چندین جلسه مختلف را به طور همزمان در یک اتصال شبکه، ارسال از طریق HTTP، با استفاده از متغیرهای سراسری و حالت های محلی ممکن می سازد.
  • پشتیبانی از فعال‌سازی سوکت اضافه شده است که به شما امکان می‌دهد کنترل کننده سرور را در حافظه نگه ندارید و آن را فقط در هنگام تلاش برای برقراری یک اتصال اجرا کنید (مفید برای ذخیره منابع در سیستم‌های توسعه‌دهنده).

منبع: opennet.ru

اضافه کردن نظر