افزایش کارایی اپلیکیشن ها با In Memory OLTP
دستیابی به Response time پایین و کارایی بالا در بسیاری از پروژه ها از حیاتی ترین نیازها هستند. راهکارهای مختلفی جهت افزایش کارایی دیتابیس ها و برنامه ها وجود دارند که از جمله آن ها می توان به “بازنگری و طراحی بهینه دیتابیس ها و کدها” و “تهیه سخت افزارهای قوی تر” اشاره کرد ولی هر کدام از این روش ها معایب و محدودیت های خاص خود را دارند. گاها طراحی مجدد و ایجاد تغییرات جهت کارکرد بهتر بخشی از سیستم باعث بروز اختلال در دیگر بخش ها و یا ایجاد مشکلات امنیتی و … می شود. بدیهی است تهیه سخت افزارهای قدرتمندتر نیز نیازمند هزینه بیشتری خواهد بود که این موارد اهمیت راهکارهای افزایش کارایی را بیش از پیش مشخص می سازد.
یکی از مهم ترین روش های مطرح در افزایش کارایی استفاده از In Memory OLTP می باشد. کش کردن کردن query ها علاوه بر رفع مشکلات lock (حین انجام عملیات جدول قفل نمی شود) باعث کاهش شدید استفاده از CPU و همچنین کاهش I/O و استفاده از دیسک خواهد شد، در مدت زمان کمتری به کوئری ها پاسخ خواهد داد، blocking را کاهش می دهد و افزایش همروندی (concurrency) را به همراه خواهد داشت. بنابراین این امکان را فراهم خواهد شد که بدون تغییرات سخت افزاری و صرف هزینه performance بالاتری را تجربه کنید.
In Memory Data Grids And Distributed Caching
یکی از روش های کش، استفاده از In Memory Data Grid ها و کش توزیع شده (Distributed Caching) می باشد. IMDG یک پایگاه داده رابطه ای در memory یا یک NOSQL Database نیست. این مدل داده ای از توزیع داده ها در تعدادی سرور در یک مکان و یا در مکان های مختلف پیروی می کند. از ویژگی های این مدل می توان به موارد زیر اشاره کرد:
● تمامی سرورها می توانند برای هر سایت فعال باشند.
● همه داده ها در رم سرورها ذخیره شده اند.
● هر سرور می تواند بدون بروز اختلال در روند کاری سیستم از مجموعه جدا شده، تغییرات لازم در آن اعمال شود و مجددا وارد مجموعه شود.
● می توان با استفاده از بقیه سرورها امکان ریکاوری داده های از دست رفته در یک سرور را فراهم کرد.
در مقایسه با پایگاه های داده ای رایج این پایگاه داده performance بسیار بالاتری خواهد داشت زیرا به جای Disk از RAM به عنوان محل ذخیره استفاده می کند و طبیعتا به دلیل ساختار رم نیازی به حدس زدن دیتای مورد استفاده در تراکنش های آینده نخواهد بود. این مدل داده ای به علت استفاده از ساختار key/vlaue انعطاف پذیری بالاتری خواهد داشت و مقیاس پذیری بالاتری را ارائه خواهد کرد که امکان انجام هر گونه ارتقای سخت افزاری و نرم افزاری در سرورها بدون بروز اختلال و قطعی را فراهم خواهد کرد.
با وجود تمامی مزایای ذکر شده برای IMDG گاها طراحی سیستم متناسب با آن بسیار سخت و وقت گیر خواهد بود، ابزارها و سیستم هایی توسط کمپانی های معتبر برای این موارد ارائه شده اند که در پست های بعدی آن ها را مورد بررسی قرار خواهیم داد. استفاده از این API ها تا حد زیادی به عملیاتی کردن این تئوری ها کمک خواهد کرد.
In-Memory Dynamic Caching
از دیگر از روش های caching می توان به In-Memory Dynamic Caching اشاره کرد. در این روش نیازی به کدهای اضافی یا ایجاد تغییرات پایگاه داده برای ایجاد سازگاری نداریم و این به عنوان یک مزیت کلیدی نسبت به روش های distributed caching و data grid ها به حساب می آید. به دلیل عدم نیاز به دستکاری برنامه و دیتابیس با استفاده از این روش می توان به برنامه های ۳rd-party که از پایگاه داده SQL Server استفاده می کنند سرعت بخشید. با استفاده از In Memory Dynamic Caching تمامی query ها و stored procedure ها آنالیز می شوند و عناصر وابسته ی آن ها(table , view , trigger ها , procedure ها و …) شناسایی شده و به صورت اتوماتیک مدیریت می شوند. تمامی query های read-based و procedure ها در memory ذخیره می شوند و دستورات write در پایگاه داده monitor می شوند و عملیات cache invalidation در زمان اجرا انجام می شود. با توجه به راحتی پیاده سازی و اهمیت این روش در آینده روی پیاده سازی و میزان تاثیر Dynamic Caching بیشتر صحبت خواهیم کرد.
در پست بعدی به معرفی و بررسی In-Memory OLTP در SQL Server 2014 خواهیم پرداخت.