پستگرس و نیازمندیهای تحلیلی نوین

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

Postgres is eating the database world
PostgreSQL isn’t just a simple relational database; it’s a data management framework with the potential to engulf the entire database…
https://medium.com/@fengruohang/postgres-is-eating-the-database-world-157c204dcfc4
در سالهای اخیر، با رشد تقاضا برای پردازش تحلیلی و نیاز به تولید سریع گزارشهای هوش تجاری، PostgreSQL نیز در مسیر تکامل بهعنوان یک پایگاه داده تحلیلی گام برداشته است. برخی از پیشرفتهای کلیدی در این زمینه شامل موارد زیر هستند:
✅ ذخیرهسازی ستونی: افزونههایی مانند Hydra و pg_analytics امکان ذخیرهسازی دادهها بهصورت ستونی (Columnar) را فراهم کردهاند که یکی از ویژگیهای کلیدی پایگاههای داده تحلیلی مدرن است.
✅ تطابق با Lakehouse و Iceberg: ترکیب PostgreSQL با معماری Lakehouse و ذخیرهسازی مستقیم دادههای تحلیلی در قالب Parquet با افزونههایی مانند pg_mooncake، گامی دیگر در مسیر ارتقای آن به یک پایگاه داده تحلیلی جامع است.
با این پیشرفتها، PostgreSQL بیشازپیش در مسیر تبدیلشدن به یک پایگاه داده تحلیلی مقیاسپذیر و منعطف قرار گرفته است و به نظر میرسد در آینده نزدیک، تطبیق بیشتری با دادههای حجیم تحلیلی پیدا کند.
راجع به Mooncake
فرض کنید میخواهید دادههای مربوط به رفتار کاربران در یک اپلیکیشن یا وبسایت را ذخیره کنید؛ برای مثال، اینکه روی چه محصولاتی کلیک کردهاند یا چه اکشنهایی انجام دادهاند. چنین دادههایی معمولاً حجم بالایی دارند و اگر در پایگاه داده اصلی، مانند PostgreSQL، ذخیره شوند، ممکن است عملکرد آن را کند کنند. به همین دلیل، معمولاً از پایگاه دادههای تحلیلی مانند ClickHouse استفاده میشود تا هم از سرعت بالای پردازش تحلیلی بهره ببریم و هم بار اضافی به دیتابیس عملیاتی تحمیل نکنیم.
اما با نصب pg_mooncake، میتوان این دادههای حجیم را مستقیماً در PostgreSQL ذخیره کرد، درحالیکه دادهها در عمل در یک استوریج جداگانه، مانند MinIO، ذخیره میشوند. این افزونه امکان ذخیره دادهها را در قالبهای Delta Lake (و بهزودی Iceberg) بهصورت فایلهای Parquet فراهم میکند.
چگونه کار میکند؟
✅ دادهها در ظاهر از طریق PostgreSQL درج و کوئری میشوند.
✅ اما در پشتصحنه، دادهها در یک استوریج جداگانه مانند MinIO یا هر سرویس دیگری ذخیره میشوند.
✅ امکان ترکیب با ابزارهای پردازش دادههای حجیم مانند DuckDB، Polars، Pandas و Spark وجود دارد.
مشاهده محل ذخیرهسازی دادهها
برای یافتن مسیر دقیق فایلهای مرتبط با جداول Mooncake، میتوانید از کوئری زیر استفاده کنید:
SELECT * FROM mooncake.columnstore_tables;
خروجی این دستور مسیر دایرکتوریای را نشان میدهد که دادهها بهصورت Delta Lake (و در آینده Iceberg) در آن ذخیره شدهاند و مستقیماً میتوان آنها را با Pandas، DuckDB، Polars یا Spark کوئری گرفت.
🚀 نتیجه: با pg_mooncake، میتوان از انعطافپذیری و امکانات PostgreSQL برای ذخیره دادههای تحلیلی بهره برد، بدون اینکه نیاز به مهاجرت به یک پایگاه داده تحلیلی جداگانه باشد. این یعنی سادگی، یکپارچگی، و کاهش هزینههای زیرساختی.
عکس از مقاله زیر برداشته شده است :