معرفی
نمایه های Columnstore در SQL یک ویژگی پایگاه داده تخصصی است که می تواند عملکرد پرس و جو و فشرده سازی داده ها را در سناریوهای خاص به طور قابل توجهی بهبود بخشد. آنها برای رسیدگی به چالش های عملکرد و ذخیره سازی مرتبط با مدیریت حجم زیادی از داده ها در انبار داده ها و بارهای کاری تحلیلی طراحی شده اند. این مقاله به تاریخچه، ساختار داخلی، ویژگیهای کلیدی، انواع، استفاده و دیدگاههای آینده نمایههای Columnstore در SQL میپردازد.
تاریخچه و خاستگاه
نمایه های Columnstore در SQL برای اولین بار توسط مایکروسافت با انتشار SQL Server 2012 معرفی شدند. مفهوم ذخیره سازی ستونی، که زیربنای نمایه های Columnstore است، به دهه 1970 برمی گردد. با این حال، در اواسط دهه 2000 با افزایش داده های بزرگ و نیاز به فشرده سازی داده ها و عملکرد پرس و جو بهتر محبوبیت پیدا کرد. پیادهسازی نمایههای Columnstore توسط مایکروسافت، پیشرفت قابل توجهی را در این زمینه نشان داد و آن را به یک ویژگی استاندارد در بسیاری از سیستمهای مدیریت پایگاه داده مدرن تبدیل کرد.
اطلاعات دقیق در مورد نمایه های Columnstore در SQL
فهرست Columnstore فناوری است که داده ها را به جای ذخیره سازی سنتی مبتنی بر ردیف، سازماندهی و ذخیره می کند. در ذخیره سازی مبتنی بر ردیف، داده های یک جدول، سطر به سطر ذخیره و بازیابی می شوند. در مقابل، با نمایههای Columnstore، دادههای درون هر ستون با هم ذخیره و پردازش میشوند که منجر به فشردهسازی بهبود یافته و عملکرد بهتر برای پرس و جوهای تحلیلی میشود.
فهرستهای Columnstore برای بارهای کاری فشرده مناسب هستند، جایی که پرسوجوها شامل مقادیر زیادی داده و تجمیع میشوند. آنها می توانند گزارش دهی، انبار داده و پرس و جوهای تحلیلی را که نیاز به اسکن و پردازش مجموعه داده های بزرگ دارند، به میزان قابل توجهی تسریع کنند.
ساختار و عملکرد داخلی
ساختار داخلی یک نمایه Columnstore بر اساس بخش های ستون و فرهنگ لغت است. یک قطعه ستون یک واحد فشرده داده برای هر ستون است. این شامل مجموعه ای از مقادیر به همراه یک سری فراداده، شامل مقادیر حداقل و حداکثر، برای تسهیل بازیابی داده ها است.
دیکشنری ها برای فشرده سازی مقادیر تکراری در یک ستون استفاده می شوند. فرهنگ لغت به جای اینکه مقادیر واقعی را چندین بار ذخیره کند، مقادیر منحصر به فرد و شناسه های مربوط به آنها را ذخیره می کند، نیازهای ذخیره سازی را کاهش می دهد و عملکرد پرس و جو را بهبود می بخشد.
ایندکس Columnstore از تکنیکی به نام پردازش دسته ای برای اسکن و پردازش کارآمد مجموعه داده های بزرگ استفاده می کند. عملیات روی چندین ردیف را به طور همزمان انجام می دهد، که عملکرد پرس و جوهای تحلیلی را افزایش می دهد.
ویژگی های کلیدی Columnstore Indexes در SQL
-
متراکم سازی داده ها: فهرستهای Columnstore به دلیل فرمت ذخیرهسازی ستونی و تکنیکهای فشردهسازی مبتنی بر فرهنگ لغت، الزامات ذخیرهسازی دادهها را به میزان قابل توجهی کاهش میدهند.
-
پردازش حالت دسته ای: توانایی پردازش داده ها به صورت دسته ای، به جای سطر به ردیف، اجرای سریعتر پرس و جو را برای مجموعه داده های بزرگ امکان پذیر می کند.
-
Pushdown محمول: نمایههای Columnstore از pushdown محمول پشتیبانی میکنند، به این معنی که بهینهساز پرس و جو میتواند دادهها را قبل از بازیابی در سطح ذخیرهسازی فیلتر کند و عملکرد پرس و جو را بیشتر افزایش دهد.
-
اجرای بردار: عملیات بر روی کل بردارهای داده به طور همزمان انجام می شود که منجر به بهبود سرعت اجرای پرس و جو می شود.
انواع نمایه های Columnstore در SQL
دو نوع نمایه Columnstore در SQL وجود دارد:
-
فهرست ستونهای خوشهای (CCI):
- هر جدول فقط می تواند یک CCI داشته باشد.
- کل جدول به فرمت ستونی فشرده تبدیل می شود.
- ایده آل برای ذخیره سازی داده های بزرگ و حجم کاری تحلیلی.
-
فهرست ستونهای غیر خوشهای (NCCI):
- چندین NCCI را می توان روی یک جدول ایجاد کرد.
- فقط ستون های انتخاب شده به قالب ستونی فشرده تبدیل می شوند و بقیه در قالب ردیفی باقی می مانند.
- مناسب برای سناریوهایی که در آن ستونهای خاص بیشتر از سایرین پرس و جو میشوند.
در زیر جدولی وجود دارد که تفاوت های بین CCI و NCCI را خلاصه می کند:
ویژگی | فهرست ستونهای خوشهای (CCI) | فهرست ستونهای غیر خوشهای (NCCI) |
---|---|---|
تبدیل جدول | کل جدول به فرمت ستونی تبدیل می شود | فقط ستون های انتخاب شده تبدیل می شوند |
تعداد شاخص ها | فقط یک CCI در هر جدول مجاز است | چندین NCCI را می توان روی یک جدول ایجاد کرد |
عملکرد پرس و جو | به دلیل ذخیره سازی کامل ستونی، به طور کلی سریعتر است | عملکرد پرس و جو به انتخاب ستون بستگی دارد |
استفاده، چالش ها و راه حل ها
نمایه های Columnstore برای پرس و جوهای تحلیلی که شامل پردازش داده در مقیاس بزرگ هستند بسیار سودمند هستند. با این حال، ممکن است برای بارهای کاری OLTP (Online Transaction Processing) که شامل تراکنش ها و به روز رسانی های مکرر در مقیاس کوچک است، مناسب نباشند. در چنین سناریوهایی، شاخص های سنتی مبتنی بر ردیف عملکرد بهتری دارند.
چالشهای شاخصهای Columnstore عبارتند از:
-
درج و به روز رسانی عملکرد: شاخصهای Columnstore میتوانند از عملکرد کندتر درج و بهروزرسانی در مقایسه با نمایههای مبتنی بر ردیف رنج ببرند، زیرا برای عملکرد بهینه نیاز به بارگذاری انبوه دادهها دارند.
-
فروشگاه دلتا: برای مدیریت کارآمد به روز رسانی ها، SQL Server یک فروشگاه دلتا برای داده های غیرمتعهد نگهداری می کند که به صورت دوره ای در Columnstore اصلی ادغام می شود. این فرآیند می تواند بر عملکرد پرس و جو در طول ادغام تأثیر بگذارد.
راه حل های این چالش ها عبارتند از:
-
به روز رسانی دسته ای: انجام بهروزرسانیها در دستههای بزرگتر میتواند عملکرد را با کاهش دفعات ادغام فروشگاه دلتا بهبود بخشد.
-
تقسیم بندی داده ها: بخش بندی داده ها به واحدهای کوچکتر می تواند به عملیات درج و به روز رسانی سریعتر کمک کند.
ویژگی ها و مقایسه ها
بیایید نمایه های Columnstore را با ویژگی های پایگاه داده مشابه مقایسه کنیم:
ویژگی | فهرست ستونها | فهرست های Rowstore |
---|---|---|
فرمت ذخیره سازی | ذخیره سازی ستونی | ذخیره سازی مبتنی بر ردیف |
فشرده سازی | نسبت تراکم بالا | نسبت تراکم پایین تر |
عملکرد پرس و جو | برای پرس و جوهای تحلیلی سریعتر | برای پرس و جوهای OLTP سریعتر |
درج و به روز رسانی عملکرد | برای بهروزرسانیهای فردی کندتر است | سریعتر برای به روز رسانی های فردی |
چشم اندازها و فناوری های آینده
همانطور که داده ها به طور تصاعدی در حال رشد هستند، فهرست های Columnstore جزء مهم پایگاه های داده مدرن باقی خواهند ماند. پیشرفتهای آینده ممکن است بر رفع چالشهای مربوط به بهروزرسانیها و ارائه الگوریتمهای فشردهسازی کارآمدتر تمرکز کنند.
سرورهای پروکسی و نمایه های Columnstore در SQL
سرورهای پروکسی ارائه شده توسط OneProxy میتوانند عملکرد استقرار SQL Server را با استفاده از فهرستهای Columnstore افزایش دهند. با مسیریابی پرسوجوهای SQL از طریق سرورهای پراکسی، سازمانها میتوانند مقداری از سربار پردازش را تخلیه کنند و به طور بالقوه زمان پاسخدهی را برای مشتریان راه دور بهبود بخشند. بهعلاوه، قابلیتهای متعادلسازی بار OneProxy میتواند به توزیع یکنواخت پرسوجوها و بهینهسازی استفاده از منابع کمک کند.
لینک های مربوطه
برای اطلاعات بیشتر در مورد نمایه های Columnstore در SQL، به منابع زیر مراجعه کنید: