با افزایش حجم دادهها و همچنین نیاز به انجام پردازشها با سرعت بالاتر، شرکتهای ارائه دهنده دیتابیس نیز قابلیتهایی را در محصولات خود ارائه نمودهاند. قابلیت In-Memory به عنوان یکی از این موارد میباشد که در قسمتهای اول و دوم از این سری مقالات به مقایسه In-Memory در SQL Server و Oracle پرداختیم. در این مقاله که قسمت سوم (پایانی) میباشد به بررسی این تکنولوژی در IBM DB2 10.5 و مقایسه آن با SQL Server میپردازیم.
آنالیز دادهها با قابلیت BLU Acceleration در IBM DB2 10.5
قابلیت IBM DB2 BLU Acceleration به عنوان یک راهکار یکپارچهی محاسباتی In-Memory همراه با IBM DB2 10.5 عرضه گردیده است. این راهکار از چندین فرآیند بهینهسازی برخوردار میباشد اما در مرحله اول توسط مفهومی به نام Table Shadow ایجاد میگردد که یک کپی از دادهها را در فرمت ذخیرهسازی ستونی نگهداری میکند. لازم به ذکر است که هردو جدول به طور خودکار Sync میشوند. تراکنشهای OLTP به طور مستقیم بر روی جداول رابطهای (Relational Tables) اجرا میشوند اما Queryهای تحلیلی موجود بر روی این جداول به سمت Tables Shadow که به صورت ستونی بوده ارسال شده و در نتیجه موجب پردازش تحلیلی سریعتری میگردد.
IBM DB2 BLU Acceleration دربرگیرندهی هفت ویژگی و عملکرد کلیدی میباشد:
- کاربرد ساده:
IBM بر این ادعاست که این ویژگی به محض فعالسازی قابل استفاده خواهد بود و کاربران فقط باید دادهها را بارگذاری و Query مورد نظر را ایجاد نماید. در ضمن، نیازی به هیچگونه شاخص و یا تنظیمات خاص دیگری وجود ندارد. همچنین عملیاتهای مرتبط مانند بارگذاری، پشتیبانگیری و بازیابی نیز سادهسازی شدهاند.
- فشردهسازی عملیاتی یا Actionable Compression:
IBM علاوه بر بهرهمندی از مکانیسم فشردهسازی بهینه شده، اجرای مستقیم عملیات بر روی دادههای فشرده شده را نیز میسر میسازد. در واقع BLU Acceleration میتواند فرآیندهای Join یا تجمیع را اجرا نموده و گزارهها (Predicates) را مستقیما بر روی دادههای فشرده شده به کار گیرد بدون آنکه نیازی به خارج کردن دادهها از این حالت باشد.
- استفاده از ظرفیت چندین CPU به صورت همزمان:
IBM برای آنکه بتواند دستورالعمل واحدی را در مورد قسمتهای مختلفی از دادهها به کارگیرد، از مفهوم جدیدی به نامSingle Instruction Multiple Datasets یا به اختصار SIMD، بهره میبرد. با به کارگیری SIMD امکان اجرای همزمان بسیاری از عملکردهای رایج میسر میگردد که در نهایت منجر به اجرای سریعتر Query میگردد.
- پردازش موازی و سازگار با هسته:
در صورتی که بارهای کاری بر روی یک ماشین چند هستهای اجرا شود، IBM از تمام قدرت پردازش استفاده میکند تا این فرآیند را به صورت موازی به انجام رساند. لازم به ذکر است که امکانپذیر بودن این امر به دلیل آن است که این برنامه از ابتدا بگونه ای طراحی شده است که امکان استفاده از چندین هسته را داشته باشد.
- ذخیرهسازی به صورت ستونی:
دادهها به صورت ستونی سازماندهی شدهاند که این قابلیت مزایایی همچون ذخیرهسازی کارآمدتر، اجرای سریعتر Queryها و انجام تنظیمات دقیق به شکلی کاملا ساده را ارائه مینماید.
- سازگاری فرآیند Cache و Scan:
شرکت IBM اعلام نموده است که از حافظههای بهینه شده و تکنیکهای مدیریت Cache که به صورت مجزا برای بارهای کاری OLTP و بارهای کاری موجود در انبارهای داده وجود دارد، استفاده میکند. IBM میتواند با به کارگیری فرآیند Cache سازگار با Scan، تاثیر منفی بر عملکرد I/O را به حداقل برساند.
- قابلیت Data Skipping:
قابلیت Data Skipping از بخشهای بزرگ دادهها که در هیچ یک از Queryها قابل استفاده نبوده چشمپوشی کرده و در نتیجهی این امر در CPU، RAM و I/O صرفهجویی شده و منجر به انجام Queryهای سریعتر و بدون نیاز به انجام تنظیمات دقیق میگردد. قابلیت Data Skipping را میتوان مفهومی مشابه با Segment Elimination در SQL Server دانست.
مقایسه IBM DB2 BLU Acceleration و SQL Server In-Memory
در زیر به مقایسه دو نوع سرور دیتابیس می پردازیم:
ویژگی | DB2 BLU Acceleration | SQL Server 2014 | SQL Server 2016 |
هفت عملکرد کلیدی | بله | بله (تفاوتهای اندکی وجود دارد) | بله (تفاوتهای اندکی وجود دارد) |
عملکرد Query | بله | بله (Batch Mode) | بله (Queryهای از نوع Batch Mode، Aggregate، Pushdown، جستجو و Short-Range) |
Concurrent DML | خیر | بله | بله (همزمانی بهبودیافته با Row-Level Locking و Non-Blocking Reads) |
نگهداری شاخص به طور خودکار | بله | خیر | بله |
تجزیهوتحلیل عملکردی | بله (با استفاده از جدول Shadow) | خیر (امکان کسب از طریق انتقال دستی به CCI) | بله (کاملا یکپارچه) |
در زیر به ارائه مفهوم هر یک از موارد جدول فوق می پردازیم:
هفت عملکرد کلیدی
IBM DB2 BLU Acceleration، حول هفت عملکرد کلیدی ایجاد شده است که شامل مفاهیم و تکنولوژیهایی همچون جداول Columnstore، فشردهسازی دادهها، بهینهسازیهای مرتبط با پردازش در سطح سختافزاری و همچنین مدیریت حافظه و Cache میگردد. مایکروسافت نیز از این تکنولوژیها و مفاهیم پشتیبانی نموده اما سطوح پیادهسازی آن متفاوت میباشد. لازم به ذکر است که این عملکردها در 2016 SQL Server نیز توسعه مییابد.
عملکرد Query
IBM DB2 BLU Acceleration، مکانیسمی را برای بهبود عملکرد Queryها در فرآیندهای آنالیز پیاده نموده است. مایکروسافت نیز از این مکانیسم همراه با حالتی ویژه به نام Batch Mode پشتیبانی مینماید که دارای عملکرد بهتری میباشد اما DB2 قابلیت Batch Mode را ارائه نمیکند. در نسخه 2016 SQL Server اجرایBatch Mode برای اپراتورهای بیشتری امکانپذیر خواهد شد. برای مثال درحالحاضر امکان اجرای عملکرد Queryهای Order-By در Mode Batch در SQL Server 2014 فراهم نیست اما در SQL Server 2016 این قابلیت مهیا میگردد. مایکروسافت در پی آن است که با سرمایهگذاری بیشتر بر روی Mode Batch، امکان افزایش سرعت را در Queryهای انبار داده ایجاد نماید.
Concurrent DML
بارهای کاری موجود در IBM DB2 BLU Accelerationبه دلیل مشکلات مرتبط با فرآیند Blocking به خوبی با Concurrent DML سازگار نمیگردند. 2016 SQL Server شامل پیادهسازی Concurrent DML در Columnstore و به صورت Row-Level Locking میباشد که در نسخهی 2014 مشاهده نمیشود.
نگهداری شاخص به صورت خودکار
IBM DB2 BLU Acceleration دارای قابلیت نگهداری شاخص به صورت خودکار میباشد. به صورت کلی در زمان حذف دادهها، سطرهای مربوطه به آنها از شاخصِ Columnstore کلاستر شده به سرعت حذف نمیگردند. این سطرها با نشانه یا برچسب Delete علامتگذاری میشوند که نشان دهندهی حذف شدن سطرهاست. با گذشت زمان و حذف شدن تعداد زیادی از سطرها، آنها همچنان در Columnstore فضا اشغال میکنند. یک راه برای پاک کردن سطرهای حذف شده، بازسازی شاخصها پس از یک دوره زمانی است. DB2 بدین منظور قابلیت نگهداری از Index به صورت خودکار را ارائه مینماید که سطرهای حذف شده را به طور خودکار از شاخصها پاک میکند. این ویژگی درحالحاضر در SQL Server 2014 موجود نیست اما در2016 SQL Server در دسترس خواهد بود.
تجزیهوتحلیل عملیاتی
DB2 از مفهوم Table Shadow استفاده میکند که جداول Columnstore جدید را مبتنی بر یک جدول رابطهای موجود ایجاد مینماید. از دیدگاه برنامهکاربردی، کاربر از یک جدول OLTP و یک جدولِ Shadow که با آن در ارتباط است، برخوردار میباشد. کاربر میتواند بارهای کاری خود را بر روی جدول OLTP اجرا نماید و Queryهای تحلیلی به طور خودکار به سمت جدول Shadow هدایت میشوند. در SQL Server 2014 این فرآیند باید به صورت دستی انجام شود اما در نسخه آتی SQL Server کاربران می توانند تا یک شاخص Columnstore غیرکلاستری را ایجاد نمایند که از طریق آن بتوان Queryهای OLTP و تحلیلی را بر روی یک جدول یکسان اجرا نمود. بنابراین به جای استفاده از یک Table Shadow یک شاخص با قابلیت بهروزرسانی موجود خواهد بود.
ـــــــــــــــــــــــــــ
مقایسه تکنولوژی In-Memory در اوراکل، IBM و SQL Server – قسمت اول
مقایسه تکنولوژی In-Memory در اوراکل، IBM و SQL Server – قسمت دوم
مقایسه تکنولوژی In-Memory در اوراکل، IBM و SQL Server – قسمت سوم