دید تحقق یافته

در محاسبه، یک دید تحقق یافته یک شی پایگاه‌داده است که شامل نتایج یک کوئری است.برای مثال، ممکن است یک کپی محلی از داده‌های از راه دور باشد، یا ممکن است زیر مجموعه‌ای از ردیف‌ها و / یا ستون‌های یک جدول یا نتیجه اتصال باشد، یا ممکن است یک خلاصه با استفاده از یک تابع تجمعی باشد.

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

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

در هر سیستم مدیریت پایگاه‌داده که از مدل رابطه‌ای پیروی می‌کند، یک دید یک جدول مجازی است که نتیجه یک کوئری پایگاه‌داده را نشان می‌دهد.هر زمان که یک پرس و جو یا یک به روز رسانی یک جدول مجازی منظره عادی را نشان می‌دهد، DBMS این موارد را به کوئری هایش  تبدیل می‌کند یا آنها را در برابر جدول های پایه اساسی به روز رسانی می‌کند.دید تحقق یافته رویکردی متفاوت را اتخاذ می‌کند: نتیجه کوئری را به عنوان یک جدول آمیخته شده (‏تحقق یافته)‏(‏به جای چنین دیدگاهی)‏که ممکن است از جدول های پایه اصلی هر چند وقت یکبار به روز رسانی شود، ذخیره می‌شود.این امر دسترسی بسیار کارآمدتر، با هزینه ذخیره‌سازی اضافی و برخی از داده‌ها که به طور بالقوه به روز نیستند را ممکن می‌سازد.دیدهای تحقق یافته به خصوص در سناریوهای ذخیره‌سازی داده‌ها استفاده می‌شوند، که در آن کوئری های پر تکرار جدول های پایه واقعی می‌تواند گران‌قیمت باشد.

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

پیاده سازی ها

اوراکل 
دیدهای تحقق یافته ابتدا توسط پایگاه‌داده اوراکل اجرا شدند: ویژگی بازنویسی کوئری از نسخه ۸i اضافه شد.
                                                                    CREATE MATERIALIZED VIEW MV_MY_VIEW 
                                                                        REFRESH FAST START WITH SYSDATE
                                                                                     NEXT SYSDATE + 1
                                                                       ;<AS SELECT * FROM <table_n

پستگرس کیوال 
در پستگرس کیوال، نسخه ۹.۳ و دیدهای تحقق یافته جدیدتر پشتیبانی می‌شوند.در نسخه ۹.۳، یک دید تحقق یافته از نو احیا نمی‌شود و تنها در زمان ایجاد پر می‌شود (‏مگر اینکه از هیچ داده‌ای استفاده شود)‏.ممکن است بعدا به صورت دستی با استفاده از دید حرارتی شده رفرش، تجدید قوا شود.در نسخه ۹.۴،رفرش ممکن است همزمان با انتخاب در دید تحقق یافته باشد اگر به طور همزمان مورد استفاده قرار گیرد.

مثالی از نوع ساختاری برای ایجاد یک دید تحقق یافته در پستگرس کیوال:
                                                                    CREATE MATERIALIZED VIEW MV_MY_VIEW
                                                        [ WITH (storage_parameter [= value] [, ... ]) ]
                                                                      [ TABLESPACE tablespace_name ]
                                                                      ;<AS SELECT * FROM <table_name

سرور اس کیو ال 
Microsoft SQL Server differs from other RDBMS by the way of implementing materialized view via a concept known as "Indexed Views". The main difference is that such views do not require a refresh because they are in fact always synchronized to the original data of the tables that compound the view. To achieve this, it is necessary that the lines of origin and destination are "deterministic" in their mapping which limits the types of possible queries to do this. This mechanism has been realised since the 2000 version of SQL Server.

مثالی از نوع ساختاری برای ایجاد یک دید تحقق یافته در سرور اس کیو ال:
                                                                                 CREATE VIEW MV_MY_VIEW
                                                                                     WITH SCHEMABINDING
                                                                                                     AS 
                                                                        SELECT COL1, SUM(COL2) AS TOTAL
                                                                                      <FROM <table_name 
                                                                                         ;GROUP BY COL1
                                                                                                     GO
                                                                       CREATE UNIQUE CLUSTERED INDEX XV 
                                                                                ;ON MV_MY_VIEW (COL1)

جریان پردازش فریم ورک 
همه Apache Kafka (since v0.10.2), Apache Spark (since v2.0), Apache Flink, Kinetica DB, Materialize, and RisingWave از دید تحقق یافته ای در جریان اطلاعات پشتیبانی میکنند.

بیشتر 
دیدگاه‌های تحقق یافته نیز در سیبیس اس کیو ال هر جایی پشتیبانی می‌شوند.در IBM Db2، آن‌ها "جدول کوئری تحقق یافته" نامیده می‌شوند.کلیک هاوس از دیدگاه‌های تحقق یافته ای پشتیبانی می‌کند که به طور خودکار در ادغام احیا می‌شوند.مای اس کیو ال دیدگاه‌های تحقق یافته را پشتیبانی نمی‌کند، اما راه‌حل‌های ممکن را می توان با استفاده از محرک‌ها یا روش‌های ذخیره یا با استفاده از کنترل دستی برنامه منبع باز اجرا کرد.دیدگاه‌های تحقق یافته شده را می توان در آمازون دینامو دی بی با استفاده از رویداده‌ای اصلاح داده گرفته‌شده توسط  جریان دینامو دی بی اجرا کرد.گوگل اعلام کرد که در ۸ آوریل ۲۰۲۰ در دسترس بودن دیدگاه‌های تحقق یافته برای بیگ کوئری به عنوان یک انتشار بتا اعلام شد.

منابع 

 ^ Oracle8i Tuning Release 8.1.5. Ecst.csuchico.edu. Retrieved on 2012-02-09
 ^ Materialized Views – Sybase SQL Anywhere Archived 2009-12-14 at the Wayback Machine. Ianywhere.com. Retrieved on 2012-02-09.
 ^ Improving Performance with SQL Server 2005 Indexed Views. Microsoft.com. Retrieved on 2012-02-09.
 ^ ClickHouse Documentation MaterializedView. Clickhouse.yandex. Retrieved on 2019-09-05.
 ^ Implementing materialized views in MySQL. Shinguz.ch (2006-11-06). Retrieved on 2012-02-09.
 ^ Flexviews for MySQL – incrementally refreshable materialized views w/ MySQL. Flexviews.sourceforge.net. Retrieved on 2012-02-09 
 ^ Google BigQuery Materialized Views documentation Google.com Retrieved on 2020-05-20.

لینک های خارجی 

 Materialized View Concepts and Architecture – Oracle
 SQL Snippets: SQL Features Tutorials – Materialized Views – Oracle
 Oracle9i Replication Management API Reference Release 2 (9.2)
 Materialized Views in Oracle 11.2
 Materialized query tables in Db2
 Creating Materialized Views In MySQL
مدل‌سازی در داده‌ها
سامانه‌های مدیریت پایگاه داده‌ها
پایگاه داده‌ها
مدل رابطه‌ای