برنامه نویسی

نماهای مادی شده چیست؟ یک مقدمه 5 دقیقه ای

بریتنی پارکر همیشه به نرم‌افزار و پایگاه‌های اطلاعاتی و گسترش آموزش‌های خود در زمینه‌های فنی علاقه داشته است. او در بوت کمپ های متعدد برنامه نویسی و کارگاه های توسعه برای ادامه تحصیل در فضای فناوری شرکت کرده است. بریتنی نویسنده ای برای Girls Write Tech است که در محتوای نوشتاری فنی تخصص دارد و هدف آن تشویق بیشتر توسعه دهندگان زن به اشتراک گذاری دانش خود است.

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

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

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

این آموزش در یک نگاه:

نمای مادی شده چیست؟

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

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

نماهای مادی‌شده برای اولین بار توسط پایگاه داده اوراکل پیاده‌سازی شدند و از 8i به بعد در هر نسخه در دسترس بودند. محیط های دیگری که از نماهای تحقق یافته پشتیبانی می کنند عبارتند از PostgreSQL، SQL Server، Sybase SQL Anywhere، BigQuery و موارد دیگر.

نمونه‌های مشاهده مادی‌شده

به عنوان مثال، فرض کنید یک پایگاه داده با دو جدول دارید: یکی شامل تعداد کارمندان در کسب و کار شما و دیگری شامل تعداد بخش های کسب و کار شما است.

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

یا مثلاً یک پایگاه داده با دو جدول دارید: یکی برای تعداد کل فروش هایی که انجام داده اید و دیگری برای کل درآمدی که ایجاد می کنید. می‌توانید از یک نمای تحقق‌یافته استفاده کنید تا ببینید هر فروش چه میزان درآمدی را در زمان واقعی به همراه دارد.

چرا از نماهای مادی استفاده می کنیم؟

هر بار که یک پایگاه داده را پرس و جو می کنید، همیشه نوعی هزینه به شما تعلق می گیرد. حتی چیزی به ظاهر ساده مانند یک پرس و جو هنوز به این معنی است که شما در حال تجزیه، اعتبارسنجی، برنامه ریزی، بهینه سازی و اجرای آن پرس و جو هستید که برابر با زمان CPU، استفاده از حافظه، هزینه فرصت و موارد دیگر است.

از آنجایی که برنامه شما همچنان به رشد خود ادامه می دهد و تقاضا بیشتر می شود، طبیعتاً به دنبال فرصت هایی برای کاهش این هزینه ها تا حد امکان هستید.

اینجاست که دیدگاه های مادی شده وارد عمل می شوند.

زیرا نتایج یک دیدگاه مادی شده است در حافظه نگهداری می شود، آنها فقط زمانی به روز می شوند که انجام این کار صریحاً ضروری باشد. به همین دلیل، آنها می توانند به طور قابل توجهی هزینه های کلی شما را در مقایسه با پرس و جو از جداول یا استفاده از نماهای منطقی کاهش دهند.

نکات مثبت نماهای مادی شده

  • با پیش محاسبه عملیات گران قیمت، عملکرد را بهبود بخشید
  • افزایش سرعت پرس و جو در پایگاه داده های بسیار بزرگ
  • پرس و جوهای گران قیمت یا بخش های گران قیمت درخواست های خود را به طور موثر اجرا کنید

معایب نماهای مادی شده

  • هر نوع پایگاه داده ای از نماهای تحقق یافته پشتیبانی نمی کند
  • نماهای مادی شده فقط خواندنی هستند
  • شما نمی توانید کلیدها، محدودیت ها، محرک ها یا مقاله ها را ایجاد کنید

برای اطلاعات بیشتر در مورد اینکه چرا باید از نمای مادی استفاده کنید، این مقاله را از Materialize بررسی کنید.

نحوه ایجاد نمای متریال شده

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

نمونه ای از یک دستور SQL که می تواند برای ایجاد یک نمای مادی استفاده شود به شرح زیر است:

CREATE [ OR REPLACE ] [ SECURE ] MATERIALIZED VIEW [ IF NOT EXISTS ] <name>
  [ COPY GRANTS ]
  ( <column_list> )
  [ COMMENT = '<string_literal>' ]
  [ CLUSTER BY ( <expr1> [, <expr2> ... ] ) ]
  AS <select_statement>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نمونه ای از دستور در اوراکل که می تواند برای ایجاد یک نمای مادی استفاده شود به شرح زیر است:

 CREATE MATERIALIZED VIEW MV_MY_VIEW
REFRESH FAST START WITH SYSDATE
   NEXT SYSDATE + 1
     AS SELECT * FROM <table_name>;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نمونه ای از دستور برای PostgreSQL که می تواند برای ایجاد یک نمای مادی استفاده شود به شرح زیر است:

 CREATE MATERIALIZED VIEW MV_MY_VIEW
 [ WITH (storage_parameter [= value] [, ... ]) ]
    [ TABLESPACE tablespace_name ]
     AS SELECT * FROM <table_name>;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نسخه 9.3 و جدیدتر به صورت بومی از نماهای تحقق یافته پشتیبانی می کند.

نمای مادی در مقابل نمای

بنابراین، تفاوت های عمده بین دیدگاه و نمای مادی شده چیست و چرا باید از یکی بر دیگری استفاده کنید؟

View یک نوع بسیار خاص از جدول مجازی است که با استفاده از دستور “Create View” ایجاد می شود. این شامل تمام داده های به دست آمده از یک عبارت پرس و جو مربوطه است.

اگر با یک یا حتی چند جدول یا نما کار می کنید، می توانید از این برای ایجاد یک View استفاده کنید. شما همچنین می توانید نمای خود را به همان روشی که از یکی از آن جداول پایه استفاده می کنید پرس و جو کنید.

نکته کلیدی برای درک این است که View است همیشه محاسبه می شود هر بار که به هر طریقی مورد استفاده قرار می گیرد یا به آن دسترسی پیدا می کند. به همین دلیل، شما همیشه به روزترین داده‌ها را در هر View که درخواست می‌کنید، دریافت می‌کنید.

اگر هر نوع به‌روزرسانی را برای محتوای یک View انجام دهید، همیشه وجود خواهد داشت “به عقب رانده شد” و در جدول اصلی به روز شد. به همین ترتیب، عکس آن نیز صادق است: هر تغییری که در جدول اصلی اصلی ایجاد شود، فوراً در View منعکس می شود.

با این حال، این بدان معنی است که عملکرد یک View خواهد بود همیشه کندتر باشید نسبت به دیدگاه تحقق یافته. مزیت اصلی این است که یک View در واقع به فضای ذخیره سازی نیاز ندارد. شما همچنین می توانید کنترل کاملی داشته باشید که کاربران می توانند یا نمی توانند اطلاعات حساس را در خود پایگاه داده مشاهده کنند.

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

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

نتیجه این است که یک نمای واقعی همیشه سریعتر از نمای سنتی به یک پرس و جو پاسخ می دهد، اما اگر مراقب نباشید می توانید داده های قدیمی را نیز بازیابی کنید.

نمای مادی شده در مقابل جدول

پاسخ به این سوال در زمینه محیط هایی مانند Oracle یا MySQL در نهایت به مفهومی به نام می رسد. “بازنویسی پویا پرس و جو.” درک این نکته کلیدی است که یک نمای مادی شده روابط بین داده ها و جدول پایه اصلی را به درستی تعریف نمی کند. همچنین به کاربران این امکان را می دهد اتصالات گران قیمت را از قبل محاسبه کنید و همچنین تجمعات.

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

به بیان دیگر، نمای مادی شده همیشه با “داده های واقعی” در جدول همگام خواهد بود. در واقع لازم نیست برای انجام کاری از راه خود دست بردارید زیرا در آن مرحله پایگاه داده این کار را برای شما انجام خواهد داد.

بعد چه چیزی یاد بگیریم

نماهای مادی‌شده راهی عالی برای کاهش هزینه‌ها در طول توسعه برنامه شما است، به‌ویژه زمانی که به رشد آن ادامه می‌دهد. نه تنها در زمان ساعت دیواری صرفه جویی می کنید، بلکه کارایی را افزایش می دهید و مواردی مانند زمان CPU و استفاده از حافظه را نیز کاهش می دهید، بنابراین قبل از اینکه متوجه شوید به صرفه جویی پولی واقعی تبدیل خواهید شد.

اما چیزهای بیشتری برای یادگیری وجود دارد. برای ادامه یادگیری، در ادامه باید این مفاهیم را بررسی کنید:

  • ایجاد نماهای مادی با Big Query
  • پیوستن به یک دیدگاه مادی شده
  • تعلیق به روز رسانی
  • استفاده از داده های به اشتراک گذاشته شده با نماهای تحقق یافته

برای تمرین عملی با پایگاه داده، دوره آموزشی Educative را بررسی کنید اصول طراحی پایگاه داده برای مهندسین نرم افزار. در این دوره آموزشی با مفاهیم اساسی پایگاه داده آشنا خواهید شد. شما همچنین در معرض تکنیک هایی مانند نرمال سازی قرار خواهید گرفت که به افزایش کارایی پایگاه های داده کمک می کند.

یادگیری مبارک!

به خواندن در مورد پایگاه های داده آموزشی ادامه دهید

بحثی را شروع کنید

چرا استفاده از نمای مادی شده را دوست دارید؟ این مقاله به شما کمک کرد؟ در قسمت نظرات پایین ما را آگاه کنید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا