دادهلند برای رفع دو چالش ارسال مجدد دادههای تکراری و دریافت دادهها با تاخیر زمانی، دو مکانیسم یکتاسازی (Idempotency) و مدیریت دادههای دیررس (Late Data) را به کار میگیرد.
این مکانیسم از ایجاد ردیفهای تکراری در ارسال دوباره رکوردها جلوگیری میکند و در جداول با درج با ورژن فعال است:
dl_id و update_time عمل میکند؛ در صورت یکسانی هر دو مقدار، ردیف قبلی بازنویسی میشود و با تغییر update_time ردیف جدیدی درج میگردد.update_time، یکتاسازی صرفاً با ستون dl_id انجام میشود و رکوردهای با شناسه تکراری بازنویسی میگردند.dl_id و ارسال هر تغییر با مقدار جدید ستون update_time، تاریخچه کامل تغییرات در دادهلند ثبت میگردد.در سیستمهای توزیعشده ممکن است دادهها به دلیل تاخیر شبکه با ترتیب زمانی نادرست دریافت شوند (نظیر ثبت وضعیت «تحویل» پیش از «پرداخت» یک سفارش). برای جلوگیری از بازنویسی دادههای جدید با دادههای قدیمی، در جداول با درج با آپدیت (شامل وقایع، وصف و استیجینگ)، تصمیمگیری بر مبنای کلید اصلی (Primary Key) و ستون update_time انجام میپذیرد:
update_time رکورد ورودی بزرگتر یا مساوی با مقدار موجود در جدول باشد، عملیات آپدیت انجام میپذیرد.update_time توسط سامانه مبدأ وابسته است.رفتار سیستم در مواجهه با دادههای تکراری و دیررس به شرح زیر است:
| مکانیسم | نوع درج | ستونهای مبنا | رفتار سیستم |
|---|---|---|---|
| یکتاسازی | درج با ورژن (وقایع، وصف، استیجینگ) | dl_id و update_time | در صورت یکسانی هر دو مقدار، ردیف بازنویسی میشود و با تغییر update_time ردیف جدید درج میگردد. |
| یکتاسازی | درج با ورژن (جدول آزاد) | dl_id | در صورت تکراری بودن شناسه، ردیف قبلی بازنویسی میشود. |
| مدیریت دادههای دیررس | درج با آپدیت (وقایع، وصف، استیجینگ) | کلید اصلی و update_time | با بزرگتر یا مساوی بودن زمان رکورد، عملیات آپدیت انجام میگیرد و رکوردهای قدیمیتر Drop میشوند. |