یکی برای همه-ادغام سنت و مدرنیته در FoundationDB
یکی برای همه
ادغام سنت و مدرنیته در FoundationDB
FoundationDB برای بهبود کیفیت دو فناوری دیتابیس، انباره داده جدیدی راه اندازی کرده است که می تواند اطمینان دیتابیس های تراکنشی را در کنار انطعاف پذیری و سرعت NoSQL عرضه کند. این انباره داده که FoundationDB نام دارد، برای سازمان هایی طراحی شده است که می خواهند دیتابیس های NoSQL خود را به یک ساختار در بیاورند.
دیـوید روزنـتال، یکی از مــوسسان FoundationDB معتقد است: «هر کسی به دنبال کشف بستر موفق بعدی است.» بسیاری از سازمان ها امروزه از ترکیبی از سیستم های NoSQL استفاده می کنند که شاید معروف ترین آنها Cassandra یا MongoDB باشد. این دیتابیس ها از عهده وظایفی بر می آیند که از عهده دیتابیس های SQL سنتی خارج است. «اجرایی کردن این دیتابیس ها در کلاسترهای مختلف کامپیوترها، مدیریت آنها را دشوار کرده است.»
بعد از سه سال توسعه، این شرکت نسخه بتایی از این دیتابیس عرضه کرده که برای استفاده آماده است.
روزنتال معتقد است: «کسانی که تازه وارد این حوزه از دیتابیس ها می شوند، احتمالا MongoDB را انتخاب خواهند کرد. اما کسانی که سال هاست از این ابزارها استفاده می کنند، از مشکلات تراکنش و تداومی که در این دیتابیس رخ داده است، نگران هستند و به دنبال یکپارچگی با دیتابیس های تراکنشی می گردند.»
FoundationDB آنقدر که یک موتور ذخیره سازی داده است، یک دیتابیس نیست و می تواند از مدل های مختلف ذخیره سازی داده پشتیبانی کند. این نرم افزار داده را به صورت ساده کلید و مقدار ذخیره می کند و از مدل های پیچیده و متنوعی از داده پشتیبانی می کند. مدل هایی چون گراف، اسناد، ارائه ها، جداول و ارائه های اندیس دار.
دیتابیس FoundationDB رابط استاندارد SQL را ندارد اما از طریق زبان های C، پایتون، روبی، Node.js و جاوا می توان به آن دسترسی پیدا و از آن استفاده کرد.
این موتور ذخیره سازی می تواند از چند مدل داده NoSQL به صورت همزمان پشتیبانی کند. مثلا می توان از مدل سند برای جایگزینی مانگو استفاده کرد یا از مدل کلید مقدار برای جایگزینی memcached، یا مدل گراف برای جایگزینی. Neo۴J
کلید اصلی کنترل انواع مختلف مدل های داده، یکپارچگی تراکنشی است که طی سال های اخیر، امکان حصول آن در دیتابیس های NoSQL وجود نداشت.
براساس نظریه CAP اریک بروور، وقتی یک دیتابیس را در چند گره مختلف پارتیشن بندی کنیم، این سیستم می تواند ثبات داشته (که تمام گره ها باید یک نوع داده داشته باشند) یا در دسترس باشد (سیستم همیشه در دسترس است، حتی اگر برخی از گره ها از دور خارج شده باشند) اما داشتن هر دو اینها ممکن نبود.
انباره های دیتای NoSQL طی چند سال اخیر به دلیل قابلیت انعطاف پذیری بی نظیرشان با استقبال زیادی مواجه شده اند، هر چند برخی از این انباره های داده، از تکنیکی به نام ثبات رویدادی استفاده می کنند، تکنیکی که در آن، داده به صورت لحظه ای میان چند گره، همخوان (Sync) نمی شود. عیب این مورد این است که می تواند در زمان کوتاه، باعث شود یک درخواست با چند پاسخ روبه رو گردد.
FoundationDB روشی را پیدا کرده است که بتواند هم ثبات و هم دسترس بودن را در اختیار کاربر قرار دهد. در این دیتابیس، از الگوریتمی به نام Paxos استفاده می شود. این الگوریتم مطمئن می شود که چند کپی از داده گرفته می شود ـ دیتابیس ۳ نسخه کپی از تمام داده هایی که ذخیره می گردد ایجاد و آنها را همخوان می کند.
مهندسان گوگل از Paxos برای معماری دیتابیس Spanner خود استفاده کرده اند، هر چند پیاده سازی گوگل کمی با FoundationDB تفاوت دارد.
تراکنش ها در مهندسی نرم افزار اهمیت کاربردی زیادی دارند و در ساخت اطلاعات انتزاعی مستحکم ضروری اند.
انباره داده FoundationDB برای اجرا در چند سرور طراحی شده است. یک سیستم متوسط FoundationDB می تواند ۲۴ گره، ۹۶ هسته ای با ۴۸ درایو SSD را پشتیبانی کند و تقریبا حدود ۱۰ ترابایت از اطلاعات را مدیریت و ذخیره و بازیابی می کند. روزنتال معتقد است در نسخه فعلی، امکان مدیریت داده با حجم پتابایت وجود ندارد.
اما این نرم افزار منبع باز نخواهد بود هر چند قرار است نسخه رایگان Community آن عرضه شود. انتهای سال میلادی زمان عرضه نسخه نهایی آن خواهد بود. این نرم افزار در محیط های لینوکس، OS X و ویندوز اجرا می شود.
تحلیل گر دیتابیس، کرت موناش در پست بلاگی نوشته است، تا به امروز هیچ مدلی از داده ها آنقدر کامل و جامع نبوده است که تمام کاربردها را یک جا در خود جا دهد.
با وجود این، FoundationDB را نمی توان نخستین تلاش ترکیب دیتابیس های رابطه ای سنتی با انباره های داده NoSQL نامید. VoltDB، که بخشی از آن را یکی از فعالان دیتابیس با نام مایکل استونبریکر توسعه داده است، قابلیت های تراکنشی را در دیتابیس های مقیم در حافظه قرار داده است که می تواند از نظر سرعت با دیتابیس های NoSQL رقابت کند. آخرین نسخه MySQL که از سوی اوراکل منتشر شده است نیز قابلیت دسترسی به روشی مشابه با APIهای Memcached را در خود دارد که می تواند به جمع آوری سریع تر اطلاعات منجر شود.
محمدرضا قربانی