حرکت به سمت کسبوکار Real-time با دیدگاههای Real-time
قابلیتهای In-Memory OLTP و In-Memory Columnstore در Microsoft SQL Server با ایجاد یک جهش در نسل راهکارهای OLTP و انبارهای داده (Data Warehousing)، موجب بهبود ده تا صد برابری در عملکرد معمول این سیستم گشته است. با In-memory OLTP، سازمانها میتوانند برنامههای کاربردی مبتنی بر تراکنش (Transactional Applications) را تا 30 برابر سرعت بخشیده و با ارتقای سرعت اجرای Queryها و گزارشها تا صد برابر، با سرعت بیشتری به ارائه دیدگاههای کسبوکار بپردازند. شاخصهای In-Memory Columnstore با نرخ اسکن دهها میلیارد سطر در ثانیه در سختافزارهای صنعتی معمول، این امکان را برای کاربران فراهم میکند تا حجم قابل توجهی از داده را با سرعت فوقالعاده بالا تبادل و شناسایی نمایند. SQL سرور به ارائه یک معماری قدرتمند برای پلتفرم داده میپردازد که با قابلیت تبادل و آنالیز دادهها به صورت تقریبا Real-Time به پیشبرد اهداف کسبوکار منجر میشود.
تراکنشهای OLTP
In-memory OLTP یک موتور پایگاهداده با حافظهی بهینهسازی شده است که برای بهینه نمودن بارکاری OLTP با SQL Server ادغام شده است. موتور OLTP جهت پشتیبانی از نرخهای همزمانی (Concurrency Rates) فوقالعاده بالا، از ساختارهای دادهی Lock-Freeو Latch-Free و کنترل همزمانی چندنسخهای استفاده مینماید. در نتیجه، توان عملیاتی با مقیاسبندی خطی برای تراکنشهای پایگاهداده افزایش مییابد. بازدهی موفق عملکرد به عوامل زیادی بستگی دارد اما یک بهبود 2 تا 20 برابری کاملا طبیعی است. در واقع میتوان شاهد افزایش 30 برابری بازدهی عملکرد تراکنشها در یک پایگاهداده در مقایسه با موتور پایگاهداده و جداول به روش سنتی بود.
Queryهای تجزیه و تحلیل
شاخص In-memory Columnstore در SQL Server، با بهرهمندی از شیوه ذخیرهسازی دادهها و پردازش Queryهای به صورت ستونی، به ذخیرهسازی و مدیریت دادهها میپردازد. شاخصهای Columnstore میتواند با ایجاد عملکردی سریعتر برای Queryهای معمول در انبارداده از جمله Queryهای مربوط به فیلترینگ، Aggregating، گروهبندی و Star-join، تجربه متفاوتی از انبارداده را برای کاربر به ارمغان آورد. از قابلیت Index نمودن Columnstore میتوان برای دستیابی به بازدهی تا 100 برابر بیشتر در عملکرد Query نسبت به شیوههای سنتی ذخیرهسازی Row-Oriented و فشردهسازی دادهها در الگوهای معمول استفاده نمود.
بررسی In-Memory OLTP در SQL Server
جداول با حافظههای بهینه سازیشده (Memory-Optimized Table)
In-Memory OLTP در SQL Server امکان ایجاد جداول In-memory Optimized OLTP را در پایگاههای داده رابطهای (Relational Database) موجود، فراهم مینماید. این جداول برخلاف جداول استاندارد Disk-Base به طور کامل در In-memory استقرار مییابند. تفاوت کلیدی جداول Memory-Optimized و Disk-Based دراین است که در جداول Memory-Optimized دادهها به صورت سطری ذخیره میشوند و در صورت دسترسی به این جداول نیازی به خوانده شدن این صفحات از Disk به حافظه نمیباشد. همچنین مجموعهای از فایلهای Checkpoint (فایل Delta و دادههای در کنار هم) در یک مجموعه از فایلهای Memory-Optimized برای تداوم دادهها ایجاد میشود، درست مانند فایلهای دادهای که برای جدولهای Disk-Based به کار میروند. اگر چه این فایلهای Checkpoint برخلاف فایلهای دادهی مورد استفاده در جداول Disk-Based، به صورت Append-only میباشند که امکان بهرهمندی از تمامی پهنای باند I/O در Storage را برای SQL server فراهم مینماید. فایلهای Checkpoint بههمراه Logهای تراکنش موجب ایجاد پایداری و ماندگاری کامل دادهها شده و برای بازیابی دادهها در هنگام Restart کردن یا برای پشتیبانگیری و یا بازیابی در پایگاهداده بهکار میروند.
دو نوع اصلی از جداول In-memory Optimized OLTP وجود دارد که عبارتند از: SCHEMA_AND_DATA یا جدولهای Durable و SCHEMA_ONLY یا جدولهای Non-Durable. جدولهای Durable میتوانند پایداری و ماندگاری کامل بارکاری OLTP را درست مانند جدولهای Disk-Based تضمین نمایند؛ این تنظیمات در هنگام ایجاد جداول Memory-Optimized به صورت پیشفرض موجود میباشد. جدولهای SCHEMA_ONLY صرفا الگوی جداول را نگه میدارند و دادهها در آن ذخیره نمیگردد. این نوع جداول برای سناریوهایی بهکار میرود که نیازی به پایداری و ماندگاری دادهها در بارکاری OLTP وجود نداشته باشد؛ به عنوان مثال میتوان از مدیریت وضعیت Sessionها برای یک برنامه کاربردی، اجرای جداول درسناریوی ETL و به عنوان جایگزینی برای جداول موقت در TempDB نام برد که از یک نوع جدول استفاده میکنند.
شاخصها در جداول Memory-Optimized
جداول Memory-Optimized از دو نوع شاخص (Index) بدون قابلیت کلاستر پشتیبانی میکنند که عبارتند از: شاخصهای Hash و Range. شاخصهای Hash به ارائه مسیرهای دسترسی بهینه برای جستجوهای یکسان میپردازد؛ درحالیکه شاخصهای Range برای Queryهای شامل گزارههایی در محدودهی مشخص و یا جهت بازیابی منظم دادهها مورد استفاده قرار میگیرد.
هر یک از جدولهای Memory-Optimized باید حداقل دارای یک شاخص باشند. یک شاخص منحصر به فرد در جدولهای Durable Memory-Optimized جهت شناسایی هر سطر در هنگام ارزیابی تغییر در رکوردهای مربوط به Logهای تراکنشی در حین فرآیند بازیابی مورد نیاز میباشد. شاخصها در جداول In-Memory صرفا به صورت In-memory استقرار مییابند. این شاخصها در فایلهای Checkpoint ذخیره نشده و هیچگونه تغییری نیز در آنها اعمال نمیگردد. این شاخصها درست مانند شاخصهای B-Tree در جداول Disk-Based، در تمام طول عملیات اصلاح و تغییرات در جدولهای Memory-Optimized به صورت خودکار نگهداری میشوند اما در صورت Restart شدن Server SQL شاخصهای موجود در جداول Memory-Optimized همزمان با ورود دادهها به حافظه بازسازی میگردند.
همراهان گرامی در قسمت دوم (پایانی) به بررسی In-Memory Columnstore خواهیم پرداخت.
ـــــــــــــــــــــــــــــــــــــــــ