تا به اینجا در دوره انبار داده (Data Warehouse) با مقدمات و مفاهیم اولیه انبار داده و فرآیندهای هوش تجاری آشنا شدید. در درس جاری قصد داریم تا بفهمیم چگونه میتوان یک انبار داده طراحی و پیادهسازی کرد. برای طراحی انبار داده یکی از روشها شِماهای چند بُعدی یا همان Multidimensional Schemes هستند که از حقایق (Facts) و ابعاد (Dimensions) برای طراحی و تحلیلهای OLAP استفاده میکنند.
در کل سه نوع شِمای معروف در مدلسازی انبار داده داریم. شمای ستارهای (Star Schema)، شمای برف ریزه (Snowflake Schema) و شمای کهکشانی (Galaxy Schema).
مانند درس OLAP و مکعب داده، فرض کنید شما یک فروشگاه زنجیرهای دارید که در شهرهای مختلف شعبههای متفاوتی دارد و هر کدام از این فروشگاهها در زمانهای مختلف محصولات و فروش خود را دارند. بد نیست نگاهی به تصویر چند بُعدی که در آن درس داشتیم، بیندازیم:
همانطور که میبینید در یک مکعب ۳بُعدی (که هر کدام از ابعاد یکی از ویژگیهای ما بود)، فروش نسبت به مکان مربوطه، زمان فروش و نوع کالا را محاسبه و تجمیع میشد. اما اگر بخواهیم این حالت چند بُعدی را به صورت جداول رابطهای در پایگاه داده طراحی کنیم چگونه خواهد بود؟ تصویر زیر را نگاه کنید:
همانطور که میبینید میزان فروش در جدولی در مرکز قرار دارد (که به آن جدول حقیقت (Fact Table) میگویند. در واقع در جدول مرکزی (Fact Table) مقدار تجمیع شده قرار میگیرد. همچنین در این جدولِ مرکزی به اندازه تعداد ابعاد مسئله (ویژگیهای مسئله) کلیدخارجی (Foreign Key) به جداول بُعد (Dimension Table) وجود دارد (در اینجا دادههای ما سه بُعدی بودند پس سه کلید خارجی در جدول Fact وجود دارد). مثلا کلید زمان را مشاهده کنید. این کلید به جدول زمانها است (مقداری شناسه سطر خاص در جدول زمان را نشان میدهد) که نشان میدهد یک مقدار فروش که همان Fact ما است در چه زمانی رخ داده است. همچنین برای نوع کالا و مکان فروش نیز دو کلید خارجی دیگر به جداول آنها قرار دارد. جداول ابعاد نیز اطلاعات مختلفی راجع به هر بعد را ذخیره میکنند. برای مثال در جدول مکان که یک جدول بُعد (Dimension Table) حساب میشود، اطلاعات مربوط به مکانهای فروش مانند کشور، استان و یا شهر آن ذخیره میشود (نام بخش، پیششماره شهر، منطقه و… هم میتوانند ویژگیهای دیگری باشند). پس ما یک جدول مرکزی داریم که به اندازه تعداد ابعاد، کلید خارجی به بُعدها دارد. اجازه بدهید همان تصویر بالا را کمی بازتر کنیم. تصویر زیر را مشاهده کنید:
این تصویر یک مثال عددی از تصویر بالاتر است. همانطور که میبینید هر سطر در جدول مرکزی (Fact Table) یک مقدار تجمیع شده با توجه به ابعاد مختلف را نمایش میدهد. برای مثال سطر اول، مقدار فروش معادل ۱میلیون تومان را در با شناسه ۱ (سال ۹۳، ماه ۹، روز ۸)، در مکان با شناسه ۱ (ایران، استان تهران، شهر تهران) در کالای با شناسه ۳ (لوازم شوینده) را نشان میدهد به این معنی که کالاهای لوازم شوینده در شهر تهران در هشتم آذر ماه سال ۹۳، ۱میلیون تومان فروش داشته اند.
به شِمای بالا، شمای ستارهای (Start Schema) گفته میشود که به خاطر حالت ستاره مانند بودن آن، به این نام شناخته میشود. این مدل یک مدل بسیار ساده و کاربردی در طراحی انباد داده (Data Warehouse) میباشد.
مدل دیگر در طراحی انبار داده شِمای برف ریزه (Snowflake Schema) میباشد. این مدل، مانند شِمای ستارهای (Star) میباشد با این تفاوت که هر کدام از ابعاد میتوانند به صورت سلسله مراتبی (Hierarchical) در جداول مختلف ذخیره شوند. تصویر زیر نمونهای از شِمای برف ریزه میباشد:
همانطور که میبینید، برای مثال بُعد شهر به صورت سلسله مراتبی به استان و کشور در جداول دیگر ادامه پیدا کرده است.
مدل دیگری که در طراحی انبار داده به کار میرود شِمای کهکشانی (Galaxy Schema) میباشد. در این مدل، چند جدول حقیقت (Fact Table) داریم که هر کدام از آنها ممکن است از جداول مشترکی برای ابعاد استفاده کنند. تصویر زیر را ببینید:
مشخص است که دو جدول Fact داریم. فروش و سود. که هر کدام ویژگیهای خود را دارند و این در حالی است که این دو جدول در دو بُعد نوع کالا و زمان مشترک هستند.
- ۱ » هوش تجاری (Business Intelligence) چیست؟
- ۲ » انبار داده (Data Warehouse) چیست؟
- ۳ » مفهوم مکعب داده (Data Cube) در انباردادهها
- ۴ » پردازش تحلیلی برخط یا همان OLAP چیست؟
- ۵ » تفاوت OLAP و OLTP چیست؟
- ۶ » فرآیند ETL در انبار داده (Extract, Transformation, Load)
- ۷ » ELT در انبار داده و تفاوت آن با ETL
- ۸ » طراحی انبار داده با شِمای چند بُعدی (Multidimensional Schema)
- ۹ » بازار داده (Data Mart) چیست و چه تفاوتی با انبار داده (Data Warehouse) دارد؟
- ۱۰ » دریاچه داده (Data Lake) چیست؟
با سلام و درود و احترام . خیلی ممنووون از توضیح شفاف این مبحث . یه سوال هم دارم از خدمتتو و اون اینکه تفاوت Transactional fact table و snapshot fact table چیه ؟
باتشکر
مرسی از مقاله
با سلام و عرض ادب
دیکته شمای ستارهای (Start Schema) نادرست نوشته شده است.
عاالی مثل همیشه. میشه لطفا بفرمایید برای اینکه بدونیم از چه شمایی برای طراحی انبار داده استفاده کنیم چه معیارهایی باید در نظر گرفته بشه؟