دیتابیسهای IMDB دیتابیسهایی هستند که دیتا را در رم سیستم ذخیره میکنند و از آن میخوانند.
با استفاده از این روش مزیت سرعت بیشتر را نسبت به دیتابیسهای معمولی داریم.
این دیتابیسها برای اپلیکیشنهایی طراحی شدهاند که نیاز به جواب دهی در کمترین زمان ممکن را دارند (میکرو ثانیه) یا ترافیک بالایی دارند.
درحالی که ذخیره دیتا در این نوع دیتابیسها بسیار بهینه میباشد و سرعت را بالاتر میبرد، این روش ذخیره دیتا بسیار گران تمام میشود.
روشی که برای استفاده بهینه از این مدل دیتابیسها و کنترل هزینهها پیشنهاد میشود این است که دادههایی که بیشترین دسترسی را نیاز دارند در مموری ذخیره کنیم و بقیه دادهها را در دیسک نگهداری کنیم.
از آنجایی که در بعضی سیستمها تشخیص اینکه چه دادهای را باید در دیسک ذخیره کنیم و چه دادهای را در مموری برخی از این سیستمها بصورت داینامیک و بر حسب میزان استفاده از دیتا آنها بین دیسک و مموری تقسیم میکنند. این روش با کش کردن تفاوت دارد. در کش کردن آخرین دیتای ورودی در مموری ذخیره میشود ولی در این روش آخرین دیتایی که اپلیکیشن به آن دسترسی پیدا کرده.
این انعطاف پذیری استفاده Hybrid نامگذاری شده، و تعادلی بین موارد زیر را بوجود میارد:
معروفترین دیتابیسهای IMDB با ماندگاری: Redis, Aerospike, Tarantool
سوال: چگونه دیتای ذخیره شده در مموری بدون پایین آوردن عملکرد ماندگار میشود؟
جواب: نکته این است که دیتا همچنان در مموری ذخیره میشود اما علاوه بر این هر عملیات در یک تراکنش روی دیسک هم ذخیره میشود به عکس زیر توجه کنید:
اگر دقت کنید در حالی که اکنون دیتای شما ماندگاری دارد کوئریهای شما همچنان سرعت خودشان را حفظ میکنند زیرا مثل قبل دیتا را از مموری میخوانند.
اما عملیات تراکنش ذخیره روی دیسک چطور؟
هر تراکنش نه تنها باید دیتای مموری را بروز کند بلکه برای جلوگیری از ازدست رفتن دیتا باید روی دیسک هم ذخیره شود و دیسک سرعت کمی دارد. به عکس توجه کنید:
تراکنشها فقط به صورت append (ضمیمه شونده) به لاگ اضافه میشوند و خوبی آن این است که چون به صورت ضمیمه شونده اضافه میشوند دیسکها سرعت بهتری دارند. (دیسکها در نوشتن اطلاعات میتوانند سرعتی برابر 100 Mbps داشته باشند.) پس دیسکها اگر به صورت متوالی استفاده شوند میتوانند سرعت خوبی داشته باشند و میتوانند در ثانیه حدود ۱۰۰ عملیات را انجام دهند.
اگر SSD را در نظر بگیریم اوضاع بهتر هم میشود چرا که درایوهای حالت جامد یا همان SSDها سرعتی برابر 200–300 Mbps میتوانند داشته باشند.
نکتهای که بهتر است مورد توجه قرار گیرد این است که دیتایی که نیاز به دسترسی سریع دارند و دیتایی این نیاز را ندارند را در یک RDBMS قرار نداشته باشند.
In-memory databases | wikipedia
When and why I use an in-memory database or a traditional database management system | Medium
What an in-memory database is and how it persists data efficiently | Medium
با عرض معذرت بابت مشکلات فراوان این مطلب.
خیلی خوشحال میشوم نظرات خود را اینجا بگذارید.
با تشکر از شما.
سروش خیرخواه | Soroush Kheirkhah
دانشجوی رشته علوم کامپیوتر - دانشگاه آزاد واحد تهران مرکز
استاد راهنما:
دکتر مریم حاجی اسمعیلی | Dr.Maryam Hajiesmaeili
دکترای علوم کامپیوتر از دانشگاه کینگستون لندن | PhD of computer science from Kingston university of London