کدام را انتخاب کنیم : SQL vs NewSQL vs NoSQL
۰
میانگین امتیاز
شما هم می توانید امتیاز بدهید!
انتخاب بانک اطلاعاتی مناسب در بین انواع بانکهای اطلاعاتی که امروزه در دنیا رواج پیدا کرده اند خود به مهارتی جدید تبدیل شده است .
اکثر ما عادت کرده ایم برای ذخیره اطلاعاتمان از MySQL یا SQL Server به طور سنتی استفاده کنیم و داده ها را در قالب جداول و رابطه بین آنها مدل سازی کنیم .
اما در دنیای تجاری امروز حجم عظیم داده هایی که برای بسیاری از کاربردها و نرم افزارها نیاز داریم با ساختار سنتی بانکهای اطلاعاتی قابل پیاده سازی نیستند.
مثالی عرض می کنم . مدتی پیش یکی از دوستان خارج از کشور که سایتی را برای نمایش ویدیوهای پرطرفدار شبکه های اجتماعی مانند فیس بوک راه اندازی کرده بودند در عرض چند ماه میلیونها رکورد را مجبور می شوند در بانک اطلاعاتی MySQL ذخیره کنند. یک روز بخشی از سایت از کار می افتد و با بررسی فایل ثبت تراکنش های سرور به این خطای بانک اطلاعاتی می رسند که برای اجرای یک دستور Select که نیاز به ارتباط چند جدول داشته است به ۱۳۰ گیگابایت فضای موقت روی سرور نیاز داشته که در دسترس نبوده است ..
این نیاز ذخیره سازی کلان داده باعث بوجود آمدن نوع جدیدی از بانک های اطلاعاتی به نام NoSQL شده است که قبلاْ در همین سایت راجع به آنها نوشته ام . بانکهای اطلاعاتی که مخصوص حجم عظیم داده ها طراحی شده اند و در آنها خبری از محدودیت های بانک های اطلاعاتی کلاسیک نیست و در بسیاری از آنها هم اصلا جدول و ارتباط نداریم . مثلا در بانکهای اطلاعتی سند محور مانند مانگو تمام اطلاعات یک دانشجو مانند اطلاعات شخصی و دروس پاس شده و درخواستهای تحصیلی همه در یک سند ذخیره می شوند که اگر نیازی به اطلاعات یک دانشجو داشتیم همه را یکجا داشته باشیم .
در بسیاری از این بانکهای اطلاعاتی تراکنش به معنای رایج آن در بانکهای اطلاعاتی کلاسیک را نداریم که البته برای بسیاری از کاربردها هیچ مشکلی ایجاد نمی کند مثلا سایتی که الان در حال طراحی آن با کاساندرا و پایتون هستیم قرار است اخبار را بر اساس محبوبیتشان روی شبکه های اجتماعی دسته بندی کند . حال اگر آمار یک خبر را تازه به روز کردیم ممکن است در همان لحظه در تمام سرورها به روز نشده باشد و بعضی از کاربران خبرمحبوب چند دقیقه پیش را ببینند که مشکلی در سایت ایجاد نمی کند . کافیست کاربر چند دقیقه دیگر سایت را بروز کند و اطلاعات جدید را مشاهده کند اما در کاربردهایی که تراکنش ها مهم هستند و همه باید یک داده را ببینند مانند تراکنشهای بانکی یا خریدهای اینترنتی باید از روش دیگری استفاده کرد .
بانکهای اطلاعاتی نوینی که امروزه به نام NewSQL شناخته می شوند در راستای همین نیاز به وجود آمده اند . بانکهایی که هم مقیاس پذیرند و با حجم عظیم داده ها مشکلی ندارند و هم مزایای بانکهای رابطه ای را دارند از جمله این بانکها می توان به VoltDB و جدیدا بانک اطلاعاتی Spanner که محصول گوگل است اشاره کرد. البته بازیگران اصلی این حوزه یعنی اوراکل و مایکروسافت هم معماری های خود را به سمت مقیاس پذیری و NewSQL سوق داده اند.
مدتیست بحث Polyglot Persistence یا استفاده از چند بانک اطلاعاتی در یک برنامه مطرح شده است یعنی شما برای ثبت رخدادها از یک بانک اطلاعاتی – داده های کاربران جاری مقیم درحافظه از یک بانک اطلاعاتی و داده های اصلی برنامه ازیک بانک دیگر استفاده کنید که در بسیاری از شرکتهای بزرگ هم این رهیافت استفاده می شود .
خلاصه کلام اینکه برای تعیین بانک اطلاعاتی برنامه ای که در حال طراحی آن هستید به داده های کلاسیک بانکهای اطلاعاتی بسنده نکنید ….