خط پردازش تکمیل اطلاعات هویتی و پاکسازی داده برای ۱۰۰ میلیون رکورد پراکنده مشتریان
۱۱ آبان ۱۴۰۴
۰۱. مسئله: پراکندگی داده در مقیاس ۹۴.۷ میلیون رکورد
سوپراپهای مالی و پلتفرمهای با تراکنش بالا ناگزیر میلیونها رکورد هویتی پراکنده و متناقض را از سیلوهای داده سنتی به ارث میبرند: آرشیو ثبتنام سیمکارت، دفاتر کل صورتحساب، پروفایلهای کیف پول و پایگاههای داده پذیرندگان. در محیط پروداکشن واقعی، سیستم با پایگاه دادهای شامل ۹۴.۷ میلیون رکورد مواجه بود که از فرسودگی ساختاری و ناهماهنگی شدید رنج میبرد:
- اسکیماهای غیر استاندارد: کدهای ملی ثبتنشده یا ناقص، فرمتهای متناقض تاریخ تولد (میلادی در برابر شمسی)، و ناهماهنگی کاراکترهای الفبای فارسی و عربی (مانند
یوک). - گلوگاههای همزمانی (Concurrency Bottlenecks): کوئریهای بلادرنگ در فرایند ثبتنام و تسویه که به علت فقدان ایندکس مناسب روی جداول رابطهای، فولتیبل اسکن (Full-Table Scan) انجام میدادند و در کمپینها و رویدادهای پرترافیک موجب قفل شدن کل جدول (Table Lock) و زنجیرهای از بنبستهای پایگاه داده (Deadlocks) میشدند.
- سربار هزینهای و زمانی استعلامهای دولتی (eKYC): ارسال مستقیم اطلاعات پالایشنشده یا ناقص به سامانههای حاکمیتی احراز هویت (شاهکار و سازمان ثبت احوال)، علاوه بر هزینه مالی هر تراکنش استعلام، موجب خطاهای مکرر تایماوت و کاهش شدید نرخ تبدیل کاربران در فرایند ثبتنام میشد.
۰۲. راهکار معماری: خط لوله چندمرحلهای دترمینستیک
برای پاکسازی، یکپارچهسازی و رفع ابهام از ۹۴.۷ میلیون پروفایل مشتری بدون افت نرخ پاسخدهی سوئیچ پرداخت، یک پایپلاین ترکیبی دو سطحی طراحی شد: موتور پردازش دستهای غیرهمگام (ETL) در کنار لایه کش کمتأخیر درونحافظهای.
۱. نرمالسازی املایی و بلوکبندی آوایی (Orthographic Normalization & Phonetic Blocking)
تمام دادههای ورودی نام و آدرس پیش از ورود به چرخه مقایسه، تحت عملیات پاکسازی دترمینستیک قرار میگیرند:
- نرمالسازی یونیکد کانونیکال: یکدستسازی تمام کاراکترهای عربی به کدهای یونیکد استاندارد فارسی (
U+06CCوU+06A9). - کدگذاری آوایی (Phonetic Encoding): پیادهسازی نسخه بومیسازیشده الگوریتم Double Metaphone برای آواهای زبان فارسی جهت دستهبندی خطاهای املایی و نگارشی در کلیدهای بلوکبندی مشخص.
۲. تطبیق احتمالاتی موجودیتها (Probabilistic Entity Resolution)
به جای اجرای مقایسههای بسیار سنگین مرتبه دوم $O(N^2)$، سیستم رکوردها را بر اساس کلیدهای ترکیبی (تاریخ تولد + کد آوایی نامخانوادگی + کد شهر) درون پارتیشنهای مشخص بلوکبندی میکند. درون هر بلوک، ماتریس وزنی شباهتهای Jaro-Winkler و Levenshtein روی ۴ بردار امتیاز نهایی را محاسبه میکند:
- نام کامل نرمالشده (وزن ۴۰٪)
- شماره همراه کاربر MSISDN (وزن ۳۰٪)
- هش کد ملی (وزن ۲۰٪)
- پیششماره کد پستی (وزن ۱۰٪)
جفتهای دارای امتیاز اطمینان $\ge 0.88$ به صورت خودکار در قالب پروفایل واحد جامع (Golden Master Record) یکپارچهسازی میشوند؛ جفتهای مبهم ($0.65 - 0.87$) برای بررسی غیرهمگام یا اعتبارسنجی تکمیلی از طریق پیامک رمز پویای یکبارمصرف (OTP) ارجاع داده میشوند.
[Raw Ingestion Feed]
│
▼
[Unicode Normalizer] ──► [Phonetic Blocking Engine]
│
▼
[Probabilistic Matcher (≥0.88)]
│
┌───────────────────────┴───────────────────────┐
▼ ▼
[Canonical Master Store] [Redis Read-Through Cache]
(ScyllaDB / PostgreSQL) (TTL: 7 Days · Sub-5ms Read)
۰۳. توپولوژی سرویسدهی پروداکشن و لایه کشینگ
پس از پالایش، سوابق پالایششده مشتریان در دیتابیس ScyllaDB ایندکسگذاری شده و رویدادهای تغییر با الگوی CDC به کلاستر Redis منتقل میشوند:
- استراتژی کلیدهای پارتیشن: کلیدگذاری با هش SHA-256 کد ملی استاندارد و شماره تلفن نرمالشده.
- سرویسدهی بدون قفل (Zero-Lock Serving): کش Read-Through که توان مدیریت بیش از ۵۰,۰۰۰ کوئری در ثانیه را با تأخیر صدک نود و نه (P99) زیر ۴.۲ میلیثانیه فراهم میکند.
- اعتبارسنجی پیش از استعلام (Pre-KYC Validation): در زمان ورود کاربر به جریان ثبتنام، سیستم ابتدا اطلاعات محلی کششده را بررسی کرده و ۹۲٪ از درخواستهای دارای ساختار نامعتبر را پیش از ارسال به وبسرویس شاهکار فیلتر میکند.
۰۴. دستاوردهای عملیاتی در پروداکشن
- حذف ۱۰۰ درصدی ددلاکهای دیتابیس: جداسازی کامل کوئریهای غنیسازی از پایگاههای داده تراکنشی سوئیچ پرداخت و پایان تداخل قفلها.
- دقت پیشبینی ۷۰ درصدی: حل تعارض و پیشتکمیل اطلاعات پروندههای ناقص پیش از ثبت نهایی بیومتریک.
- کاهش ۴۰ درصدی تأخیر در جریان ثبتنام: کاهش میانگین زمان احراز هویت اولیه کاربر از ۱۴.۲ ثانیه به ۱.۸ ثانیه.
- صرفهجویی مستقیم در هزینههای رگولاتوری: کاهش بیش از ۳۲ درصدی هزینههای ماهانه استعلام وبسرویسهای شاهکار و ثبتاحوال با جلوگیری از فراخوانیهای تکراری و نامعتبر.