انتشار سندمحور DBMS MongoDB 5.0 ارائه شده است که جایگاهی را بین سیستمهای سریع و مقیاسپذیر که دادهها را در قالب کلید/مقدار کار میکنند و DBMSهای رابطهای که عملکردی هستند و به آسانی پرسوجوها را تشکیل میدهند، اشغال میکند. کد MongoDB به زبان C++ نوشته شده و تحت مجوز SSPL، که بر اساس مجوز AGPLv3 است، توزیع شده است، اما باز نیست، زیرا شامل یک الزام تبعیض آمیز برای ارائه تحت مجوز SSPL نه تنها خود کد برنامه، بلکه همچنین منبع است. کد تمام اجزای درگیر در ارائه سرویس ابری.
MongoDB از ذخیره سازی اسناد در قالب JSON مانند پشتیبانی می کند، دارای یک زبان نسبتاً انعطاف پذیر برای تولید پرس و جو است، می تواند شاخص هایی را برای ویژگی های ذخیره شده مختلف ایجاد کند، به طور موثر ذخیره سازی اشیاء باینری بزرگ را فراهم می کند، از ثبت عملیات برای تغییر و افزودن داده ها به پایگاه داده پشتیبانی می کند. مطابق با پارادایم Map/Reduce کار می کند، از تکرار و ساخت پیکربندی های مقاوم به خطا پشتیبانی می کند.
MongoDB دارای ابزارهای داخلی برای ارائه اشتراک گذاری (توزیع مجموعه ای از داده ها در سرورها بر اساس یک کلید خاص) در ترکیب با Replication است که به شما امکان می دهد یک خوشه ذخیره سازی مقیاس پذیر افقی بسازید که در آن هیچ نقطه ای از شکست وجود نداشته باشد (شکست). هر گره بر عملکرد پایگاه داده تأثیر نمی گذارد)، بازیابی خودکار پس از شکست و انتقال بار از یک گره شکست خورده. گسترش یک کلاستر یا تبدیل یک سرور به یک خوشه بدون توقف پایگاه داده با افزودن ماشین های جدید انجام می شود.
ویژگی های نسخه جدید:
- مجموعه هایی برای داده ها در قالب یک سری زمانی (مجموعه های سری زمانی) اضافه شده است که برای ذخیره برش هایی از مقادیر پارامترهای ثبت شده در فواصل زمانی خاص (زمان و مجموعه ای از مقادیر مربوط به این زمان) بهینه شده است. نیاز به ذخیره چنین دادههایی در سیستمهای نظارتی، پلتفرمهای مالی و سیستمهایی برای وضعیتهای حسگر نظرسنجی ایجاد میشود. کار با دادههای سری زمانی مانند مجموعههای اسناد معمولی انجام میشود، اما فهرستها و روش ذخیرهسازی برای آنها با در نظر گرفتن مرجع زمانی بهینه شده است، که میتواند مصرف فضای دیسک را به میزان قابل توجهی کاهش دهد، تاخیر در اجرای پرسوجوها را کاهش دهد و دادههای بلادرنگ را فعال کند. تحلیل و بررسی.
MongoDB چنین مجموعههایی را بهعنوان نماهای قابل نوشتن و غیر مادی ساخته شده بر روی مجموعههای داخلی میداند که با درج، دادههای سری زمانی را بهطور خودکار در قالب ذخیرهسازی بهینه گروهبندی میکنند. در این مورد، هر رکورد مبتنی بر زمان در صورت درخواست به عنوان یک سند جداگانه در نظر گرفته می شود. داده ها به طور خودکار بر اساس زمان مرتب و نمایه می شوند (نیازی به ایجاد صریح نمایه های زمانی نیست).
- پشتیبانی از عملگرهای پنجره (توابع تحلیلی) اضافه شده است که به شما امکان می دهد اقداماتی را با مجموعه خاصی از اسناد در مجموعه انجام دهید. برخلاف توابع انبوه، توابع پنجره مجموعه گروه بندی شده را جمع نمی کنند، بلکه بر اساس محتویات یک "پنجره" که شامل یک یا چند سند از مجموعه نتایج است، جمع می شوند. برای دستکاری زیرمجموعه ای از اسناد، یک مرحله $setWindowFields جدید پیشنهاد شده است که با آن می توانید به عنوان مثال، تفاوت بین دو سند در یک مجموعه را تعیین کنید، رتبه بندی فروش را محاسبه کنید و اطلاعات را در سری های زمانی پیچیده تجزیه و تحلیل کنید.
- پشتیبانی از نسخهسازی API اضافه شده است، که به شما امکان میدهد یک برنامه را به یک وضعیت API خاص متصل کنید و خطرات مربوط به نقض احتمالی سازگاری با عقبنشینی را هنگام مهاجرت به نسخههای جدید DBMS حذف کنید. نسخهسازی API چرخه عمر برنامه را از چرخه عمر DBMS جدا میکند و به توسعهدهندگان این امکان را میدهد که در زمان نیاز به استفاده از ویژگیهای جدید، و نه هنگام مهاجرت به نسخه جدید DBMS، تغییراتی در برنامه ایجاد کنند.
- پشتیبانی از مکانیزم Live Resharding اضافه شده است، که به شما امکان می دهد کلیدهای خرد که برای تقسیم بندی استفاده می شود را بدون توقف DBMS تغییر دهید.
- امکانات رمزگذاری فیلدها در سمت کلاینت (Client-Side Field Level Encryption) گسترش یافته است. اکنون امکان پیکربندی مجدد فیلترهای ممیزی و چرخش گواهینامه های x509 بدون توقف DBMS وجود دارد. اضافه شدن پشتیبانی برای پیکربندی مجموعه رمز برای TLS 1.3.
- پوسته خط فرمان جدیدی به نام MongoDB Shell (mongosh) پیشنهاد شده است که به عنوان یک پروژه جداگانه در حال توسعه است و با استفاده از پلتفرم Node.js در جاوا اسکریپت نوشته شده و تحت مجوز Apache 2.0 توزیع شده است. MongoDB Shell امکان اتصال به DBMS، تغییر تنظیمات و ارسال پرس و جو را فراهم می کند. از تکمیل خودکار هوشمند برای وارد کردن روشها، دستورات و عبارات MQL، برجستهسازی نحو، کمک متنی، تجزیه پیامهای خطا و توانایی گسترش عملکرد از طریق افزونهها پشتیبانی میکند. بسته بندی CLI قدیمی "mongo" منسوخ شده است و در نسخه بعدی حذف خواهد شد.
- عملگرهای جدید اضافه شده اند: $count، $dateAdd، $dateDiff، $dateSubtract، $sampleRate و $rand.
- اطمینان حاصل می کند که هنگام استفاده از عملگرهای $eq، $lt، $lte، $gt و $gte در عبارت $expr از شاخص ها استفاده می شود.
- دستورات aggregate، find، findAndModify، به روز رسانی، حذف و متدهای db.collection.aggregate()، db.collection.findAndModify()، db.collection.update() و db.collection.remove() اکنون از "let" پشتیبانی می کنند. ” گزینه ای برای تعریف لیستی از متغیرها که با جدا کردن متغیرها از بدنه درخواست، دستورات را خواناتر می کند.
- اگر عملیاتی که یک قفل انحصاری روی مجموعه اسنادی به صورت موازی اجرا شود، عملیات یافتن، شمارش، متمایز، تجمیع، mapReduce، listCollections و listIndexes دیگر مسدود نمی شوند.
- به عنوان بخشی از یک ابتکار برای حذف عبارات نادرست سیاسی، دستور isMaster و متد ()db.isMaster به hello و db.hello() تغییر نام داده اند.
- طرح شماره گذاری انتشار تغییر کرده است و به یک برنامه زمان بندی قابل پیش بینی انتشار منتقل شده است. یک بار در سال یک نسخه قابل توجه (5.0، 6.0، 7.0)، هر سه ماه یک بار نسخه های میانی با ویژگی های جدید (5.1، 5.2، 5.3) و در صورت لزوم، به روز رسانی های اصلاحی با رفع اشکالات و آسیب پذیری ها (5.1.1، 5.1.2) ارائه می شود. .5.1.3، 5.1). نسخههای موقت، قابلیتهایی را برای نسخه اصلی بعدی ایجاد میکنند، یعنی. MongoDB 5.2، 5.3 و 6.0 ویژگی های جدیدی را برای انتشار MongoDB XNUMX ارائه خواهند کرد.
منبع: opennet.ru