فرآیند توزیع داده (Reverse ETL) سازوکار استخراج خودکار دادههای پالایششده از انبار داده بر پایه کوئریهای SQL یا تنظیمات اختصاصی یکپارچهسازی و ارسال زمانبندیشده آنها به سامانههای عملیاتی، CRMها، پنلهای پیامکی و وبهوکهای خارجی است. این قابلیت دادههای تحلیلی را به جریان عملیاتی کسبوکار بازمیگرداند.
مدیریت و اجرای فرآیندهای توزیع داده نیازمند دو سطح دسترسی مجزا در فضا است:
مدیریت فضا > مقصدهای مجاز انجام میپذیرد و منحصراً در اختیار مالک فضا و مدیر فضا است (اطلاعات محرمانه نظیر توکنها و پسوردها در لاگها و سیستم ماسک میشوند).
مدیریت کاربران است. این دسترسی امکان مشاهده سوابق و لاگهای ارسال را نیز شامل میشود.
مقاصد توزیع داده در دادهلند به دو گروه بنیادین تقسیم میگردند:
در تعریف مقاصد سفارشی در سطح فضا، مشخصات فنی زیر تعیین میشوند:
| عنوان تنظیم | نوع مقدار | توضیحات و رفتار سیستم |
|---|---|---|
| نام مقصد | متنی | نام نمایشی یکتا برای مقصد در سطح فضا است. |
| آدرس اندپوینت | متنی (URL) | نشانی اینترنتی مقصد منحصراً بر پایه پروتکل امن https:// است. |
| متد ارسال | انتخابی | متد ارسالی شامل POST، PUT یا PATCH است. |
| نوع اعتبارسنجی | انتخابی | شیوه احراز هویت شامل None، Bearer، Basic یا API Key با قابلیت استفاده از متغیرهای محرمانه (Secretها) است. |
| هدرهای سفارشی | کلید/مقدار | هدرهای دلخواه جهت ارسال همراه با درخواست HTTP تعریف میشوند. |
| نوع Payload | انتخابی | ساختار بدنه ارسالی شامل JSON Array، JSON Object، NDJSON یا Form است. |
| کلید Wrapper | متنی | در ساختار JSON Array کلید والد دادهها را مشخص میسازد (در صورت خالی بودن، به صورت آرایه مستقیم ارسال میشود). |
| فرمت ارسال آرایه | انتخابی | در فرمت Form شیوه ارسال آرایهها (براکت، تکرار کلید، کاما یا ایندکس) را تعیین میکند. |
| سایز Batch | عددی | تعداد رکوردهای ارسالی در هر درخواست (بین ۵۰ تا ۵,۰۰۰ رکورد) را مشخص مینماید (برای JSON Object مقدار آن روی عدد ۱ قفل است). |
تعریف فرآیند توزیع داده در ۴ گام پیوسته انجام میپذیرد:
پروژه والد فرآیند و نام نمایشی فرآیند در سطح فضا مشخص میگردد.
نحوه اجرا میان دو حالت تعیین میشود:
record_time در رکوردهای پردازششده تعیین میشود و هیچ وابستگی به مدت زمان اجرای فرآیند ندارد. کاربر میتواند این مقدار را با تقویم شمسی یا میلادی به دقت میلیثانیه تنظیم نماید.مقصد دریافت داده انتخاب میشود. دادههای ارسالی بر حسب نوع مقصد از دو روش مشخص میگردند: در مقاصد سفارشی از نگارش کوئری دستی SQL استفاده میشود و در مقاصد آماده (نظیر گوگل ادز و تلگرام) میتوان از فرمساز و تنظیمات اختصاصی یکپارچهسازی بهره برد. در صورت استفاده از کوئری SQL، رعایت انحصار به دستور SELECT و سقف زمان اجرای ۳۰ ثانیه برای تمامی کوئریها الزامی است.
در این گام ابزارهای کنترلی ارسال و یکتاسازی برای هر یک از ستونهای حاصل از کوئری یا تنظیمات یکپارچهسازی تعیین میگردند:
sent_data) قرار گیرند یا صرفاً در ستون omitted_data ثبت شوند.dedup_hash) جهت جلوگیری از ارسال تکراری قرار گیرند یا خیر.این الزامات در زمان نگارش کوئری دستی SQL یا بازبینی کوئری تولیدشده توسط فرمساز یکپارچهسازی اعمال میگردند و اعتبارسنجی آنها بر مبنای شیوه اجرا انجام میپذیرد:
| الزامات کوئری | حالت خودکار | حالت دستی | رفتار سیستم |
|---|---|---|---|
| انحصار به دستور SELECT | ✅ | ✅ | اجرای کوئریهای چندگانه و دستورات تغییر داده یا ساختار در پایگاهداده مسدود است. |
الزام حضور ستون record_time | ✅ | ❌ | در حالت خودکار جهت هدایت نشانگر واترمارک الزامی است. در حالت دستی نیازی به حضور این ستون نیست. |
ممنوعیت فیلتر روی record_time | ⛔ | 🟢 | در حالت خودکار شروط بازه زمانی توسط سیستم تزریق میشوند و اعمال فیلتر دستی در شرط WHERE ایجاد خطا میکند. در حالت دستی اعمال فیلتر زمانی مجاز است. |
دادهلند با پیادهسازی مکانیزم Idempotency در توزیع داده، مانع از ارسال رکوردهای تکراری به مقاصد خارجی میگردد:
۱. سیستم از مقادیر ستونهای دارای سوییچ فعال یکتاسازی، یک هش یکتا تولید مینماید.
۲. سوابق ارسالی در جدول dl_retl_deliveries در بازه زمانی تعیینشده بررسی شده و رکوردهای دارای هش تکراری حذف (Drop) میشوند.
۳. تنها رکوردهای تازه و متمایز به مقصد ارسال میگردند.
چنانچه تعداد رکوردهای خروجی بیش از اندازه مجاز Batch مقصد باشد، سیستم اطلاعات را به صورت خودکار در قالب چند دسته (Multi-Batch) مجزا ارسال مینماید تا بروز خطای موقت در یک بسته، به ارسال بستههای دیگر آسیب نزند.
سیستم مدیریت خطای توزیع داده بر مبنای ماهیت رخداد تصمیمگیری میکند:
تاریخچه و لاگهای فرآیند توزیع داده در دو جدول سیستمی ذخیره شده و در تمامی محیطهای کوئرینویسی قابل فراخوانی است:
dl_retl_runs): سوابق هر اجرا (شامل زمان، وضعیت موفقیت، تعداد ردیفها و دستههای ارسالی، واترمارک و خطای رخداده) را تا ۹۰ روز یا ۵۰۰ اجرای آخر نگهداری مینماید.dl_retl_deliveries): مشخصات تکتک رکوردهای ارسالشده به مقاصد خارجی (شامل هش یکتاسازی، دادههای ارسالی در sent_data و دادههای مستثنیشده در omitted_data) را تا ۶۰ روز ثبت میکند.dl_retl_deliveries قابلیت زنجیرهسازی فرآیندها (Process Chaining) را مهیا میسازد. به این معنا که میتوان ارسال در یک فرآیند را بر مبنای رکوردهای با موفقیت ارسالشده در فرآیند قبلی تنظیم نمود.