Table of Contents
الگوی سازنده در مهندسی داده: یک بنیاد برای انعطاف پذیری
مهندسی داده مدرن خواستار خط لوله است که می تواند منابع داده در حال تغییر، منطق تحول و مقاصد ذخیره سازی را اداره کند. طرح های خط لوله تکlithic اغلب منجر به سیستم های شکننده می شوند که شکستن زمانی که الزامات حتی کمی تغییر می کنند، الگوی سازنده، یک الگوی طراحی به خوبی تثبیت شده، ارائه می دهد یک رویکرد ساختار یافته به ساخت اشیاء پیچیده گام به خط لوله داده های کاربردی، آن را از پیکربندی های اصلی جدا می کند، بدون اجازه می دهد تا مهندسان خط لوله کشی مجدد تنظیم کنند.
درک الگوی سازنده
ریشه ها و مفهوم اصلی
الگوی سازنده در برنامه نویسی شی گرا برای حل مشکل ساخت اشیاء با بسیاری از قطعات اختیاری ایجاد شده است، به جای استفاده از یک سازنده بزرگ با پارامترهای متعدد یا طبقه بندی برای رسیدگی به هر ترکیب، یک :builder] شی ارائه می دهد روش گام به گام برای تنظیم هر جزء نهایی (FLT:0 روش جمع آوری شده از این فرایند جدا سازی مجدد.
نام فیلم: سفارش پیتزا سفارشی
به الگوی سازنده فکر کنید مانند سفارش پیتزا سفارشی، پوسته، سس، پنیر و تکه تکه تکه کردن یک در یک زمان. سازنده پیتزا ( سرآشپز) می داند که چگونه این مواد را به یک پیتزا نهایی متصل کنید. سازنده مشابه می تواند یک مارگارتا، هاوایی یا یک کیک عاشق گوشت تولید کند.
چرا خط لوله های داده نیاز به طراحی قابل اعتماد دارند
خطوط لوله داده به ندرت استاتیک هستند.یک خط لوله که فایل های CSV را از یک سطل S3 می بلعد و آنها را به یک انبار داده بارگذاری می کند ممکن است به سرعت نیاز به پشتیبانی از JSON، منابع جریان یا مراحل غنی سازی اضافی داشته باشد بدون اینکه یک طراحی قابل تنظیم داشته باشد، اضافه کردن چنین تغییرات اغلب به معنی کپی و اصلاح بخش های بزرگ کد است - دستورالعملی برای تکرار و خطا.
- سیستم های منبع حمل و نقل: [FLT 1] تغییر از فایل های دسته ای به جریان رویداد یا اتصال دهنده های پایگاه داده تغییر.
- تغییر در تحول: [FLT 1] اضافه کردن پاک سازی داده ها، مهندسی ویژگی، و یا پیوستن به جداول مرجع جدید.
- ] مقاصد چند گانه: نوشتن نتایج به چندین فروشگاه داده (به عنوان مثال، BigQuery، Snowflake و داشبورد زمان واقعی) برای همان خط لوله.
- تست و انواع مرحله بندی: [FLT 1] اجرای منطق یکسان در برابر توسعه و داده های تولید بدون تغییرات کد.
الگوی سازنده به طور مستقیم به این نیازها با اجازه دادن به مهندسان (FLT:0) خط لوله های ریخته شده را به طور واضحی - تعریف آنچه که اجزای شامل و چگونه آنها متصل هستند، در حالی که منطق مونتاژ زیر زمینی بدون تغییر باقی مانده است.
اجزای اصلی یک خط لوله داده قابل اعتماد
برای استفاده از الگوی سازنده، یک خط لوله داده باید به بلوک های ساختمانی گسسته و یکپارچه تقسیم شود.
منابع داده
هر خط لوله با یک یا چند منبع شروع می شود: سیستم های فایل، پایگاه های جریان (Kafka)، API ها یا دریاچه های داده، هر منبع دارای پیکربندی خود (path، اعتبار، طرح، فاصله نظرسنجی) است.یک سازنده می تواند روش هایی مانند (FLT 1)، ، یا [FLT3] را ارائه دهد.
مراحل تحول
تغییرات دستکاری یا غنی سازی داده ها شامل ردیف های فیلترینگ، تجزیه و تحلیل JSON، معیارهای جمع آوری و پیوستن به مجموعه داده ها است.
دانلود بازی کامپیوتر The Data Sinks
سینکها جایی هستند که داده های پردازش شده: پایگاه های داده های ارتباطی، ذخیره سازی ابری، صف پیام یا موتورهای تحلیلی می توانند از چندین سینک با و پشتیبانی کنند و حتی اجازه می دهند زنجیره ای برای ارسال داده های مشابه به چندین مقصد.
کانکتورها و کاربردهای خاورمیانه
فراتر از منابع و سینک ها، خطوط لوله اغلب به کنترل خطا، محدودیت های نرخ، اعتبار سنجی های طرح و نظارت بر قلاب ها نیاز دارند.این نگرانی های متقابل به راحتی به عنوان گام های سازنده مانند یا [FLT 10 ] اضافه می شوند.
پیاده سازی الگوی سازنده برای خطوط لوله
این پیاده سازی معمولی شامل یک کلاس سازنده (FLT:0) است که گزینه های پیکربندی و یک روش (FLT:2) ساخت ( را جمع آوری می کند و یک شی خط لوله کاملا ساخته شده را تأیید و برگشت می دهد. سازنده روش های روانگردان بازگشت به خود را برای زنجیره سازی زنجیره ای.
class PipelineBuilder:
def __init__(self):
self._source = None
self._transformations = []
self._sinks = []
self._retry_policy = None
def with_source(self, source):
self._source = source
return self
def add_transform(self, transform):
self._transformations.append(transform)
return self
def add_sink(self, sink):
self._sinks.append(sink)
return self
def with_retry(self, retry_policy):
self._retry_policy = retry_policy
return self
def build(self):
if not self._source or not self._sinks:
raise ValueError("Source and at least one sink are required")
return Pipeline(self._source, self._transformations, self._sinks, self._retry_policy)
با استفاده از سازنده، ایجاد خط لوله تبدیل به تخریب می شود:
pipeline = (PipelineBuilder()
.with_source(S3CsvSource(bucket="data-landing", prefix="orders/"))
.add_transform(FilterTransform(condition="status == 'active'"))
.add_transform(AggregateTransform(group_by="customer_id", metrics=["sum(amount)"]))
.add_sink(DatabaseSink(connection="prod_db", table="customer_orders"))
.add_sink(ParquetSink(path="s3://analytics/orders/"))
.with_retry(RetryPolicy(max_attempts=3, backoff_seconds=5))
.build())
این رویکرد پیکربندی را متمرکز می کند، و استفاده از همان سازنده با پارامترهای مختلف برای محیط های تولید و تولید را آسان می کند.
کاربرد واقعی جهانی: ساخت یک خط لوله ETL انعطاف پذیر
یک شرکت تجارت الکترونیک را در نظر بگیرید که نیاز به مصرف داده های سفارش روزانه از مناطق مختلف دارد، تمیز و استاندارد سازی آن، محاسبه درآمد روزانه توسط دسته، و بارگذاری نتایج به هر دو یک پایگاه داده گزارش و یک دریاچه داده با استفاده از الگوی سازنده، آنها یک قابل استفاده مجدد ایجاد می کنند (FLT:0OrderETLBuilder[F:1].
- پیکربندی منبع اصلاح: هر سفارش منطقه از پایگاه های مختلف (gpostreSQL، MySQL) آمده است، اما به فرمت CSV مشترک صادر می شود.
- علاوه بر تحولات استاندارد: پاک سازی داده ها ( شناسه های سفارش جعلی، کد ارز معتبر) و غنی سازی (همراه با کاتالوگ محصول برای دریافت دسته بندی) این ها از طریق و اضافه شده است.
- [در این باره] [و] [[[[۱]]] [[۱۰]]] [[۳]]] [[۳]]] [[۳]]] [۱] [۱] [۱۰] [۱] [۳] [۱] [۳] [۱] [۱] [۳] [۱] [۱] [۳] [۳] [۱] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳]
- [در این باره] به چند نقطه تقسیم بندی شده است: [[۱] [۱۰] [۱] [۱۰] [۱] [۱] [۱۰] و [۳] [۳] [۳] [۱] [۱۰]
- ساخت و اجرا: همان سازنده می تواند برای اولین بار ساخت یک خط لوله که فقط منطقه اتحادیه اروپا برای آزمایش، سپس مبادله به تمام مناطق برای تولید.
این الگو به طور چشمگیری باعث کاهش تکثیر کد می شود: این شرکت در حال حاضر یک کلاس سازنده را به جای چندین اسکریپت تبلیغاتی در هر منطقه یا محیط زیست حفظ می کند.
مزایای Recap
- تغییر رفتار خط لوله بدون لمس منطق اعدام نیاز به اضافه کردن یک تحول جدید؟ فقط با گام جدید تماس بگیرید.
- قابلیت نگهداری: تعاریف خط لوله مانند یک دستورالعمل سطح بالا خوانده می شود.هر پیکربندی جزء جدا شده است، ساخت اشکال زدایی و بررسی کد ساده است.
- قابلیت استفاده: سازندگان می توانند به عنوان کتابخانه بسته بندی شوند. تیم ها از همان سازنده در سراسر پروژه ها استفاده می کنند، تنها پارامترهای ورودی را تنظیم می کنند.
- قابلیت های: اضافه کردن یک نوع اجزای جدید (به عنوان مثال، یک سینک جریان) تنها نیاز به گسترش سازنده، نه بازنویسی کل خط لوله.
- آزمون پذیری: سازندگان می توانند خطوط لوله آزمایش را با منابع و سینک های مسخره ایجاد کنند، و تست های واحد مجزا را برای منطق مونتاژ خط لوله فعال کنند.
بهترین روش ها برای استفاده از الگوی سازنده در مهندسی داده
تنظیمات Pure Builder را نگه دارید
این کار تنها باید به صورت کامل و معتبر انجام شود و به صورت واقعی انجام شود و به صورت مستقیم به صورت مستقیم به صورت زیر عمل کند.
اعتبارسنجی زود، شکست سریع
در روش ، بررسی کنید که تمام اجزای مورد نیاز وجود دارند و تنظیمات سازگار هستند (به عنوان مثال، مراحل تحول به ستون های منبع موجود مرجع) خطای توصیفی را پرتاب می کنند تا کاربران دقیقا بدانند چه چیزی از دست رفته است.
استفاده از Immutable Builds
پس از آنکه نامیده می شود، سازنده ممکن است مجدداً تنظیم شود یا دوباره استفاده شود تا یک خط لوله دیگر را با تنظیمات مختلف ایجاد کند.
ارائه پیش بینی های احتمالی
برای اجزای اختیاری مانند سیاست های تکراری یا ورود، پیش فرض های معقولی را در سازنده سازنده تنظیم کنید، این به حداقل می رسد دیگ بخار در حالی که هنوز اجازه می دهد تا باطل شود.
دانلود بازی Your Builder در کنار خط لوله های خود
همانطور که زیرساخت داده های شما تکامل می یابد، API سازنده نیز منتشر خواهد شد. Tag Construct در کنترل نسخه، بنابراین تعاریف خط لوله می تواند به یک نسخه خاص سازنده پی ببرد، جلوگیری از شکستن تغییرات از تبلیغ به طور غیر منتظره.
استفاده از منابع خارجی برای قطعات پیچیده
برای اجزای بسیاری از جزئیات داخلی (به عنوان مثال، پیکربندی جلسه اسپارک یا یک UDF سفارشی)، آنها را به عنوان اشیاء پیش ساخته شده به جای ساخت آنها در داخل سازنده خط لوله، در نظر بگیرید. بازسازی الگوی سازنده.Guru. یک پایه عالی برای درک این جدایی فراهم می کند.
نتیجه گیری
الگوی سازنده به تیم های مهندسی داده یک راه عملی برای ایجاد خط لوله ای می دهد که هم قدرتمند و هم سازگار هستند.با جدا کردن آنچه (configuration) از how (اجرا)، کاهش بدهی فنی و سرعت پاسخ به تغییر نیازهای کسب و کار به عنوان ابزار یادگیری دقیق و پیچیده در جریان های ذخیره سازی واقعی - بدون حفظ سیستم ذخیره سازی چند وقت، و سیستم ذخیره سازی سیستم عامل باقی می ماند.
هنگام طراحی خط لوله داده بعدی، اتخاذ رویکرد سازنده را در نظر بگیرید (ممکن است در ابتدا یک لایه اضافی از انتزاع را احساس کنید، اما دستاوردهای بلند مدت در انعطاف پذیری و قابلیت نگهداری به مراتب بیشتر از هزینه پیش رو است.برای مطالعه بیشتر در الگوهای طراحی در مهندسی داده ها، مارتین مارتین فالوور سیستم های توزیع شده [FLT 1] دیدگاه گسترده تری در مورد ساختار داده ها ارائه می دهد.