دلایل کوچ PostHog از DuckDB به Trino و HogLake در مقیاس پتابایت — Moving our warehouse off DuckDB
خلاصه
تیم PostHog پس از پنج ماه استفاده از DuckDB برای انبار داده خود، به دلیل چالشهای مقیاسپذیری در حجم یک تریلیون رکورد، تصمیم به مهاجرت به Trino گرفت. این مقاله دلایل این جابجایی، مشکلات کار با DuckLake و درسهای آموختهشده را بررسی میکند.
تیم توسعه PostHog اخیراً اعلام کرد که انبار داده (Data Warehouse) خود را پس از ۵ ماه تلاش از روی موتور DuckDB به معماری جدیدی بر پایه Trino و فرمت اختصاصی HogLake منتقل کرده است. این تصمیم پس از آن گرفته شد که حجم دادهها به حدود ۲ پتابایت، معادل یک تریلیون رکورد و ۱۵.۳ میلیون اسنپشات رسید و محدودیتهای معماری تکگرهای خود را نشان داد.
چرا DuckDB در مقیاس ابری دچار چالش شد؟
ابزار DuckDB به عنوان یک ابزار تحلیل داده تکگرهای روی سیستمهای محلی و لپتاپها عملکرد فوقالعادهای دارد. اما پیادهسازی آن در محیط ابری با چالشهای جدی همراه بود:
- پیشبینی منابع دشوار: تعیین دقیق میزان CPU و حافظه مورد نیاز برای کوئریهای پیچیده مشتریان در یک معماری تکگرهای بسیار سخت است.
- مدیریت حافظه و دیسک: هنگامی که حافظه پر میشود، سیستم به سراغ دیسک میرود که این امر باعث افت شدید سرعت و افزایش هزینهها میشود.
- محدودیتهای ذخیرهسازی ابری: خواندن حجم زیادی از دادهها از روی S3 به صورت ناهمگام (Async) در نسخههای اولیه بهینه نبود.
چالشهای فرمت DuckLake و پروتکل Postgres
تیم PostHog از افزونه DuckLake برای مدیریت دادهها استفاده کرد، اما ساختار کاتالوگ آن برای مقیاسهای توزیعشده طراحی نشده بود:
- کند شدن عملیات Write: به دلیل بازخوانی مداوم آمار کل کاتالوگ در هر کامیت، ثبت دادهها در جدول منفرد گاهی بیش از سه دقیقه طول میکشد.
- مشکلات اتصال به دیتابیس متادیتا: مدیریت تعداد زیاد کانکشنها روی نمونههای مشترک Postgres هزینهبر و دردسرساز بود.
- پیچیدگی پروتکل pgwire: ارائه مستقیم ارتباطات Postgres روی پورت
5432به جای پروتکل HTTP، مدیریت مواردی مثل Reconnectها، مدیریت TTL و تنظیمات Load Balancing را در کوبرنتیز (Kubernetes) بسیار پیچیده کرد.
معماری جدید بر پایه Trino و HogLake
پس از تجربههای ناموفق در نگهداری انشعابهای (Forks) سفارشی از DuckLake، تیم تصمیم گرفت سیستم را از نو بازطراحی کند. معماری جدید بر اساس نسخه سفارشیسازیشدهای از Trino و یک فرمت جدول متنباز جدید به نام HogLake بنا شده است.
نگاه جامعه برنامهنویسان (Hacker News)
در بحثهای شکلگرفته پیرامون این مقاله در هکرنیوز، برخی کاربران به کمبود جزئیات فنی دقیق و بنچمارکهای کمی در متن اصلی اشاره کردند و روند تغییرات معماری شرکت را ناشی از چالشهای رشد سریع دادهها دانستند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل