بخش اول: ورود به جهان قدرتمند PostgreSQL
بخش دوم: جادوی جستجو و کوئری‌نویسی
بخش سوم: بهینه‌سازی و ساختارهای پیشرفته
بخش چهارم: امنیت، پشتیبانی، عملکرد و نگه‌داری
کارگاه‌ها و مثال‌های کاربردی

جلسه دوم : درک عمیق ساختار داده و مکانیزم‌های داخلی PostgreSQL

در دومین جلسه از دوره‌ی پستگرس کاربردی، از سطح دستورات معمول SQL به لایه‌های عمیق‌تر PostgreSQL سفر می‌کنیم — جایی که داده‌ها واقعاً زندگی می‌کنند.
در این جلسه، با تمرین‌های عملی و مثال‌های واقعی، درک خواهیم کرد که داده‌ها در PostgreSQL چگونه تعریف، تولید، ذخیره و مدیریت می‌شوند.


🚀 بخش اول: راه‌اندازی PostgreSQL با Docker

در آغاز جلسه، PostgreSQL را در محیطی ایزوله و قابل‌حمل با استفاده از Docker راه‌اندازی می‌کنیم. این روش نه‌تنها راه‌اندازی سریع را ممکن می‌سازد، بلکه برای مهندسان داده محیطی استاندارد و تکرارپذیر فراهم می‌کند.


🧱 بخش دوم: مروری بر DDL و مفاهیم پایه SQL

در این بخش، نگاهی دقیق‌تر به دستورات DDL (Data Definition Language) خواهیم داشت:

  • ایجاد و حذف Database و Schema
  • ساخت Table, Data Type, و Sequence
  • بررسی روابط و وابستگی‌های میان این عناصر در ساختار کلی پایگاه داده

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


🧬 بخش سوم: انواع داده در PostgreSQL

PostgreSQL از نظر تنوع و انعطاف در Data Types یکی از قدرتمندترین سیستم‌های پایگاه داده است.
در این بخش، علاوه بر مرور انواع استاندارد (عددی، متنی، زمانی)، با داده‌های پیشرفته‌تر آشنا می‌شویم:

  • JSON / JSONB برای داده‌های نیمه‌ساخت‌یافته
  • ARRAY برای ذخیره‌ی چند مقدار در یک ستون
  • HStore برای کلید-مقدارهای ساده و سریع
    در کنار آن، مثال‌هایی از سناریوهای کاربردی هر نوع داده بررسی می‌کنیم.

🧩 بخش چهارم: ساخت نوع داده‌ی دلخواه (User-Defined Types)

در ادامه یاد می‌گیریم چگونه می‌توان نوع داده‌ی جدیدی متناسب با نیازهای خاص تعریف کرد — مثلاً نوعی برای نگهداری ساختار عددی یا زمانی خاص.
با استفاده از زبان PL/pgSQL، رفتار این نوع داده‌ها را می‌توان با توابع سفارشی کنترل کرد؛ برای مثال تعریف اینکه داده چگونه با سایر مقادیر مقایسه شود یا در عملیات ریاضی چه رفتاری داشته باشد.
این ویژگی PostgreSQL را از یک پایگاه داده سنتی به یک پلتفرم قابل توسعه‌ی داده‌محور تبدیل می‌کند.


🔢 بخش پنجم: تفاوت بین Serial، Sequence و Identity

در این بخش به بررسی دقیق یکی از پرکاربردترین مفاهیم در طراحی جداول می‌پردازیم — شماره‌گذاری خودکار (Auto Increment):

  • Sequence: یک شیء مستقل برای تولید مقادیر منحصربه‌فرد که می‌تواند میان چند ستون یا جدول به اشتراک گذاشته شود.
  • Serial / BigSerial: میان‌بری برای ایجاد یک ستون عددی به همراه Sequence داخلی متصل به آن.
  • Identity Columns: روش استاندارد و مدرن SQL برای تولید خودکار مقادیر، با کنترل دقیق‌تر:
    • GENERATED ALWAYS AS IDENTITY: سیستم همیشه مقدار را تولید می‌کند.
    • GENERATED BY DEFAULT AS IDENTITY: کاربر می‌تواند مقدار دلخواه درج کند.

در این بخش یاد می‌گیریم کدام گزینه در چه شرایطی کارایی و پایداری بهتری دارد.


🧠 بخش ششم: بررسی متادیتا و ساختار داخلی جداول

در این قسمت با نگاهی به جداول سیستمی PostgreSQL مانند pg_class, pg_type, pg_attribute, و pg_namespace درک می‌کنیم که هر جدول، ستون یا نوع داده در واقع رکوردی در متادیتای سیستم است.
با تحلیل این جداول، یاد می‌گیریم چگونه PostgreSQL موجودیت‌ها و ساختار داده را در سطح داخلی خود مدیریت و ثبت می‌کند.


⚙️ بخش هفتم: ساختار Page و مفهوم CTID

در پایان جلسه، به سطح فیزیکی ذخیره‌سازی داده می‌رویم:

  • هر جدول از Pageهایی به اندازه‌ی ۸KB تشکیل شده است.
  • بررسی نحوه‌ی رشد فایل‌ها در سیستم ذخیره‌سازی
  • تحلیل ساختار درونی یک Page و مفهوم CTID
  • اینکه چرا پس از هر UPDATE مقدار CTID تغییر می‌کند
  • و نقش این مکانیزم در فرآیندهایی مانند Vacuum و HOT Update

🎯 هدف نهایی این جلسه

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

فروشگاه
جستجو
دوره ها

لطفا کلمات کلیدی را وارد کنید