نمای کلی
در گراب، تیم اعطای وام به ساخت محصولاتی که به تالیف چندین میکرو سرویس وام متمرکز شده است. هر میکرو سرویس مسئولیت های مختلفی را انجام می دهد، مانند ارائه پیشنهادات، ذخیره اطلاعات کاربر، پرداخت مبالغ به حساب کاربر و بسیاری دیگر.
در این وبلاگ فنی، ما درباره اطلاعات و لازم است برای پردازش چندین وظیفه در تیم وام دهی در گراب صحبت خواهیم کرد. همچنین در مورد رتچت، کتابخانه Go که به ما در ساخت لوله های اطلاعاتی و همچنین روند ETL کمک می کند، صحبت خواهیم کرد. بیایید با مبانی اطلاعات و لوله های ETL آشنا شویم.
چیستی لوله اطلاعات؟
لوله اطلاعات برای توصیف یک سیستم یا روند استفاده می شود که داده ها را از یک پلتفرم به پلتفرم دیگر منتقل می کند. در طول پلتفرم ها، داده ها از طریق چندین مرحله به مبنای نیازهای تعریف شده عبور می کند که ممکن است مورد تغییر قرار گیرد. تمام مراحل لوله اطلاعات به صورت خودکار انجام می شوند و خروجی هر مرحله به عنوان ورودی مرحله بعدی عمل می کند.
چیستی لوله ETL؟
لوله ETL نوعی لوله اطلاعات است که شامل 3 مرحله اصلی است، به نام استخراج اطلاعات از منبع، تبدیل این داده ها به فرمت مورد نظر و در نهایت بارگیری داده های تبدیل شده به مقصد است. مقصد نیز به عنوان نشانی می شناخته می شود.
ترکیب مراحل لوله ETL، توابع را جهت اطمینان از اینکه نیازهای تجاری برنامه برآورده شده است.
بیایید به اختصار به هر یک از مراحل مربوط به لوله ETL نگاهی بیندازیم.
استخراج داده
استخراج داده برای برداشت داده ها از یک یا چند منبع استفاده می شود. منبع داده ممکن است بسته به نیاز متغیر باشد. برخی از منابع داده معمول استفاده شده عبارت اند از:
- پایگاه دادهذخیره سازی مبتنی بر وب (S3، Google cloud و غیره)فایلهاFeeds کاربر، CRM و غیره.
فرمت داده نیز می تواند بسته به مورد کار به شکلی متغیر باشد. برخی از فرمت های معمول داده عبارت اند از:
- SQLCSVJSONXML
با استخراج داده به فرمت مورد نیاز، آماده برای تغییر شکل مرحله بعدی می شود.
تغییر شکل داده
تغییر شکل داده شامل اعمال مجموعه قوانین و تکنیک هایی به منظور تبدیل داده های استخراج شده به یک فرمت معنادارتر و ساختار یافته تر برای استفاده می شود. داده های استخراج شده همیشه آماده استفاده نیستند. برای تغییر شکل داده، می توان از یکی از تکنیک های زیر استفاده کرد:
- حذف داده های غیر ضروری.پیش پردازش و تمیز کردن داده ها.اعتبارسنجی داده ها.تولید مجموعه جدیدی از داده ها از داده های موجود.تجمیع داده ها از چند منبع به یک فرمت یکنواخت.
بارگیری داده
مرحله نهایی لوله ETL شامل انتقال داده های تغییر شکل یافته به یک مقصد است که در آن می توان به آن دسترسی داشته باشد. بر اساس نیازها، یک مقصد می تواند یکی از موارد زیر باشد:
- پایگاه دادهفایلذخیره سازی مبتنی بر وب (S3، Google cloud و غیره)
یک لوله ETL ممکن است یا نیازمند مرحله بارگیری باشد یا نباشد. وقتی داده های تغییر شکل یافته برای استفاده بیشتر نیاز به ذخیره شدن دارند، از مرحله بارگیری برای انتقال داده های تغییر شکل یافته به انتخاب ذخیره سازی استفاده می شود. با این حال، در برخی از موارد، داده های تغییر شکل یافته برای استفاده بیشتر نیاز نیست و بنابراین مرحله بارگیری قابل نادیده گرفتن است.
اکنون که اصول را درک کرده ایم، بریم بررسی کنیم که چگونه ما در تیم اعطای وام گراب از لوله ETL استفاده می کنیم.
چرا از رتچت استفاده می کنیم؟
در گراب، بیشتر سرویس های زمینه پشتیبانی ما از Golang استفاده می کنند. به دلیل سادگی، سرعت اجرا و پشتیبانی از همروندی Golang، انتخاب عالی برای ساخت سیستم های لوله اطلاعاتی برای انجام وظایف دلخواه ETL است.
با توجه به اینکه رتچت همچنین با Golang نوشته شده است، این امکان را به ما می دهد که به راحتی لوله های داده سفارشی را ایجاد کنیم.
کانال های Go در هر مرحله پردازش به هم پیوسته اند، بنابراین دستورات ارسال داده برای هر کسی که با Go آشنا است به طور شفاف است. تمام داده های ارسالی و دریافتی به صورت JSON است، که تعادل خوبی از انعطاف پذیری و سازگاری فراهم می کند.
استفاده از رتچت برای وظایف ETL
ما از رتچت برای چندین وظیفه ETL مانند پردازش دسته ای، بازسازی و برنامه ریزی مجدد وام ها، ایجاد پروفایل های کاربر و غیره استفاده می کنیم. یکی از سرویس های زمینه پشتیبانی به نام Azkaban به مدیریت چندین وظیفه ETL مسئول است.
رتچت از پردازنده های اطلاعات برای ساختن یک لوله اطلاعاتی که شامل چندین مرحله استفاده می شود. هر پردازنده اطلاعات به صورت همروند اجرا می شود، بنابراین تمام داده ها به صورت همزمان پردازش می شوند. پردازنده های اطلاعات به مراحل تقسیم شده اند و این مراحل در یک لوله اجرا می شوند. برای ساخت یک لوله ETL، هر یک از سه مرحله (استخراج، تغییر شکل و بارگیری) از یک پردازنده اطلاعات استفاده می کند. رتچت یک مجموعه از پردازنده های اطلاعات مفید داخلی را ارائه می دهد، در عین حال امکان پیاده سازی پردازنده اطلاعات سفارشی را نیز فراهم می کند. به طور معمول، مرحله تغییر شکل از پردازنده اطلاعات سفارشی استفاده می کند.
بیایید به یکی از این وظایف نگاهی بیندازیم تا بفهمیم چگونه از رتچت برای پردازش یک وظیفه ETL استفاده می کنیم.
سفیدنامه فروشندگان از طریق لوله های ETL
سفیدنامه در اصل به معنای عرضه محصول به کاربر با نقشه برداری پیشنهاد به شناسه کاربر است. اگر یک بازرگان در تایلند گزینه دریافت وام نقدی را دریافت کند، این کار با سفیدنامه بازرگان انجام می شود. برای سفیدنامه کردن بازرگانان ما، تیم عملیات از یک پورتال داخلی برای بارگذاری یک فایل CSV با شناسه های کاربران بازرگان و اطلاعات مورد نیاز دیگر استفاده می کند. این فایل CSV توسط تیم داده و ریسک داخلی ما تولید می شود و به تیم عملیات تحویل داده می شود. هنگامی که فایل CSV بارگذاری می شود، شناسه های کاربر حاضر در فایل سفیدنامه می شوند.
استخراج داده
پس از بارگذاری تیم عملیات فایل CSV شامل لیست کاربران بازرگان برای سفیدنامه، فایل در S3 ذخیره می شود و یک ورودی در سرویس Azkaban با شناسه سند فایل بارگذاری شده ایجاد می شود.
مرحله استخراج داده از یک پردازنده اطلاعات خاص CSV استفاده می کند که از شناسه سند برای ابتدا ایجاد یک آدرس URL قبل از امضا می کند و سپس از آن برای دریافت داده از S3 استفاده می کند. داده استخراج شده به شکل بایت است و ما از کاما به عنوان جدا کننده برای فرمت داده CSV استفاده می کنیم.
تغییر شکل داده
برای تغییر شکل داده، یک پردازنده اطلاعات سفارشی تعریف می کنیم که به آن تغییردهنده می گوییم برای هر لوله ETL. تغییردهنده ها مسئول اعمال تمام تغییرات لازم بر روی داده قبل از آن که برای بارگیری آماده شود. تغییراتی که در تغییردهنده های سفیدنامه بازرگان اعمال می شوند عبارتند از:
- تبدیل داده ها از بایت به ساختار.بررسی وجود تمامی فیلدهای الزامی در داده های دریافتی.اعتبارسنجی بر روی داده های دریافتی.تماس با میکروسرویس های خارجی برای سفیدنامه بازرگان.
همانطور که قبلاً گفته شد، فایل CSV به صورت دستی توسط تیم عملیات بارگذاری می شود. از آنجا که این یک فرایند دستی است، به خطاهای انسانی عرضه است. اعتبارسنجی داده در مرحله تغییر شکل، کمک می کند تا این خطاها را جلوگیری کرده و به بالاتر از لوله تکرار نشان دهد. از آنجا که داده های CSV شامل چندین ردیف است، هر ردیف از تمام مراحل فوق عبور می کند.
بارگیری داده
هرگاه بازرگانان سفیدنامه شوند، ما نیازی به ذخیره داده های تغییر شکل یافته نداریم. به عبارتی دیگر، ما برای این وظیفه ETL مرحله بارگیری را نداریم، بنابراین ما فقط از یک پردازنده اطلاعات خالی استفاده می کنیم. با این حال، این فقط یکی از موارد کاربردی است که ما داریم. در مواردی که نیاز به ذخیره داده های تغییر شکل یافته برای استفاده بیشتر وجود دارد، مرحله بارگیری شامل یک پردازنده اطلاعات سفارشی خواهد بود که مسئول ذخیره سازی داده ها است.
اتصال تمامی مراحل
پس از تعریف پردازنده های اطلاعات برای هر یک از مراحل لوله ETL، قطعه نهایی اتصال تمامی مراحل با یکدیگر است. همانطور که قبلاً گفته شد، وظایف ETL لوله های مختلف ای دارند و هر لوله ETL شامل 3 مرحله است که توسط پردازنده های اطلاعات آنها تعریف شده است.
برای اتصال این 3 مرحله، برای هر لوله ETL یک پردازنده کاری تعریف می کنیم. یک پردازنده کاری نماینده کل لوله ETL است و شامل پردازنده های اطلاعات برای هر یک از 3 مرحله است. هر پردازنده کاری شامل روش های زیر است:
- تعیین منبع: پردازنده داده برای مرحله استخراج را تعیین می کند.تعیین پردازنده داده برای مرحله تغییر شکل را تعیین می کند.