همروندی و مدیریت تراکنشها در Airflow: تجربه عملی از Postgres تا MinIO

🔹 در ادامهی کارگاههای عملی مدرسه مهندسی داده سپهرام، یک ویدئو آموزشی یکساعته آماده شده است که به یکی از مسائل بسیار مهم در طراحی پایپلاینهای داده با ایرفلو (Apache Airflow) میپردازد: موضوع همروندی (Concurrency).
در این ویدئو یک دگ (DAG) کاربردی را در ایرفلو نسخه ۳٫۱ بررسی میکنیم که وظیفهاش انتقال تراکنشها از پستگرس (Postgres) به MinIO است.
فعالیتهایی که در این کارگاه آموزشی به کمک ایرفلو انجام می شود :
🔰سنسور برای انتظار تراکنشهای جدید.
🔰تسک پردازش (Transform) برای استخراج تراکنشهای خام از پایگاه داده.
🔰ذخیرهسازی در MinIO به صورت JSON برای استفاده در مراحل بعدی (مثل ذخیره در Lakehouse).
🔰بهروزرسانی وضعیت تراکنشها در پستگرس بهعنوان “پردازششده”.
❓ اما چالش کجا پیش میآید؟
وقتی چند بار این دگ را همزمان اجرا کنیم، هر بار ممکن است مجموعهی مشابهی از تراکنشها انتخاب شود و چندین بار پردازش شود. این همان مشکل اجرای ناخواستهی موازی (Duplicate Processing) است.
برای حل این مسئله، در ویدئو چند راهحل بررسی شده است:
🟠 راهحلهای محدود کردن همروندی
✨ گزینه depends_on_past: ایرفلو دگ یا تسک بعدی را تنها در صورتی اجرا میکند که اجرای قبلی همان تسک از دگهای قبلی تکمیل شده باشد.
✨ گزینه max_active_runs: میتوانیم تعیین کنیم که حداکثر چند اجرای همزمان از یک دگ فعال باشد (مثلاً فقط یک اجرای فعال در لحظه).
✨ گزینه pool (در این دگ خاص بررسی نشد): ابزاری برای محدود کردن تعداد اجرای همزمان یک تسک مشخص.
🟢 راهحلهای واقعی برای موازیسازی
اگر بخواهیم اجرای موازی واقعی برای سناریوی فوق (ترکیب ایرفلو و یک دیتابیس رابطهای)، داشته باشیم، باید به سراغ تکنیکهای سطح دیتابیس برویم. یکی از مهمترین آنها:
- قفلگذاری موقت هنگام انتخاب سطرها با دستور FOR UPDATE SKIP LOCKED: با این تکنیک میتوانیم در لحظهی انتخاب رکوردها (SELECT) ردیفهای انتخابشده را قفل کنیم تا پردازشهای دیگر نتوانند آنها را همزمان بردارند. این کار نیاز دارد که انتخاب (SELECT) و بهروزرسانی (UPDATE) در همان تراکنش انجام شود تا رفتار اتمیک تضمین گردد.
📌 کدهای کامل این دگ در گیتهاب موجود است:
👉 https://github.com/sepahram-school/workshops/tree/main/2-Airflow-Concurrency-Control-SQL
🎥 امیدوارم این ویدئو برای تمام کسانی که در پروژههای واقعی با ایرفلو کار میکنند و دغدغهی پایداری و دقت پایپلاینهای داده دارند، مفید و الهامبخش باشد.
کانال تلگرام مدرسه مهندسی داده سپهرام : https://t.me/sepahram_school
کانال تلگرام BigData.IR – وبسایت مهندسی داده : https://t.me/bigdata_ir
دورههای تخصصی سپهرام : https://sepahram.ir/courses
آدرس ویدئو در یوتیوب :
