۱۱ آبان ۱۴۰۵ posthog.com ۲ دقیقه مطالعه

دلایل کوچ PostHog از DuckDB به Trino و HogLake در مقیاس پتابایت

دلایل کوچ 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)

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

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

این خبر را با دیگران به اشتراک بگذارید

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