Refactoring Engineering Data Platforms for High Analytics

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

چرا بازسازی مسائل برای مهندسی Analytics

سیستم عامل های داده مهندسی به طور معمول خواندن سنسور زمان سری، log تجهیزات، خروجی شبیه سازی و جریان های IoT را اداره می کنند، زیرا این مجموعه داده ها رشد می کنند، کد ضعیف و طرح های داده منجر به پرسش های آهسته، تحولات شکننده و داشبورد های غیر قابل اعتماد می شوند.

انواع اصلی بازسازی در بستر داده

Refactoring

متغیرهای رنمینگ، استخراج توابع و ساده سازی منطق مشروط در اسکریپت های ETL باعث بهبود قابلیت خواندن و کاهش اشکالات می شود.به عنوان مثال، جایگزین یک روال استخراج ۵۰۰ خط پایتون با توابع مدولار و به خوبی نام گذاری شده، آن را برای مهندسان داده برای شناسایی تنگناهای عملکردی آسان تر می کند.

طرح Refactoring

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

Refactoring

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

مزایای کلیدی بازسازی سیستماتیک

  • عملکرد س: طرح های بهینه سازی شده و کد تمیز کننده زمان اجرای برای پرسش های تحلیلی پیچیده را کاهش می دهد.در یک شرکت مهندسی، نرمال کردن متاداده سنسور زمان از دقیقه به ثانیه.
  • قابلیت های: سیستم عامل های بازسازی شده حجم داده های بزرگتر را بدون هزینه های متناسب اداره می کنند، حذف Cartesian پیوستن و بهینه سازی پارتیشن بندی اجازه می دهد تا خوشه ها به طور موثر مقیاس کنند.
  • کیفیت داده: استاندارد سازی نام های زمینه، اجرای انواع، و حذف رکوردهای تکراری در طول بازسازی، دقت داشبوردها و مدل های یادگیری ماشین را بهبود می بخشد.
  • Developer بهره وری: تیم ها زمان کمتری را صرف رمزگشایی کد میراث و زمان بیشتری برای ساخت ویژگی های تجزیه و تحلیل جدید می کنند.
  • انعطاف پذیری: رابط های پاک کننده آن را آسان تر برای ادغام موتورهای تجزیه و تحلیل جدید، مانند حرکت از یک انبار SQL سنتی به یک فروشگاه ستوندار و یا اضافه کردن یک پردازنده جریان زمان واقعی است.

رویکردهای استراتژیک برای بازسازی

آشنایی با Data Lineage

قبل از بازسازی، سیستم فعلی را با استفاده از ابزارهای خط مشی داده (به عنوان مثال، OpenLineage، DataHub) نقشه برداری کنید که کدام جداول و تحولات بیشتر توسط تیم های تجزیه و تحلیل مورد استفاده قرار می گیرند. اولویت بندی تلاش هایی که بدهی فنی بالا و ارزش است.

تغییرات اساسی

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

تست خودکار

تست های واحد خودکار و تست های ادغام غیر قابل مذاکره هستند.استفاده از ابزارهایی مانند چارچوب تستDirectus یا ] برای تأیید این که تحولات نتایج مشابهی را پس از بازسازی داده های مهندسی تولید می کنند، در نظر بگیرید که نمونه های مربوط به داده های بازگشتی تاریخی را برای گرفتن داده های بازگشتی انجام می دهند.

مستند Intent

پیام های روشن و مستندات به روز رسانی را برای هر مرحله بازسازی بنویسید، زیرا بازسازی ساختار داخلی، یک تاریخ به خوبی مستند به مهندسان آینده (یا خود آینده) کمک می کند تا درک کنند که چرا تغییرات ایجاد شده است.از نظرات خط فقط برای منطق غیر محرمانه استفاده کنید؛ اجازه دهید کد هر کجا که ممکن است قصد خود را بیان کند.

الگوهای عملی برای پلتفرم های داده مهندسی

تبدیل منطق

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

معرفی لایه های متوسط

اضافه کردن لایه های مرحله بندی و یا پاک شده بین مصرف خام و مصرف، این یک بافر ایجاد می کند که تجزیه و تحلیل از تغییرات بالادستی طرح را محافظت می کند.در یک پلت فرم Directus-based، شما می توانید مجموعه هایی را ایجاد کنید که به عنوان جداول مرحله ای عمل می کنند، به مهندسان اجازه می دهد داده های خام را بدون تاثیر بر نقاط پایانی API موجود تبدیل کنند.

عادی سازی Metadata

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

اتخاذ خط لوله های Idempot

خط لوله های Refactor به طوری که اجرای آنها چندین بار نتیجه یکسانی را به دست می آورد.این برای اشکال زدایی و برای مقابله با داده های دیرباز ضروری است.استفاده از الگوهای متخصص، منطق تکراری و دستور ثابت برای اطمینان از قابلیت idempotency.در Directus، شما می توانید توانایی API برای استفاده از (FLT:0.ert اقلام [FLT برای پردازش مجدد تمیز]

مطالعه موردی: بازسازی یک خط لوله تعمیر و نگهداری پیش بینی کننده

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

بیش از سه ماه، تیم دوباره به صورت فزاینده ای به کار برد:

  • جدول را به یک جدول واقعی (هر رکورد = یک سنسور خواندن در یک نوار) و جداول بعد (حساس، ماشین آلات، مکان ها) تقسیم کنید.
  • عملکرد تحول ردیابی [FLT 1] برای پنجره به طور متوسط، تشخیص خارج از پنجره و تجزیه و تحلیل فرکانس، هر تابع در برابر جفت ورودی / خروجی شناخته شده تست شده است.
  • یک لایه مرحله ای را وارد کرد در Directus که داده های خام را قبل از تحول ذخیره می کرد، و بدون از دست دادن داده ها، پردازش مجدد را امکان پذیر می کرد.
  • [FLT: 1] با یک DAG از کارهای سبک وزن هماهنگ شده توسط Apache Airflow.

یافته ها: زمان جستجو به کمتر از 2 ثانیه کاهش یافت، شکست های خط لوله 70٪ کاهش یافت و دانشمندان داده می توانند بدون تاثیر بر تولید، به طور مستقل تغییرات جدید را آزمایش کنند. این شرکت بعدا یک ویژگی هشدار زمان واقعی را با استفاده از میز واقعیت تمیز اضافه کرد.

چالش های مشترک و چگونگی غلبه بر آنم

اتهام های فنی بدهی

تیم های مهندسی اغلب ویژگی های تجزیه و تحلیل جدید را بیش از تمیز کردن اولویت می دهند تا با این کار، 20 درصد از هر اسپرینت را برای بازسازی (یا “قانون پیشاهنگی” اختصاص دهند: کد تمیزتر از آنچه که پیدا کردید، پیوند دهید تا به طور مستقیم به KPI های عملکردی که ذینفعان در مورد آن اهمیت می دهند - مانند زمان بارگذاری داشبورد یا تازه سازی داده ها.

تست پیچیدگی

بازسازی بدون تست خطرناک است.شروع با اضافه کردن تست های سطح یکپارچه که قبل / بعد از نتایج برای نمونه نماینده از داده ها مقایسه می شود، استفاده از تست های فوری (به عنوان مثال، با انتظارات بزرگ) برای تحولات پیچیده.

مقاومت در برابر تیم های Analytics

دانشمندان و مهندسان داده ممکن است نگران باشند که بازسازی پرس و جوها یا داشبوردهای آنها را تجزیه و تحلیل کند.با استفاده از یادداشت های منتشر شده یا logs تغییر، تغییراتی را ارائه دهند که در آن نسخه های قدیمی و جدید با هم همزیستی می کنند.برای مثال، یک دیدگاه میراث یا نقطه پایانی API را برای دو هفته پس از یک طرح تغییر نگه دارید.

ادغام Refactoring با CI / CD

بازسازی موثرترین زمانی است که یکپارچه به ادغام مداوم و خط لوله تحویل. Run schema linting (به عنوان مثال، تست قرارداد dbt) در هر درخواست کشش است.استفاده از Directus برای برنامه ریزی به صورت برنامه ریزی تغییرات طرح در طول استقرار. Automate تست های رگرسیون که زمان جستجو و بعد از ادغام این باعث می شود یک توسعه ایمن، به جای یک بخش خطرناک پس از یک بخش.

منابع خارجی برای یادگیری عمیق تر

نتیجه گیری

بازسازی یک تمیز کردن یک بار نیست - یک عمل انضباطی است که سیستم عامل های داده مهندسی را سازگار و قابل اعتماد نگه می دارد.با بهبود سیستماتیک کد، طرح ها و خطوط لوله، تیم های تجزیه و تحلیل به دست آوردن سوالات سریع تر، داده های پاک کننده و آزادی نوآوری کوچک: انتخاب یک تنگنا، تغییرات برنامه ای، و اعتبار خودکار، در طول زمان، مزایای ترکیب برای یک پلت فرم مهندسی اطلاعات قدرتمند است.