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

ارسال داده بین تسک‌ها فراتر از XCom: دیتابیس داخلی و MinIO

در Airflow، انتقال داده بین Taskها معمولاً از طریق XCom انجام می‌شود. هر Task می‌تواند مقدار برگشتی (return) خود را به XCom بفرستد و Taskهای بعدی آن را بازیابی کنند. در نسخه‌های جدید TaskFlow API، این کار به‌صورت خودکار انجام می‌شود.

اما برای داده‌های حجیم، ذخیره مستقیم در XCom باعث سنگینی و کندی دیتابیس متادیتا (Postgres) می‌شود، زیرا علاوه بر یک رکورد کلی، برای هر کلید داخل JSON هم یک رکورد جدا ایجاد می‌شود.

راهکارها:

  1. Custom XCom Backend
    • با ایجاد یک کلاس سفارشی که از BaseXCom ارث‌بری می‌کند، می‌توان داده‌های بزرگ را در یک storage خارجی ذخیره و تنها مسیر یا شناسه آن را در XCom نگه داشت.
    • مزایا: جلوگیری از پر شدن دیتابیس، کنترل سریال‌سازی/دسریال‌سازی، یکپارچگی با storage خارجی مثل S3 یا MinIO.
  2. ارسال داده‌ها خارج از XCom
    • داده‌های حجیم (مثل DataFrame یا فایل JSON) را در سیستم‌هایی مانند MinIO ذخیره کنید.
    • XCom فقط مسیر فایل یا شناسه object را منتقل می‌کند تا Task بعدی بتواند آن را بازیابی کند.
    • این روش بار دیتابیس را کاهش می‌دهد و پایپ‌لاین را مقیاس‌پذیر می‌کند.

در نتیجه، برای داده‌های کوچک XCom کافی است، ولی برای داده‌های بزرگ بهتر است از Custom XCom Backend یا object storage خارجی استفاده شود.

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

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