پرش به محتوای اصلی
مهندسی داده

معماری پایپلاین داده: ۱۰ اصل برای ETL/ELT مقیاس‌پذیر

ده اصل عملی برای طراحی پایپلاین داده مقیاس‌پذیر و قابل‌اتکا؛ از انتخاب میان ETL و ELT تا ایده‌مپوتنسی، کیفیت داده و مشاهده‌پذیری.

تیم مهندسی داده گلدیتا۲۴ اردیبهشت ۱۴۰۴۱۱ دقیقه مطالعه

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

در ادامه ده اصل کلیدی را مرور می‌کنیم. این اصول مستقل از فناوری خاص هستند و چه از ابزارهای متن‌باز مثل Apache Airflow و dbt استفاده کنید و چه از سرویس‌های مدیریت‌شده، همگی قابل‌اعمال‌اند.

۱) انتخاب آگاهانه میان ETL و ELT

در رویکرد کلاسیک ETL، داده پیش از بارگذاری در مقصد تبدیل می‌شود؛ این روش وقتی مناسب است که منابع محاسباتی مقصد محدود باشد یا نیاز به پاک‌سازی سنگین پیش از ورود داشته باشید. در مقابل، ELT داده‌ی خام را ابتدا در انبار داده بارگذاری می‌کند و تبدیل‌ها را با توان پردازشی خود انبار انجام می‌دهد.

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

۲) ایده‌مپوتنسی و قابلیت اجرای مجدد

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

  • از الگوی merge/upsert به‌جای insert خام استفاده کنید تا رکوردهای تکراری ایجاد نشود.
  • بارگذاری‌ها را بر اساس پنجره‌ی زمانی یا کلید پارتیشن قابل‌بازنویسی طراحی کنید.
  • وضعیت اجرای هر مرحله را در یک جدول کنترلی ثبت کنید تا ادامه از نقطه‌ی شکست ممکن شود.

۳) بارگذاری افزایشی به‌جای بارگذاری کامل

بارگذاری کامل جدول‌ها در هر اجرا با رشد داده به‌سرعت ناممکن می‌شود. بارگذاری افزایشی تنها رکوردهای تغییریافته از آخرین اجرا را پردازش می‌کند. برای تشخیص تغییرات می‌توانید از ستون مهر زمانی به‌روزرسانی، شماره‌ی نسخه، یا تکنیک‌های Change Data Capture روی لاگ تراکنش پایگاه‌داده بهره ببرید.

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

۴) اعتبارسنجی کیفیت داده در مبدأ و مقصد

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

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

۵) مشاهده‌پذیری و مانیتورینگ

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

ردیابی نسب داده (Data Lineage)

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

۶) جداسازی محیط‌ها و کد به‌مثابه‌ی پیکربندی

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

۷) مدیریت خطا و سیاست تلاش مجدد

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

۸) بهینه‌سازی هزینه و عملکرد

  • پارتیشن‌بندی و خوشه‌بندی جدول‌ها بر اساس الگوی پرس‌وجوی غالب.
  • پرهیز از پردازش‌های full scan و استفاده از فشرده‌سازی ستونی.
  • زمان‌بندی بارهای سنگین در ساعات کم‌مصرف و استفاده از منابع کشسان.

۹) امنیت و حریم خصوصی در سراسر جریان

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

۱۰) مستندسازی و مالکیت روشن

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

رعایت این ده اصل، پایپلاین شما را از یک اسکریپت شکننده به یک سامانه‌ی مهندسی‌شده‌ی قابل‌اتکا تبدیل می‌کند. محصول GoldData Gateway همه‌ی این الگوها را به‌صورت توکار فراهم می‌کند تا تیم‌ها به‌جای بازسازی زیرساخت، روی ارزش‌آفرینی از داده تمرکز کنند.

آماده‌اید داده را به طلا تبدیل کنید؟

با کارشناسان گلدیتا درباره‌ی نیاز سازمان خود گفت‌وگو کنید؛ از معماری داده تا استقرار هوش مصنوعی، کنار شما هستیم.