Skip to Content

Welcome!

This community is for professionals and enthusiasts of our products and services.
Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

شما نیاز به ثبت‌نام دارید تا بتوانید با جامعه تعامل داشته باشید.
این سوال علامت‌گذاری شده است
1 پاسخ
2 نماها

در اماده سازی داده برای تولید گزارش به یک مفهوم روبرو شدم:  MATERIALIZED 


زمانی که داده‌های بزرگی داریم و نیاز به آماده سازی سریع برای گزارش گیری وجود دارد از این نوع داده استفاده می‌کنیم.


اما نمی‌دانم در pslqاین چیست و چه کاربردی دارد.


به نظر می‌رسد که یک نوع view است. 

آواتار
رها کردن
مولف

در پایگاه داده، اصطلاح Materialized معمولاً در قالب Materialized View (ویوی مادی‌شده) استفاده می‌شود. این مفهوم در دیتابیس‌هایی مثل PostgreSQL، Oracle و … وجود دارد.

Materialized View یعنی:

نتیجه‌ی یک کوئری (Query) را از قبل محاسبه کرده و به‌صورت فیزیکی ذخیره کنیم، نه اینکه هر بار دوباره محاسبه شود.

🔍 تفاوت با View معمولی

ویژگیView معمولیMaterialized View
ذخیره داده❌ ندارد✅ دارد
سرعتکندتر (هر بار اجرا)سریع‌تر
به‌روز بودنهمیشه به‌روزنیاز به refresh
مصرف فضاکمبیشتر

در حقیقت یک نوع viewخاص است با این تفاوت  که نتیج در یک جدول واقعی ذخیره شده و بعد مورد استفاده قرار می‌گیرد.  زمان استفاده از این نوع ویو باید به نکات زیر حتما توجه کنید:

  • داده‌ها ممکن است stale (قدیمی) باشند
  • نیاز به refresh strategy داری (مثلاً هر شب)
  • فضای بیشتری مصرف می‌کند


⚙️ مثال کاربردی از استفاده Materialized

فرض کن یک کوئری سنگین داری:

SELECT customer_id, SUM(amount)
FROM sales
GROUP BY customer_id;

اگر این کار را با همین view ساده انجام دهیم، هر بار که اجرا شود، کل جدول sales دوباره پردازش می‌شود. به ازای هر استفاده این کار انجام می‌شود که برای پایگاه داده یک پردازش بسیار سنگین است. اما می‌توانیم همین کار را با materialized view انجام دهیم. این کار به صورت زیر انجام می‌شود:

CREATE MATERIALIZED VIEW sales_summary AS
SELECT customer_id, SUM(amount)
FROM sales
GROUP BY customer_id;

👉 نتیجه یک‌بار محاسبه و ذخیره می‌شود. اما همانطور که قبلا هم اشاره شد این داده‌ها خود به خود به روز نمی‌شوند و باید یک استراتژی به روز رسانی وجود داشته باشد. 

🔄 به‌روزرسانی (Refresh)

چون داده ذخیره شده، باید خودت آن را آپدیت کنی:

REFRESH MATERIALIZED VIEW sales_summary;

یا در PostgreSQL:

REFRESH MATERIALIZED VIEW CONCURRENTLY sales_summary;

🚀 کاربردها

Materialized View خیلی مهم است وقتی:

1. گزارش‌گیری سنگین (Reporting)

  • داشبوردها
  • BI (مثل Power BI)
  • گزارش‌های مالی

2. بهینه‌سازی performance

  • کاهش load روی دیتابیس
  • جلوگیری از اجرای مکرر کوئری‌های پیچیده

3. Data Warehousing

  • ساخت لایه‌های Aggregation
  • ETL pipelines

💡 ارتباط با Odoo

در Odoo هم گاهی برای گزارش‌های سنگین (مثلاً فروش، انبار، حسابداری) از Materialized View استفاده می‌شود تا:

  • سرعت گزارش بالا برود
  • فشار روی ORM کمتر شود


آواتار
رها کردن