خانه / NoSQL / مقایسه و انتخاب / کدام را انتخاب کنیم : SQL vs NewSQL vs NoSQL
NewSQL

کدام را انتخاب کنیم : SQL vs NewSQL vs NoSQL

انتخاب بانک اطلاعاتی مناسب در بین انواع بانکهای اطلاعاتی که امروزه در دنیا رواج پیدا کرده اند خود به مهارتی جدید تبدیل شده است .

اکثر ما عادت کرده ایم برای ذخیره اطلاعاتمان از MySQL یا SQL Server به طور سنتی استفاده کنیم و داده ها را در قالب جداول و رابطه بین آنها مدل سازی کنیم .

اما در دنیای تجاری امروز حجم عظیم داده هایی که برای بسیاری از کاربردها و نرم افزارها نیاز داریم با ساختار سنتی بانکهای اطلاعاتی قابل پیاده سازی نیستند.

مثالی عرض می کنم . مدتی پیش یکی از دوستان خارج از کشور که سایتی را برای نمایش ویدیوهای پرطرفدار شبکه های اجتماعی مانند فیس بوک راه اندازی کرده بودند در عرض چند ماه میلیونها رکورد را مجبور می شوند در بانک اطلاعاتی MySQL ذخیره کنند. یک روز بخشی از سایت از کار می افتد و با بررسی فایل ثبت تراکنش های سرور به این خطای بانک اطلاعاتی می رسند که برای اجرای یک دستور Select که نیاز به ارتباط چند جدول داشته است به ۱۳۰ گیگابایت فضای موقت روی سرور نیاز داشته که در دسترس نبوده است ..

این نیاز ذخیره سازی کلان داده باعث بوجود آمدن نوع جدیدی از بانک های اطلاعاتی به نام NoSQL‌ شده است که قبلاْ در همین سایت راجع به آنها نوشته ام . بانکهای اطلاعاتی که مخصوص حجم عظیم داده ها طراحی شده اند و در آنها خبری از محدودیت های بانک های اطلاعاتی کلاسیک نیست و در بسیاری از آنها هم اصلا جدول و ارتباط نداریم . مثلا در بانکهای اطلاعتی سند محور مانند مانگو تمام اطلاعات یک دانشجو مانند اطلاعات شخصی و دروس پاس شده و درخواستهای تحصیلی همه در یک سند ذخیره می شوند که اگر نیازی به اطلاعات یک دانشجو داشتیم همه را یکجا داشته باشیم .

در بسیاری از این بانکهای اطلاعاتی تراکنش به معنای رایج آن در بانکهای اطلاعاتی کلاسیک را نداریم که البته برای بسیاری از کاربردها هیچ مشکلی ایجاد نمی کند مثلا سایتی که الان در حال طراحی آن با کاساندرا و پایتون هستیم قرار است اخبار را بر اساس محبوبیتشان روی شبکه های اجتماعی دسته بندی کند . حال اگر آمار یک خبر را تازه به روز کردیم ممکن است در همان لحظه در تمام سرورها به روز نشده باشد و بعضی از کاربران خبرمحبوب چند دقیقه پیش را ببینند که مشکلی در سایت ایجاد نمی کند . کافیست کاربر چند دقیقه دیگر سایت را بروز کند و اطلاعات جدید را مشاهده کند اما در کاربردهایی که تراکنش ها مهم هستند و همه باید یک داده را ببینند مانند تراکنشهای بانکی یا خریدهای اینترنتی باید از روش دیگری استفاده کرد .

بانکهای اطلاعاتی نوینی که امروزه به نام NewSQL شناخته می شوند در راستای همین نیاز به وجود آمده اند . بانکهایی که هم مقیاس پذیرند و با حجم عظیم داده ها مشکلی ندارند و هم مزایای بانکهای رابطه ای را دارند از جمله این بانکها می توان به VoltDB و جدیدا بانک اطلاعاتی Spanner که محصول گوگل است اشاره کرد. البته بازیگران اصلی این حوزه یعنی اوراکل و مایکروسافت هم معماری های خود را به سمت مقیاس پذیری و NewSQL سوق داده اند.

مدتیست بحث Polyglot Persistence یا استفاده از چند بانک اطلاعاتی در یک برنامه مطرح شده است یعنی شما برای ثبت رخدادها از یک بانک اطلاعاتی – داده های کاربران جاری مقیم درحافظه از یک بانک اطلاعاتی و داده های اصلی برنامه ازیک بانک دیگر استفاده کنید که در بسیاری از شرکتهای بزرگ هم این رهیافت استفاده می شود .

خلاصه کلام اینکه برای تعیین بانک اطلاعاتی برنامه ای که در حال طراحی آن هستید به داده های کلاسیک بانکهای اطلاعاتی بسنده نکنید ….

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload CAPTCHA.