صفحه نخست --> مبانی پایگاه داده --> پایگاه داده PostgreSQL (زیر سیستم ها و معماری)

پایگاه داده PostgreSQL (زیر سیستم ها و معماری)

پایگاه داده PostgreSQL یک سیستم پایگاه داده‌ی ارتباطی شی‌گرا و منبع باز است که برای اولین‌بار در سال ۱۹۹۷ با نام “Ingres” ایجاد شد. در اواخر دهه‌ی ۱۹۹۰، Postgre استانداردهای SQL را پذیرفت و نام “PostgreSQL” را اتخاذ کرد. تا به امروز، هزاران برنامه‌ی کاربردی پایگاه داده با استفاده از PostgreSQL طراحی شده است و پذیرش گسترده‌ی آن، تصدیقی بر اعتبار معماری مفهومی(Conceptual architecture) آن پایگاه داده از طریق تحلیل سیستماتیک است. معماری مفهومی مذکور می‌تواند در فرایند اعتبارسنجی مرحله‌ی آخر و در نتیجه ایجاد یک معماری منسجم کمک کند.

PostgreSQL از ترکیبی از سبک‌های معماری استفاده می‌کند. در بالاترین سطح، مشتری و خدمت‌گزار توسط مدل مشتری-خدمت‌گزار کلاسیک با یکدیگر ارتباط برقرار می‌کنند، درحالی‌که ساختار دسترسی داده کاملاً لایه‌بندی شده است. در لایه‌ی خدمت‌گزار، پردازش پرس‌وجو به صورت خط لوله(Pipeline) ساخت‌یافته، درحالی‌که دسترسی به پایگاه توسط زیرسیستم‌های خدمت‌گزار به صورت تابلو اعلانات Bulletin board() ساخت‌یافته است. ارتباط میان مشتری و خدمت‌گزار تا حد زیادی مبتنی بر درخواست/پاسخ است و خدمات به هر مشتری با یک نخ(Thread) خدمت‌گزار جداگانه ارائه می‌شود. تمامی نخ‌های خدمت‌گزار به یک سیستم مدیریت داده‌ی مشترک دسترسی دارند.

پایگاه داده PostgreSQL
معماری پایگاه داده PostgreSQL

پردازنده‌ی پرس‌وجو/فرمان در پایگاه داده PostgreSQL

شکل زیر معماری مفهومی خدمت‌گزار PostgreSQL را نشان می‌دهد که به صورت خط لوله ساخت یافته است. این شکل جریان داده[۱] و کنترل کلی در back-end را از زمانی که یک پرس‌وجو دریافت و تا زمانی که نتایج ارسال می‌شود را نشان می‌دهد. شش زیرسیستم اصلی در خدمت‌گزار وجود دارد:

۱- تجزیه‌گر[۲] ابتدا پرس‌وجوی ارسالی توسط برنامه‌ی کاربردی را از نظر معتبر بودن نحو[۳] بررسی می‌کند. اگر نحو درست باشد، یک درخت تجزیه ایجاد و بازگردانده می‌شود. در غیر این صورت، یک خطا بازگردانده می‌شود. سپس درخت تجزیه به فرمول داخلی استفاده شده توسط پایگاه داده‌ی back-end تبدیل می‌شود.

۲- پلیس ترافیک[۱]، پرس‌وجو را به عنوان پرس‌وجوی مفید[۲] یا پیچیده شناسایی می‌کند. پرس‌وجوهای پیچیده در PostgreSQL انتخاب، درج، به‌روزرسانی و پاک می‌شوند. این پرس‌وجوها به مرحله‌ی بعد (بازنویس[۳]) ارسال و پرس‌وجوهای سودمند به فرمان‌های سودمند فرستاده می‌شوند.

۳- فرمان‌های سودمند، پرس‌وجوهایی که به مدیریت پیچیده نیاز ندارند را مدیریت می‌کنند. دستورات vacuum، نسخه‌برداری[۴]، تغییر دادن[۵]، ایجاد[۶] جدول، ایجاد نوع[۷] و بسیاری دیگر توسط فرمان‌های سودمند مدیریت می‌شوند.

۴- بازنویس پرس‌وجو، زیرسیستمی میان تجزیه‌گر و برنامه‌ریز[۸] است. این زیرسیستم درخت تجزیه‌ی عبوری از پلیس ترافیک را پردازش می‌کند و با اعمال هر قانون قابل‌اجرای موجود، درخت را به شکل متناوب بازنویسی می‌کند. در این مرحله PostgreSQL به منظور پشتیبانی سیستم قانونی قدرتمند برای مشخصات view و به‌روزرسانی viewهای مبهم فعال می‌شود.

۵- برنامه‌ریز، یک برنامه‌ی اجرایی بهینه را برای یک پرس‌وجوی داده ‌شده فراهم می‌کند. ایده‌ی اصلی برنامه‌ریز، انتخاب بهترین برنامه برای یک پرس‌وجو بر اساس تخمین هزینه است. برنامه‌ریز ابتدا تمام راه‌های پویش[۹] و پیوستن[۱۰] ارتباطات ظاهرشده در یک پرس‌وجو را ترکیب می‌کند. تمام مسیرهای ایجادشده منجر به ایجاد نتیجه‌ی یکسان می‌شوند و برنامه‌ریز هزینه‌ی اجرای هر مسیر را تخمین می‌زند. پس از همه‌ی این‌ها کم‌هزینه‌ترین مسیر انتخاب و به اجراکننده فرستاده می‌شود.

۶- اجراکننده[۱۱]، برنامه‌ی ایجادشده توسط برنامه‌ریز را می‌گیرد و پردازش بالاترین گره را آغاز می‌کند. اجراکننده، یک درخت برنامه‌ایی را اجرا می‌کند که شبکه‌ی تقاضا-کشش[۱۲] خط لوله‌ی گره‌های پردازش‌شده است. هر گره در زمان فراخوانی در رشته‌ی خروجی خود چندتایی بعدی را تولید می‌کند. گره‌های موجود در سطوح بالاتر گره‌های متصل هستند. هر گره‌ی متصل هر دو دنباله‌ی چندتایی ورودی را به یک دنباله تبدیل می‌کند. در مقابل، گره‌های موجود در سطوح پایین، پویشی از جدول‌های فیزیکی یا پویش ترتیبی[۱۳] یا پویش نمایه‌ای[۱۴] را ترکیب می‌کنند. اجراکننده از سیستم ذخیره‌سازی استفاده می‌کند درحالی‌که ارتباطات پویش‌شده عملیات مرتب کردن و پیوند را اجرا و شرایط را ارزیابی و در نهایت چندتایی‌های مشتق‌شده[۱۵] را باز می‌گرداند.  

پایگاه داده PostgreSQL
فرایند پرس و جو در پایگاه داده PostgreSQL

 

 

  فهرست مراحل برای پاسخگویی به پرس و جو: جریان کاری پرس‌وجو در پایگاه داده PostgreSQL

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

  1. رشته‌ی پرس وجوی SQL به درخت پرس‌وجو تبدیل می‌شود.
  2. درخت پرس‌وجو توسط بازنویس به صورت زیر تغییر می‌کند:

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

  1. برنامه‌ریز، درخت‌ تجزیه‌ی تغییریافته را می‌گیرد و تمام مسیرهای پرس‌وجوی ممکن را تولید می‌کند. سپس برای تعیین مسیر بهینه و ایجاد برنامه‌ی پرس‌وجو برای این مسیر، مسیرهای ایجادشده را ارزیابی می‌کند.
  2. برنامه‌ی پرس‌وجو به مجموعه‌هایی از پرس‌وجوهای SQL قابل اجرا تبدیل و برای دست‌یابی به نتایج، پردازش می‌شوند.
پایگاه داده PostgreSQL
usecase پایگاه داده PostgreSQL

[۱] Traffic Cop

[۲] Utility

[۳] Rewriter

[۴] Copy

[۵] Alter

[۶] Create

[۷] Type

[۸] Planner

[۹] Scanning

[۱۰] Joining

[۱۱] Executor

[۱۲] Demand-pull

[۱۳] Sequential

[۱۴] Index

[۱۵] Derived

[۱] Data flow

[۲] Parser

[۳] Syntax

منبع:

http://www.inf.fu-berlin.de/lehre/WS09/DBS-Tech/Material/ConceptArchPostres.pdf

 

آدرس کانال تلگرام ما:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

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

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