در قسمت اول از سری مقالات مقایسه تکنولوژی In-Memory در انواع دیتابیس ها به بررسی این تکنولوژی در دیتابیس های شرکت اوراکل و همچنین مقایسه آن با SQL Server پرداخته شد. در این قسمت به بررسی سایر قابلیت های آن خواهیم پرداخت.
قابلیت In-Memory Columnstore در Oracle 12c
شرکت اوراکل تکنولوژی In-Memory Columnstore را به عنوان یک Add-On انتخابی همراه با Oracle Database 12c برای کاربران ارائه مینماید. در صورت فعال شدن این گزینه برای جداول یا فضاهای جدولی، اوراکل یک کپی از زیرمجموعهی دادهها در فرمت ذخیرهسازی به صورت ستونی (Columnar Storage) به وجود میآورد. بدین ترتیب مدیران پایگاهداده میتوانند صرفا دادههای In-Memory و بسیار مهم به لحاظ عملیاتی را انتخاب نموده و فرآیند آنالیز را تسریع نمایند. روند تغییر در دادههایIn-Memory همواره ادامه نمییابد و باید در هنگام Restart شدن Oracle DB دوباره ایجاد شود. طراحی Oracle In-Memory به شکلی است که برای برنامههای کاربردی و ابزارها به صورت Transparent باشد.
مقایسه Oracle 12c و SQL Server In-Memory Columnstore
در جدول زیر به مقایسه ویژگیهای In-memory در Oracle12c و SQL Server میپردازیم.
ویژگی | Oracle 12c | SQL Server 2014 | SQL Server 2016 |
تداوم Columnstore | خیر | بله | بله |
Aggregate Pushdown | بله | خیر | بله |
جستجو برای نسخههای بعدی | خیر | خیر | بله |
دیدگاههای عملی به Columnstore | بله | خیر | خیر |
یکپارچهسازی با In-Memory OLTP | خیر | خیر | بله |
پردازش دستهای (Batch) | خیر | بله | بله |
یکپارچهسازی با R | بله | خیر | بله |
پیکربندی و عملیات | ارائه تعداد زیادی Knob که پیکربندی و عملیات را پیچیدهتر مینماید. | خودکارسازی کامل بعد از ایجاد Indexهای Columnstore | خودکارسازی کامل بعد از ایجاد Indexهای Columnstore، شامل مدیریت ردیفهای پاک شده |
جدول In-Memory: مقایسه Oracle 12c و SQL Server
تداوم Columnstore
انبارهای داده (Data Warehouse) معمولا بزرگ بوده و نمیتوان انتظار داشت که همه دادهها در شرایط مختلف به صورت In-Memory وجود داشته باشند. در صورتی که پایگاهداده اوراکل Restart شود، هیچ دادهای در Columnstore Index وجود نداشته و دادهها در Background ایجاد میشوند. بنابراین Queryهای آنالیز قادر به استفاده از Columnar Storage نمیباشند. SQL Server میتواند Index مربوط به Columnstore را نگهداری نماید و در نتیجه نیازی به بازسازی آن یا آمادهسازی Memory جهت حفظ و نگهداری به صورت In-Memory وجود ندارد. دادهها در SQL Server بر اساس Queryهایِ اجرا شده، وارد و خارج میشوند.
Aggregate Pushdown
این قابلیت به عملیاتهای جمعبندی از پیش محاسبه شده (مانند جمع کردن، میانگینگیری و غیره) برای مقادیر پایگاهداده و وارد نمودن آن به لایه ذخیرهسازی اطلاق میشود. لازم به ذکر است که Oracle 12c از قابلیت Aggregate Pushdown پشتیبانی مینماید. در SQL Server 2014، عملیات جمعبندی در خارج از موتور ذخیرهسازی و در لایه اجرایی انجام میشود. در نسخه بعدی SQL Server، قرار است این قابلیت به لایه ذخیرهسازی منتقل و موجب بهبود چهار برابری و یا حتی بیشتر در عملکرد شود.
عملیات Query در نسخههای بعدی
در نسخههای بعدی SQL Server، کاربران میتوانند Query در انبار دادهها را در نسخههای ثانویه اجرا نمایند. اوراکل شامل یک پیکربندی مشابه با AlwaysOn میباشد اما به کاربران اجازه نمیدهد که Queryهای انبارداده را بر روی نسخههای ثانویه اجرا نمایند. این یک مزیت عمده برای SQL Server به شمار میرود، در حالی که بارهای کاری انبار داده به لحاظ عملیاتی مهم بوده و برای دسترسپذیری بالا پیکربندی میشوند.
دیدگاههای عملی به Columnstore
این دیدگاه دارای کاربردهای خاصی میباشد. در صورتی که کاربر قادر به ایجاد یک دیدگاه عملی نسبت به جدول OLTP باشد و این دیدگاه را در فرمت Columnstore ذخیره نماید، در نهایت به یک عملکرد مکعب مانند منتهی میشود. همچنین دادههایِ از پیش جمعآوری شدهای نیز مانند OLTP وجود دارند که همواره به روز نگهداشته میشوند. در هر صورت هزینه نگهداری بسیار زیاد است و اگرچه ارزش دارد اما مانع عملکرد بار دادهها و OLTP خواهد شد.
یکپارچهسازی با In-Memory OLTP
در حال حاضر، SQL Server 2014 و Oracle 12c از یکپارچهسازی با In-Memory OLTP پشتیبانی نمیکنند. اگرچه Columnstore Index و بارهای کاری OLTP توسط SQL Server 2016 به صورت Transparent یکپارچه میشوند. برای انجام این کار یک Columnstore Index در یک یا چند جدول در بارکاری OLTP ایجاد میشود. از آنجاییکه Columnstore قابل بهروزرسانی میباشد، این امکان را برای کاربران فراهم مینماید تا بارکاری OLTP را در جدول اجرا نموده و فرآیند Query را در همان جدول انجام دهند.
پردازش دستهای یا Batch Mode Processing
قابلیت پردازش دستهای، یکی از مزایای دیگر SQL Server 2014 میباشد که عمدتا عملکرد Query را حدود 2 تا 4 برابر بهبود میبخشد. لازم به ذکر است که اوراکل تا کنون چنین تکنولوژی را در اختیار نداشته است.
ــــــــــــــــــــــــــــ
مقایسه تکنولوژی In-Memory در اوراکل، IBM و SQL Server – قسمت اول
مقایسه تکنولوژی In-Memory در اوراکل، IBM و SQL Server – قسمت دوم