انبار داده (Data Warehouse) چیست و چرا به آن نیاز داریم؟

مقدمه

سیستم‌های عملیاتی (operational) برای مدیریت فرآیندهای روزانه یک کسب‌و‌کار تولید می‌شوند. نرم‌افزار شعب بانک، نرم‌افزار ثبت‌نام و انتخاب واحد دانشگاه، نرم‌افزار حسابداری و ... نمونه‌هایی از سیستم‌های عملیاتی هستند. پایگاه داده طراحی شده برای این سیستم‌ها، جهت حفظ یکپارچگی داده‌ها (data integrity) و سرعت ثبت تراکنش‌ها (transaction) با استفاده از نرمال‌سازی (normalization) پایگاه داده و مدل موجودیت-رابطه(ER: Entity-Relationship)  بهینه‌سازی شده‌اند.

طراحی پایگاه داده یک سیستم‌ عملیاتی با استفاده از قوانین کاد (Codd) برای نرمال‌سازی انجام می‌شود. طراحی‌ پایگاه داده کاملاً نرمال‌سازی شده (یعنی آن‌هایی که همه قواعد کاد در آن‌ها رعایت شده‌اند) غالباً موجب می‌شوند که اطلاعات حاصل از تراکنش‌ها در ده‌ها تا صدها جدول ذخیره شوند. پایگاه‌های داده رابطه‌ای (Relational Database) در مدیریت روابط بین این جدول‌ها بسیار مؤثر هستند و درج و بروزرسانی رکوردها در آنها بسیار سریع است زیرا برای هر تراکنش تنها مقدار کمی از داده‌ها در این جداول تحت تأثیر قرار می‌گیرند. به یک سیستم عملیاتی که پایگاه داده آن بر اساس قواعد نرمال‌سازی طراحی شده است سیستم OLTP: Online Transactional Processing می‌گویند.  MS SQL Server و Oracle از جمله سیستم‌های مشهور و پرکاربرد مدیریت پایگاه داده هستند.

چنانچه حجم اطلاعات ذخیره شده در پایگاه داده بسیار زیاد باشد و بخواهیم برای مقاصد گزارش‌گیری و تحلیل از آن استفاده کنیم ممکن است با کندی در اجرای دستورات پایگاه  مواجه شویم. این کندی به نوبه خود موجب ایجاد اختلال و احیاناً قطعی در عملکرد سیستم‌های عملیاتی نیز خواهد شد. به همین دلیل برای تحلیل داده‌های حجیم، ابتدا آنها را به یک پایگاه داده دیگر انتقال می‌دهند که روش طراحی آن با طراحی پایگاه داده سیستم عملیاتی متفاوت است. پایگاه داده طراحی شده برای مقاصد تحلیل و گزارشگیری انبار داده (Data Warehouse) نام دارد.

انبار داده برای الگوهای دسترسی تحلیلی بهینه‌سازی شده‌است. معمولاً الگوی دسترسی داده‌ها در سیستم عملیاتی مبتنی بر رکورد است اما الگوهای دسترسی تحلیلی شامل گزینش اقلام داده خاص و به صورت ستون محور هستند. انبار داده برخلاف سیستم‌های عملیاتی که تصویری لحظه‌ای از کسب‌وکار را در خود نگهداری می‌کنند، به طور کلی برای نگهداری تاریخچه نامتناهی از داده‌ها استفاده می‌شوند. انتقال داده‌ها از سیستم‌های عملیاتی به انبار داده از طریق پردازش‌های ETL و به صورت دوره‌ای انجام می‌شود. پایگاه داده طراحی شده برای انبار داده به اصطلاح OLAP: Online Analytical Processing نیز نامیده می‌شود.

فرآیند ETL

انتقال اطلاعات به انبار داده مبتنی بر استخراج (Extract)، تبدیل (Transform) و بارگذاری (Load) است که به اختصار ETL نامیده می‌شود. به طور معمول فرآیند ETL از سه لایه به شرح زیر تشکیل می‌شود:

  • لایه میانی (staging): یک پایگاه داده واسط است که داده‌های خام جمع‌آوری شده از منابع مختلف را در خود نگهداری می‌کند.
  • لایه یکپارچه‌سازی: یکپارچه‌سازی داده‌های ذخیره شده در پایگاه داده میانی با اعمال تبدیلات لازم در این مرحله انجام می‌شود.
  • لایه دسترسی: داده‌های تبدیل شده غالباً به صورت واقعیت (Fact) و بعد (Dimension) تقسیم می‌شوند و آماده انتقال به انبار داده می‌شوند.

تصویر زیر فرآیند ETL را به صورت شماتیک نشان میدهد:

 

مدل‌سازی انبار داده

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

یکی از مهمترین تفاوت‌های پایگاه داده و انبار داده در درجه نرمال‌سازی آنهاست. در حالی که پایگاه داده تا حد امکان نرمال طراحی می‌شود تا برای عملیات درج و بروزرسانی و همچنین اطمینان از ثبات داده بهینه باشد، انبار داده تا جای ممکن به صورت غیرنرمال طراحی می‌شود تا برای اهداف پرس‌و‌جو، گزارش‌گیری و تحلیل بهینه باشد.

مدل ستاره‌ای (Star model) و دانه‌برفی (Snowflake model) دو نوع از مهمترین طراحی‌های انبار داده به شمار می‌روند. مهمترین تفاوت این دو نوع مدل‌سازی در میزان نرمال‌سازی جداول است به طوری که جداول در مدل ستاره‌ای کاملا غیر نرمال طراحی می‌شوند اما در مدل دانه برفی درجه‌ای از نرمال‌سازی رعایت می‌شود.

در طراحی این دو مدل با دو نوع جدول روبرو هستیم:

  • جداول Fact: شامل رویداد هاست و اعداد و ارقامی که آن رویداد را توصیف می‌کنند.
  • جداولDimension : موجودیت هایی هستند که یک رویداد را شرح می دهند.

مدل ستاره‌ای

مدل ستاره‌ای به نوعی طراحی انبار داده گفته می‌شود که در آن جدول Fact در مرکز قرار گرفته و توسط جداول Dimension  محاصره می‌شود. در این مدل جداول Dimension با یکدیگر ارتباط ندارند و فقط از طریق قلم داده کلید (Key field) با جدول Fact ارتباط دارند. این نوع طراحی برای گزارش گیری بسیار بهینه است  زیرا نیاز به پیوند (join) بین جداول مختلف ندارد.

 

مدل دانه ‌برفی

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

در صورتی که انبار داده طراحی شده و داده‌های سیستم‌های عملیاتی با استفاده از فرآیند ETL به آن منتقل شده باشد، معرفی و ورود اطلاعات آن به پاور بی آی به آسانی صورت می‌گیرد. بهروش‌های موجود (best practice) پیشنهاد می‌کنند انبار داده با مدل ستاره‌ای طراحی شود زیرا با ذات پاور بی آی همخوانی دارد و الگوریتم‌های پاور بی آی برای کار با این مدل‌ها بهینه شده‌اند.

​