انتشار DBMS SQLite 3.42 و DuckDB 0.8.0. CG/SQL با اجرای رویه های ذخیره شده برای SQLite

انتشار SQLite 3.42، یک DBMS سبک که به عنوان یک کتابخانه پلاگین طراحی شده است، منتشر شده است. کد SQLite در دامنه عمومی توزیع می شود، یعنی. بدون محدودیت و رایگان برای هر منظوری قابل استفاده است. پشتیبانی مالی برای توسعه دهندگان SQLite توسط یک کنسرسیوم ایجاد شده ویژه ارائه می شود که شامل شرکت هایی مانند Adobe، Oracle، Mozilla، Bentley و Bloomberg است.

تغییرات اصلی:

  • برای نمایه های متن کامل FTS5، دستور امن-حذف اجرا می شود که تمام داده های باقی مانده را پس از حذف به طور کامل پاک می کند.
  • توابع برای پردازش داده ها در قالب JSON اکنون از پسوندهای JSON5 پشتیبانی می کنند.
  • برنامه ریز پرس و جو بهبود یافته بهینه سازی تعداد بازدید به طور پیش فرض فعال است. مدیریت ستون های استفاده نشده در سوالات فرعی حذف شده است. اجرای بهینه سازی فشار پایین بهبود یافته است.
  • گزینه "--unsafe-testing" به CLI اضافه شد تا امکان استفاده از برخی از دستورات خطرناک مانند ".testctrl" در آزمایش را فراهم کند. در حالت امن ("--safe")، دستورات "log on" و ".log off" مجاز هستند. پشتیبانی از جداکننده "-" برای آرگومان هایی که پس از آن پردازش گزینه غیرفعال می شود، اضافه شده است. اضافه شدن پارامترهای ":inf" و ":nan" مرتبط با مقادیر بی نهایت و NaN.
  • نام توابع SQL تعریف شده توسط برنامه مجاز است با کلمات کلیدی CROSS، FULL، INNER، LEFT، NATURAL، OUTER و RIGHT تلاقی کند.
  • قابلیت‌های PRAGMA integrity_check گسترش یافته است. بررسی برای تعیین مقدار NaN در ستون‌هایی با شرط NOT NULL اضافه شد. محتوای اطلاعاتی بهبود یافته پیام های خطا.
  • افزودن جلسه اجازه رهگیری تغییرات از جداول بدون ROWID را می دهد.
  • اصلاح کننده "subsec" به توابع برای کار با زمان و تاریخ برای استفاده از کسری از ثانیه اضافه شده است.
  • کاهش عمق بازگشت پیش‌فرض برای آرایه‌ها و اشیاء JSON از 2000 به 1000.

علاوه بر این، نسخه DuckDB 0.8.0 DBMS شکل گرفته است که نوع SQLite را توسعه می‌دهد، با ویژگی‌ها و بهینه‌سازی‌هایی برای انجام پرس و جوهای تحلیلی که بخش قابل توجهی از داده‌های ذخیره‌شده را پوشش می‌دهد، به عنوان مثال، جمع‌آوری کل محتویات جداول یا ادغام چندین جدول بزرگ، بهبود یافته است. گویش گسترده ای از زبان SQL ارائه شده است، شامل قابلیت های اضافی برای رسیدگی به پرس و جوهای بسیار پیچیده و طولانی مدت، و همچنین پشتیبانی از انواع پیچیده (آرایه ها، ساختارها، اتحادیه ها)، اجرای همزمان چند پرس و جو، و اجرای پرس و جوها به طور مستقیم از فایل ها در قالب CSV، JSON و پارکت. امکان وارد کردن از PostgreSQL DBMS وجود دارد.

علاوه بر کد پوسته SQLite، پروژه از تجزیه‌کننده PostgreSQL، یک مؤلفه Date Math از MonetDB، پیاده‌سازی توابع پنجره (براساس الگوریتم Segment Tree Aggregation)، یک پردازشگر عبارات منظم بر اساس کتابخانه RE2، یک بهینه‌ساز پرس‌وجو خود، یک مکانیسم MVCC برای مدیریت taskousscu simult. موتور پرس و جو بردار بر اساس الگوریتم Hyper-Pipelining Query Execut. یون، که به شما امکان می دهد مجموعه های زیادی از مقادیر را به طور همزمان در یک عملیات پردازش کنید. کد پروژه تحت مجوز MIT توزیع شده است.

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

  • عبارات جدید "PIVOT" و "UNPIVOT" برای تبدیل ردیف ها به ستون و بالعکس اضافه شده است.
  • موازی سازی بهبود یافته هنگام واردات و صادرات داده ها. به طور پیش‌فرض، خواندن از فایل‌ها با فرمت CSV به جریان‌های چندگانه و نوشتن چند رشته‌ای هنگام استفاده از قالب‌های پارکت، CSV و JSON اجرا می‌شود.
  • اپراتور "**" اضافه شد تا هنگام تعریف مسیرهای فایل (به عنوان مثال FROM "'data/glob/crawl/stackoverflow/**/*.csv';" به صورت بازگشتی روی دایرکتوری ها تکرار شود.
  • پشتیبانی از عملیات ادغام (JOIN) برای داده ها در قالب یک سری زمانی (برش هایی از مقادیر پارامترها در بازه های زمانی مشخص) که در آن معیار ادغام رکوردها دقیق نیست، بلکه تطبیق تقریبی مقادیر در یک فیلد با زمان است (به عنوان مثال، می توانید رکوردهایی را که زمان آنها بیش از 1 دقیقه متفاوت است ترکیب کنید).
  • بارگذاری معوق ابرداده پایگاه داده پیاده سازی شده است که سرعت راه اندازی DBMS را ده برابر می کند.
  • پشتیبانی برای اتصال توابع سفارشی در پایتون اضافه شده است.
  • اضافه شدن پشتیبانی از ADBC ​​(Arrow Database Connectivity) API برای انتقال داده با استفاده از Apache Arrow.
  • اتصال پیاده سازی شده برای ادغام با کد سوئیفت.
  • رفتار عملگر تقسیم ("/") را تغییر داد، که اکنون محاسبات ممیز شناور را به طور پیش فرض به جای عملیات عدد صحیح انجام می دهد. یک عملگر جدید "//" برای تقسیم عدد صحیح پیشنهاد شده است. رفتار قدیمی را می توان با تنظیم "SET integer_division=true;" برگرداند.
  • روش حسابداری برای رکوردهای تهی هنگام مرتب سازی از "NULLS FIRST" به "NULLS LAST" تغییر کرده است. اکنون مقادیر NULL به جای ابتدای لیست در انتهای لیست نمایش داده می شوند. رفتار قدیمی را می توان با تنظیم "SET default_null_order='nulls_first';" بازیابی کرد.

علاوه بر این، پروژه CG/SQL توسعه یافته توسط فیس بوک، که یک تولید کننده کد برای استفاده از رویه های ذخیره شده با SQLite فراهم می کند، قابل ذکر است. CG/SQL به شما اجازه می دهد تا رویه های ذخیره شده را به گویش خاصی از T-SQL (Transact-SQL) بنویسید، که به شما امکان می دهد عملکردهای کتابخانه استاندارد C را فراخوانی کنید و به داده ها در SQLite دسترسی پیدا کنید. رویه های ذخیره شده تولید شده در کد C کامپایل می شوند که از SQLite C API برای انجام اقدامات مشخص شده و پردازش پرس و جوهای پیچیده استفاده می کند. رویه های ذخیره شده کامپایل شده را می توان به برنامه های C، Java و Objective-C پیوند داد. کد پروژه به زبان C نوشته شده و تحت مجوز MIT توزیع شده است.

منبع: opennet.ru

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