کاربردهای Snowflake Schema – DEV Community

طرح برف ریزه نوعی از طرحواره پایگاه داده است که داده ها را در یک جدول اطلاعات متمرکز که با ابعاد عادی احاطه شده است سازماندهی می کند. بر خلاف طرحواره ستارهای، که در آن ابعاد معمولاً به جداول مسطح غیرعادی میشوند، طرح دانههای برف ابعاد را به ابعاد فرعی مرتبط تقسیم میکند و باعث کاهش افزونگی دادهها و بهبود کارایی ذخیرهسازی میشود.
ابعاد با سلسله مراتب را می توان به ساختار دانه های برف تجزیه کرد، زمانی که می خواهید از پیوستن به جداول ابعاد بزرگ در هنگام استفاده از مجموع جدول واقعیت اجتناب کنید. به عنوان مثال، اگر اطلاعات برندی دارید که میخواهید آن را از جدول ابعاد محصول جدا کنید، میتوانید دانههای برفی برندی ایجاد کنید که از یک ردیف برای هر برند تشکیل شده و دارای ردیفهای بسیار کمتری نسبت به جدول ابعاد محصول است. شکل زیر یک ساختار دانه برف برای عناصر برند و خط محصول و جدول مجموع brand_agg را نشان می دهد.
طرحوارههای دانههای برف بهویژه در سناریوهایی مفید هستند که ویژگیهای خاص فقط برای زیر مجموعههای یک بعد اعمال میشود، که منجر به دادههای پراکنده و ناکارآمدی در ساختارهای غیرعادیشده سنتی میشود.
در زیر سه مورد کاربرد عملی وجود دارد که در آن طرح دانههای برف به همراه مدلهای داده واضح برای نشان دادن نحوه کارکرد آن اعمال میشود.
استفاده از مورد 1: ابعاد مشتری بزرگ
سناریو:
در مشاغلی مانند بازاریابی آنلاین، دو نوع مشتری وجود دارد:
بازدیدکنندگان ناشناس: تنها با داده های کوکی، با حداقل ویژگی ها شناسایی می شود.
مشتریان ثبت نام شده: اطلاعات دقیقی از جمله اطلاعات جمعیتی، آدرس و سابقه پرداخت داشته باشید.
ذخیره این دو نوع موجودیت در یک جدول منفرد باعث می شود ناکارآمدی ها همانطور که اکثر صفات باقی می مانند تهی برای بازدیدکنندگان ناشناس
راه حل:
استفاده از طرح دانه های برف:
ابعاد مشتری پایه دارای ویژگی های مشترک برای بازدیدکنندگان و مشتریان ثبت شده است.
ابعاد فرعی جداگانه ویژگی های خاص را برای بازدیدکنندگان و مشتریان ثبت شده ذخیره می کند.
مدل داده:
+---------------------+ +--------------------------+
| Customer (Base) | | Customer Details (Snow) |
+---------------------+ +--------------------------+
| Customer_ID (PK) |--------| Customer_ID (FK) |
| Customer_Type | | Demographics |
| Last_Visit_Date | | Address |
| Signup_Date | | Payment_History |
+---------------------+ +--------------------------+
|
|
V
+---------------------+
| Visitors (Snow) |
+---------------------+
| Visitor_ID (PK) |
| Cookie_ID |
| Visit_Frequency |
| Browsing_History |
+---------------------+
استفاده از مورد 2: بعد محصول مالی
سناریو:
در خدمات مالی، انواع مختلف محصول (به عنوان مثال، وام و بیمه) دارای ویژگی های متمایز هستند. تلاش برای ذخیره همه ویژگی ها در یک بعد منجر به داده های پراکنده می شود، زیرا بسیاری از ویژگی ها برای همه محصولات اعمال نمی شوند.
راه حل:
استفاده از طرح دانه های برف:
ابعاد محصول پایه دارای ویژگی های مشترک برای همه محصولات است.
ابعاد فرعی جداگانه ویژگی های تخصصی را برای انواع مختلف محصول ذخیره می کند.
مدل داده:
+----------------------+ +------------------------------+
| Product (Base) | | Product Details (Snowflake) |
+----------------------+ +------------------------------+
| Product_ID (PK) |--------| Product_ID (FK) |
| Product_Type | | Specialized_Attribute_1 |
| Core_Attribute | | Specialized_Attribute_2 |
+----------------------+ +------------------------------+
|
|
V
+----------------------+
| Loan Products (Snow) |
+----------------------+
| Loan_ID (PK) |
| Interest_Rate |
| Loan_Term |
| Collateral_Type |
+----------------------+
|
|
V
+-----------------------+
| Insurance Products |
+-----------------------+
| Insurance_ID (PK) |
| Coverage_Type |
| Premium_Amount |
| Policy_Duration |
+-----------------------+
استفاده از مورد 3: ابعاد تقویم چند سازمانی
سناریو:
در مشاغل بین المللی، تقویم ها بسته به کشور متفاوت است. به عنوان مثال:
ایالات متحده ممکن است فصل های مالی و تعطیلات ملی خاصی داشته باشد.
انگلستان ممکن است تعطیلات بانکی منحصر به فردی داشته باشد.
هند ممکن است تقویمی با تاریخ های خاص جشنواره داشته باشد.
ذخیره همه ویژگی ها در یک جدول منجر به پیچیدگی و ناکارآمدی می شود.
راه حل:
استفاده از طرح دانه های برف:
این ابعاد تقویم پایه دارای ویژگی های مشترک برای همه کشورها است.
ابعاد فرعی جداگانه ویژگیهای تقویم کشور را ذخیره میکند.
مدل داده:
+----------------------+ +----------------------------+
| Calendar (Base) | | US Calendar (Snowflake) |
+----------------------+ +----------------------------+
| Calendar_ID (PK) |--------| Calendar_ID (FK) |
| Date | | National_Holiday |
| Week_Number | | US_Fiscal_Quarter |
| Fiscal_Year | | US_Specific_Attribute |
+----------------------+ +----------------------------+
|
|
V
+----------------------------+
| UK Calendar (Snowflake) |
+----------------------------+
| Calendar_ID (FK) |
| National_Holiday |
| Bank_Holiday |
| UK_Fiscal_Quarter |
+----------------------------+
نتیجه گیری
طرح دانه های برف یک رویکرد کارآمد و سازمان یافته برای مدیریت ابعاد پیچیده با داده های پراکنده است. با تقسیم کردن ابعاد به زیربعدهای منطقی و کوچکتر، آن را:
- نیازهای ذخیره سازی را کاهش می دهد.
- عملکرد پرس و جو را برای گروه های مشخصه خاص بهبود می بخشد.
- وضوح در طراحی طرحواره را افزایش می دهد.
مثالهای بالا نشان میدهند که چگونه طرحوارههای دانههای برف را میتوان در سناریوهای دنیای واقعی، مانند دادههای مشتری، محصولات مالی، و تقویمهای چند کشوری اعمال کرد، و تضمین میکند که دادهها هم در دسترس و هم ساختار کارآمد هستند.