امیر حسین اسمعیل زاده
امیر حسین اسمعیل زاده
خواندن ۳ دقیقه·۲ سال پیش

دیتابیس های ستونی

دیتابیس ها بخش جدا نشدنی از توسعه نرم افزار هستن و دیتابیس های رابطه ای مثل MySQL, SQL Server و PostgresQL از اولین انتخاب های توسعه دهنده ها هستند.

این دیتابیس ها می تونن چندین میلیون رکورد رو به خوبی مدیریت کنن و خب خیلی وقتا این کافی هست.

ولی برای نرم افزار های بزرگ که می تونن تعداد خیلی بیشتری رکورد داشته باشن این دیتابیس ها شاید ضعیف عمل کنند.

اگه شما چندین میلیارد یا حتی تریلیارد رکورد داشته باشین بهینه کوئری زدن اونها یه چالش بزرگ می تونه براتون باشه. مخصوصا کوئری های آنالیزی که الان شرکت های بزرگ همیشه ازشون استفاده می کنن .

اینجاست که دیتابیس های ستونی وارد می شن . همون طور که از اسمشون معلوم هست مهم ترین تفاوتشون با دیتابیس های سنتی (سطری) ذخیره اطلاعات به صورت ستونی هستش. حالا این یعنی چی ؟

فرضا ما جدول زیر رو برای نگه داری اطلاعات کاربران داریم.

جدول کاربران
جدول کاربران


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


دیتابیس های ستونی اطلاعات هر ستون رو توی یه فایل جداگانه نگه می دارن . یعنی اگه شما یه جدول داشته باشین که بر فرض 5 تا ستون داشته باشه ، 5 تا فایل برای این جدول ساخته میشه و توی هر فایل فقط اطلاعات اون ستون نگه داری میشه.


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


مزایای دیتابیس های ستونی

  • دیتابیس های ستونی به خوبی می تونن دیتا رو فشرده کنن و از حجم کمتری از دیسک استفاده کنند.
  • چون اطلاعات به صورت ستونی نگهداری می شن ، کوئری های aggregation مثل (SUM , COUNT , AVG) به سرعت اجرا میشن.
  • مقیاس پذیری یکی ازمهم ترین ویژگی های دیتابیس ستونی هست . اکثر این پایگاه داده ها می تونن که داده ها رو در چندین نود (سرور) پخش کنند و برای همین حجم داده ای که می تونن ذخیره کنن نزدیک به نامحدود هست .
  • انعطاف پذیری این دیتابیس ها از دیتابیس های سطری بیشتر است . شما می تونین به راحتی ستون های جدید رو اضافه یا حذف کنین بدون این که اختلالی در پایگاه داده ایجاد بشه .


معایب دیتابیس های ستونی

  • دیتابیس های ستونی در اجرای عملگر join ضعیف عمل می کنند .
  • قابلیت OLTP را ندارند.
  • برای لود های سبک در حد چند سطر مناسب نیستند.


دیتابیس های ستونی NoSQL هستن ؟

مهم ترین تفاوت دیتابیس های ستونی با دیتابیس های سنتی روش ذخیره سازی اطلاعات اون ها هست و یه دیتابیس ممکن هست که رابطه ای باشه ولی اطلاعات رو به صورت ستونی ذخیره کنه. برای مثال دیتابیس های mariaDb و CrateDb دیتابیس های ستونی و sql هستند.

با این حال ، بخش بزرگی از دیتابیس های ستونی NoSQL هستند که از مشهور ترین هاشون می تونیم به Cassandra , apache Hbase و Amazon Redshift اشاره کنیم.


جمع بندی

دیتابیس های ستونی سریع و مناسب کار با حجم بالایی از داده هستن . برای همین یکی از مهم ترین استفاده های دیتابیس های ستونی ، پیاده سازی انبار داده (data warehouse) هستش که باید حجم بسیار بالایی از داده رو نگه دارن و اون رو مدیریت کنند.

این دیتابیس ها همراه با مزایاشون ، معایبی هم دارند که باید حتما در نظر گرفته بشن و نمی تونیم بگیم که از دیتابیس های سنتی بهتر هستند.


دیتابیس‌های ستونیدیتابیسnosqlsqlcassandra
شاید از این پست‌ها خوشتان بیاید