نمای ماتریالیزه شده چیست؟
نمای ماتریالیزه شده یک جدول داده تکراری است که با ترکیب دادهها از چندین جدول موجود برای بازیابی سریعتر دادهها ایجاد میشود. برای مثال، یک برنامه خردهفروشی با دو جدول پایه برای دادههای مشتری و محصول را در نظر بگیرید. جدول مشتری حاوی اطلاعاتی مانند نام مشتری و جزئیات تماس است، در حالی که جدول محصول حاوی اطلاعاتی در مورد جزئیات و هزینه محصول است. جدول مشتری فقط شناسههای محصول اقلام خریداری شده توسط یک مشتری خاص را ذخیره میکند. برای به دست آوردن جزئیات محصول اقلام خریداری شده توسط مشتریان خاص، باید هر دو جدول را با هم ارجاع دهید. در عوض، میتوانید یک نمای ماتریالیزه شده ایجاد کنید که نام مشتریان و جزئیات محصول مرتبط را در یک جدول موقت واحد ذخیره کند. برای بهبود عملکرد خواندن دادهها، میتوانید ساختارهای شاخص را بر روی نمای ماتریالیزه شده بسازید.
مزایای نماهای ماتریالیزه شده چیست؟
نماهای ماتریالیزه شده یک روش سریع و کارآمد برای دسترسی به دادههای مرتبط هستند. آنها به بهینهسازی پرس و جو در برنامههای کاربردی با داده فشرده کمک میکنند. در ادامه به برخی از مزایای اصلی میپردازیم.
سرعت
پرس و جوهای خواندن، جداول و ردیفهای مختلف داده را برای جمعآوری اطلاعات لازم اسکن میکنند. با نماهای ماتریالیزه شده، میتوانید به جای محاسبه اطلاعات جدید در هر بار، مستقیماً از نمای جدید خود دادهها را پرس و جو کنید. هرچه پرس و جوی شما پیچیدهتر باشد، زمان بیشتری را با استفاده از یک نمای ماتریالیزه شده صرفهجویی خواهید کرد.
سادگی ذخیرهسازی داده
نماهای ماتریالیزه شده به شما امکان میدهند منطق پیچیده پرس و جو را در یک جدول واحد ادغام کنید. این امر، تبدیل دادهها و نگهداری کد را برای توسعهدهندگان آسانتر میکند. همچنین میتواند به مدیریتپذیرتر شدن پرس و جوهای پیچیده کمک کند. همچنین میتوانید از زیرمجموعهسازی دادهها برای کاهش میزان دادهای که باید در نما تکثیر کنید، استفاده نمایید.
سازگاری
نماهای ماتریالیزه شده یک نمای سازگار از دادههای ثبت شده در یک لحظه خاص ارائه میدهند. میتوانید سازگاری خواندن را در نماهای ماتریالیزه شده پیکربندی کنید و دادهها را حتی در محیطهای چند کاربره که کنترل همزمانی ضروری است، در دسترس قرار دهید.
نماهای ماتریالیزه شده همچنین حتی در صورت تغییر یا حذف دادههای منبع، دسترسی به دادهها را فراهم میکنند. با گذشت زمان، این بدان معناست که میتوانید از نماهای ماتریالیزه شده برای گزارشگیری از تصاویر لحظهای دادههای مبتنی بر زمان استفاده کنید. سطح جداسازی از جداول منبع تضمین میکند که درجه بالاتری از سازگاری در سراسر دادههای خود دارید.
کنترل دسترسی بهبود یافته
میتوانید از یک نمای ماتریالیزه شده برای کنترل دسترسی افراد به دادههای خاص استفاده کنید. میتوانید اطلاعات را برای کاربرانی که به جداول منبع دسترسی ندارند، فیلتر کنید. این رویکرد در صورتی عملی است که بخواهید کنترل کنید چه کسی به چه دادههایی دسترسی دارد و چه مقدار از آن را میتواند ببیند و با آن تعامل داشته باشد.
موارد استفاده از نماهای ماتریالیزه شده چیست؟
شما میتوانید در بسیاری از سناریوهای مختلف از نماهای ماتریالیزه شده بهرهمند شوید.
توزیع دادههای فیلتر شده
اگر نیاز دارید دادههای اخیر را در مکانهای زیادی توزیع کنید، مانند نیروی کار از راه دور، نماهای ماتریالیزه شده کمک میکنند. شما با استفاده از نماهای ماتریالیزه شده، دادهها را در بسیاری از سایتها تکثیر و توزیع میکنید. افرادی که به دادهها نیاز دارند، با فروشگاه دادههای تکثیر شده که از نظر جغرافیایی به آنها نزدیکتر است، تعامل میکنند.
این سیستم امکان همزمانی را فراهم میکند و بار شبکه را کاهش میدهد. این یک رویکرد مؤثر برای پایگاههای داده فقط خواندنی است.
تجزیه و تحلیل دادههای سری زمانی
نماهای ماتریالیزه شده تصاویر لحظهای دارای مهر زمانی از مجموعههای داده را ارائه میدهند، بنابراین میتوانید تغییرات اطلاعات را در طول زمان مدلسازی کنید. میتوانید تجمیعهای از پیش محاسبه شده دادهها، مانند خلاصههای ماهانه یا هفتگی را ذخیره کنید. این کاربردها برای پلتفرمهای هوش تجاری و گزارشدهی مفید هستند.
تعامل داده از راه دور
در سیستمهای پایگاه داده توزیع شده، میتوانید از نماهای ماتریالیزه شده برای بهینهسازی پرس و جوهایی که شامل دادهها از سرورهای راه دور هستند، استفاده کنید. به جای واکشی مکرر دادهها از یک منبع راه دور، میتوانید دادهها را در یک نمای ماتریالیزه شده محلی واکشی و ذخیره کنید. این امر نیاز به ارتباطات شبکه را کاهش داده و عملکرد را بهبود میبخشد.
برای مثال، اگر دادهها را از یک پایگاه داده خارجی یا از طریق یک API دریافت میکنید، یک نمای ماتریالیزه شده آن را تجمیع و به پردازش آن کمک میکند.
پردازش دستهای دورهای
نماهای ماتریالیزه شده برای موقعیتهایی که نیاز به پردازش دستهای دورهای دارند، مفید هستند. برای مثال، یک موسسه مالی ممکن است از نماهای ماتریالیزه شده برای ذخیره موجودیهای پایان روز و محاسبات سود استفاده کند. یا ممکن است خلاصههای عملکرد پورتفولیو را ذخیره کنند که میتوانند در پایان هر روز کاری بهروزرسانی شوند.
نماهای ماتریالیزه شده چگونه کار میکنند؟
نماهای ماتریالیزه شده با پیشمحاسبه و ذخیره نتایج یک پرس و جوی خاص به عنوان یک جدول فیزیکی در پایگاه داده کار میکنند. پایگاه داده پیشمحاسبه را در فواصل منظم انجام میدهد، یا کاربران میتوانند آن را با رویدادهای خاصی فعال کنند. مدیران عملکرد و میزان استفاده از منابع نماهای ماتریالیزه شده را برای اطمینان از اینکه همچنان هدف مورد نظر خود را برآورده میکنند، نظارت میکنند.
در اینجا یک نمای کلی از نحوه عملکرد نماهای ماتریالیزه شده آورده شده است.
ایجاد نمای ماتریالیزه شده
شما یک پرس و جو را تعریف میکنید که دادههای مورد نظر را از یک یا چند جدول منبع برای ایجاد نماهای ماتریالیزه شده بازیابی میکند. این پرس و جو ممکن است شامل فیلتر کردن، تجمیع، پیوند و سایر عملیات مورد نیاز باشد.
پایگاه داده در ابتدا نمای ماتریالیزه شده را با اجرای پرس و جوی تعریف شده بر روی دادههای منبع پر میکند. نتیجه پرس و جو به عنوان یک جدول فیزیکی در پایگاه داده ذخیره میشود و این جدول نمای ماتریالیزه شده را نشان میدهد.
بهروزرسانی نمای ماتریالیزه شده
دادههای موجود در یک نمای ماتریالیزه شده باید به طور دورهای بهروزرسانی شوند تا تغییرات دادههای زیربنایی در جداول منبع را منعکس کنند. فرکانس بهروزرسانی دادهها به مورد استفاده و الزامات بستگی دارد.
در ادامه، چند رویکرد رایج برای بهروزرسانی دادهها را توضیح میدهیم.
بهروزرسانی کامل
نمای ماتریالیزه شده به طور کامل دوباره محاسبه و با آخرین نتایج پرس و جو بازنویسی میشود. این سادهترین رویکرد است اما میتواند از نظر منابع فشرده باشد، به ویژه برای نماهای ماتریالیزه شده بزرگ.
بهروزرسانی افزایشی
فقط تغییرات دادههای زیربنایی بر روی نمای ماتریالیزه شده اعمال میشود. این روش در هنگام کار با مجموعههای داده بزرگ و بهروزرسانیهای مکرر میتواند کارآمدتر از بهروزرسانی کامل باشد.
بهروزرسانی در صورت تقاضا
برخی از سیستمها اجازه میدهند نماهای ماتریالیزه شده در صورت تقاضا و با فعال شدن توسط رویدادهای خاص یا درخواستهای کاربر بهروزرسانی شوند. این امر کنترل بیشتری بر زمان بهروزرسانی دادهها میدهد، اما برای اطمینان از اینکه نمای ماتریالیزه شده بهروز میماند، نیاز به مدیریت دقیق دارد.
تغییرات فنی در سیستمهای مختلف
هر سیستم مدیریت پایگاه داده روشهای متفاوتی برای ایجاد یک نمای ماتریالیزه شده دارد.
سیستم مدیریت پایگاه داده | نحوه عملکرد نماهای ماتریالیزه شده |
PostgreSQL | در PostgreSQL، شما باید نمای ماتریالیزه شده را به صورت دستی بهروزرسانی کنید و کل نما را دوباره محاسبه نمایید. شما نمای ماتریالیزه شده را دقیقاً در لحظهای که آن را ایجاد میکنید با دادهها پر میکنید. |
MySQL | MySQL از نماهای ماتریالیزه شده پشتیبانی نمیکند. |
Oracle | Oracle نماهای ماتریالیزه شده را به طور خودکار بهروزرسانی میکند، اما شما همچنین میتوانید در صورت تقاضا آنها را بهروزرسانی کنید. همچنین میتوانید یک دستور SQL بنویسید که قبل از ارائه نتایج، نماها را برای بهروزرسانی فراخوانی کند. |
SQL Server | SQL Server از نام “نماهای فهرست شده” استفاده میکند، زیرا ماتریالیزاسیون یک مرحله از ایجاد فهرست یک نمای معمولی است. شما فقط میتوانید پرس و جوهای SQL اساسی را با نماهای فهرست شده آنها انجام دهید. آنها به طور خودکار برای کاربر بهروزرسانی میشوند. |
MongoDB | MongoDB از توابع تجمیع برای ارائه قابلیتی مشابه نماهای ماتریالیزه شده، اما برای یک محیط NoSQL استفاده میکند. |
تفاوت بین نماها و نماهای ماتریالیزه شده چیست؟
در پایگاههای داده رابطهای، یک نما یک جدول موقت است که با تبدیل و ترکیب دادهها در چندین جدول پایه ایجاد میشود. این یک جدول مجازی است که خود هیچ دادهای را ذخیره نمیکند. در عوض، توسط یک پرس و جو بر روی یک یا چند جدول منبع تعریف میشود.
هر زمان که کاربر یک نما را پرس و جو میکند، موتور پایگاه داده به طور پویا نتایج را با اجرای پرس و جوی زیربنایی بر روی جداول منبع محاسبه میکند. دادههای موجود در یک نما همیشه بهروز هستند زیرا هر بار که به آن دسترسی پیدا میشود، مستقیماً از جداول منبع مشتق میشوند.
از طرف دیگر، یک نمای ماتریالیزه شده نتایج یک پرس و جوی خاص را به عنوان یک جدول فیزیکی در پایگاه داده ذخیره میکند. دادههای موجود در نمای ماتریالیزه شده از قبل محاسبه و ذخیره شدهاند، به این معنی که نتایج بدون نیاز به محاسبه مجدد پرس و جو در هر بار دسترسی به نما، در دسترس هستند.
با این حال، دادههای موجود در نماهای ماتریالیزه شده همیشه بهروز نیستند. شما باید فرکانس بهروزرسانی را برای ایجاد تعادل بین تازگی دادهها و عملکرد پرس و جو پیکربندی کنید.
چالشهای مربوط به نماهای ماتریالیزه شده چیست؟
از آنجایی که نماهای ماتریالیزه شده یکی دیگر از اجزای پایگاه داده هستند که باید در نظر گرفته شوند، لایه دیگری از پیچیدگی را از نظر نگهداری اضافه میکنید. شما باید مزایای پرس و جو و کارایی را با هزینههای احتمالی ذخیرهسازی و مسائل مربوط به سازگاری دادهها متعادل کنید.شما باید قوانین مؤثری ایجاد کنید که بهروزرسانیها را فعال کنند تا اطمینان حاصل شود که نماهای ماتریالیزه شده شما همچنان مفید هستند. بهروزرسانی مکرر نماهای ماتریالیزه شده ممکن است بر عملکرد سیستم تأثیر بگذارد، به ویژه اگر در حال حاضر در یک دوره اوج فعالیت باشید. علاوه بر این، نماهای ماتریالیزه شده نیز مقدار قابل توجهی فضا اشغال میکنند زیرا دادهها را تکثیر میکنند. اگر یک پایگاه داده بزرگ دارید که به طور مداوم بهروزرسانی میشود، احتمالاً تقاضای ذخیرهسازی نماهای ماتریالیزه شده قابل توجه خواهد بود.اگر قصد استفاده از یک نمای ماتریالیزه شده را دارید، باید قوانین و زمانبندیهای بهروزرسانی واضحی را تعیین کنید. همچنین باید نحوه برخورد با ناسازگاریهای داده، خرابیهای بهروزرسانی و فشار ذخیرهسازی اضافی را درک کنید.