معرفی پایگاه داده های NoSQL

در طی چند سال اخیر شرکت های تکنولوژی بزرگی مانند Netflix، Hulu، Uber و فیسبوک به پایگاه داده های NoSQL یا غیر رابطه ای روی آورده اند. در این مقاله معرفی مختصری درباره ی انواع پایگاه داده های NoSQL خواهیم داشت و آن ها را با پایگاه داده های سنتی SQL مقایسه خواهیم کرد.

رابطه ای در مقایسه با غیر رابطه ای

تفاوت کلیدی بین پایگاه داده NoSQL و SQL این است که یک پایگاه داده ی SQL، یک پایگاه داده ی رابطه ای است. یک پایگاه داده ی رابطه ای داده ها را در جداول ذخیره می کند که این جداول با ستون هایی سازماندهی شده اند. هر ستون یک نوع داده را ذخیره می کند (عدد صحیح،رشته، تاریخ و غیره) و هر ردیف یک نمونه از جدول است. پایگاه داده های غیر رابطه ای داده ها را در جداول ذخیره نمی کنند در عوض راه های گوناگونی برای ذخیره سازی داده در پایگاه داده های NoSQL وجود دارد (کلید-مقدار، مبتنی بر سند، مبتنی بر ستون) در این مقاله بطور خلاصه این سه دسته را بررسی خواهیم کرد.

ذخیره سازی کلید-مقدار (Oracle NoSQL،Redis،Amazon Dynamo)

پایگاه داده های کلید-مقدار ساده ترین نوع پایگاه داده های NoSQL هستند. ساختار اصلی داده ها به صورت دیکشنری یا نقشه است. یک مقدار می تواند به صورت عدد صحیح،رشته،JSON یا یک آرایه با یک کلید که برای ارجاع دادن به مقادیر از آن ها استفاده می شود، می باشد. برای مثال می توانید یک کلید به عنوان id مشتری داشته باشید که به یک مقداری که شامل یک رشته از نام کاربر است اشاره می کند. استفاده از ساختار JSON باعث پیچیدگی مقدار می شود زیرا می تواند با یک کلید مرتبط شامل یک دیکشنری از اطلاعات درباره مشتری شود. از مزایای این حالت ذخیره سازی سریع داده ها ( به دلیل سادگی آن)، ذخیره سازی یکپارچه که به کاربران این امکان را می دهد تا داده ها را در اسرع وقت ذخیره یا بازیابی کنند و به شدت برای داده های نامرتبط مناسب است. برای مثال فعالیت یک کاربر وب اپلیکیشن به فعالیت یک کاربر دیگر ارتباطی ندارد. اما در پایگاه داده های کلید-مقدار انجام کوئری های پیچیده دشوار می باشد علاوه بر این هرچه مقدار داده ها افزایش پیدا می کند دست یابی به یک کلید منحصر به فرد دشوار تر می شود.

ذخیره سازی سندگرا (MongiDB و Couchbase)

دسته ی بعدی پایگاه داده ی NoSQL پایگاه داده های سندگرا هستند. در این نوع داده ها ساختاری به صورت اسناد دارند. یک سند می تواند یک PDF، سند Microsoft word، XML یا فایل JSON باشد. از آنجایی که این حالت مخالف ستون و نوع داده است هر سند شامل کلید و مقدار می باشد. در این حالت دیگر نیاز نیست که تمام استاد یک ساختار داده ای داشته باشند به همین دلیل برای اضافه کردن داده می توان بدون دست زدن به ساختار کل پایگاه داده به سادگی یک سند دیگر اضافه کرد. اسناد در مجموعه هایی گروه بندی می شوند که اسناد هر گروه یک هدف مشابه برای یک جدول رابطه ای دارند. پایگاه داده های سند گرا یک تابع کوئری برای جستجو مجموعه ها با ویژگی های مشخص ارائه می دهند. از مزایای این دسته مدل سازی انعطاف پذیر داده ها (نیاز به اجبار مدل داده های مناسب را حذف می کند زیرا می تواند داده های ساختاری، بدون ساختار و نیمه ساختار یافته را مدیریت کند) می باشد. پایگاه داده های مبتنی بر سند امکان جداسازی مجموعه ها براساس موجودیت را دارد اما در کوئری های پیچیده محدودیت دارد و امکان Join نمی دهد.

ذخیره سازی مبتنی بر ستون (Bigtable گوگل، Cassandra، HBase)

پایگاه داده های مبتنی بر ستون داده ها را بجای اینکه در ردیف ذخیره کند، در ستون های گروه بندی شده ذخیره می کند و از مفهومی به نام keyspace استفاده می کند که مانند schema در پایگاه داده های رابطه ای می باشد. Keyspace شامل چندین گروه از ستون ها می باشد. گروه ستون ها مشابه جداول در یک مدل رابطه ای می باشد. اما به جای اینکه فقط شامل ردیف ها باشد یک گروه از ستون شامل ردیف هایی از ستون ها می باشد. هر ردیف در یک گروه ستون یک کلید منحصر به فرد دارد و هر ستون در یک ردیف شامل یک نام، مقدار و time stamp است.

از مزایای پایگاه داده های مبتنی بر ستون مقایسه داده ها، عملکرد بالا با توابع تجمعی (SUM، COUNT و غیره) و مقیاس پذیری می باشد. اما نوشتن داده های جدید در پایگاه داده های مبتنی بر ستون زمان بیشتری می گیرد. در پایگاه داده های مبتنی بر ردیف شما می توانید داده را تنها با یک عملیات بنویسید اما در پایگاه داده های مبتنی بر ستون باید در ستون ها به صورت یک به یک بنویسید. بنابراین پایگاه داده های مبتنی بر ستون برای پردازش داده ها با تعداد ستون های کم و تعداد ردیف های زیاد مناسب است.

مزایا و معایب NoSQL

معایب

1.کمبود استانداردسازی،پشتیبانی و کمال

همانطور که از نام این پایگاه داده ها پیداست، پایگاه داده های غیر رابطه ای از SQL استفاده نمی کند و یک زبان استاندارد برای خودش ندارد. همین باعث می شود که روند مهاجرت به NoSQL دشوار شود. در عملیات CURD تفاوت هایی بین SQL و NoSQL وجود دارد و عملیات کمی پیچیده تر می شود زیرا فرمت JSON تودرتو می تواند گیج کننده باشد و این روند به دلیل کمبود کمال NoSQL همینطور ادامه دارد زیرا درحال حاضر متخصص NoSQL نسبت به SQL بسیار کمتر است و به همین دلیل پشتیبانی از NoSQL کم است.

2.آنالیز و BI

SQL ابزار های گسترده ای برای هوش تجاری دارد اما در حال حاضر ابزار های آنالیزی زیادی برای NoSQL نداریم.

مزایا

1.انعطاف پذیری:مدیریت آسان تر و کارایی بیشتر با مدل های داده ای جدید تر دارد بنابراین NoSQL می تواند بسیار مناسب با نیاز های یک شرکت باشد.

2. مقیاس پذیری بالا با کمترین هزینه: بسیاری از امکانات NoSQL ، Open Source است که همین باعث می شود برای شرکت های کوچک نیز یک گزینه مناسب باشد. علاوه بر این ها بهترین امکان NoSQL امکان پردازش Big Data با هزینه ای نسبتا مناسب می باشد. SQL به سرورهای اختصاصی و سیستمهای ذخیره سازی متکی است که می تواند در نهایت هزینه ی آن در هر GB یا هزینه تراکنش های آن بیشتر از NoSQL شود. علاوه بر این ها پایگاه داده های NoSQL می توانند مقیاس بندی های مختلفی داشته باشند. در گذشته مدیران پایگاه داده ها برای بارگذاری داده های بیشتر باید سرور های بزرگ تر می خریدند تا مقیاس را افزایش دهند اما NoSQL می تواند در سرور های مختلفی توزیع شود تا بارگذاری افزایش پیدا کند بنابراین پایگاه داده های NoSQL با هزینه کمتری طراحی می شوند.

نظر شما

0 نظر

نظری ثبت نشده است