→ بازگشت به نقشه‌های معماری
SPEC ۰۵ · مشخصات فنی سامانه

خط پردازش تکمیل اطلاعات هویتی و پاک‌سازی داده برای ۱۰۰ میلیون رکورد پراکنده مشتریان

۱۱ آبان ۱۴۰۴

[ETL][Elasticsearch][PostgreSQL][Redis][Python][Apache Spark]

۰۱. مسئله: پراکندگی داده در مقیاس ۹۴.۷ میلیون رکورد

سوپراپ‌های مالی و پلتفرم‌های با تراکنش بالا ناگزیر میلیون‌ها رکورد هویتی پراکنده و متناقض را از سیلوهای داده سنتی به ارث می‌برند: آرشیو ثبت‌نام سیم‌کارت، دفاتر کل صورت‌حساب، پروفایل‌های کیف پول و پایگاه‌های داده پذیرندگان. در محیط پروداکشن واقعی، سیستم با پایگاه داده‌ای شامل ۹۴.۷ میلیون رکورد مواجه بود که از فرسودگی ساختاری و ناهماهنگی شدید رنج می‌برد:

  • اسکیماهای غیر استاندارد: کدهای ملی ثبت‌نشده یا ناقص، فرمت‌های متناقض تاریخ تولد (میلادی در برابر شمسی)، و ناهماهنگی کاراکترهای الفبای فارسی و عربی (مانند ی و ک).
  • گلوگاه‌های همزمانی (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): در زمان ورود کاربر به جریان ثبت‌نام، سیستم ابتدا اطلاعات محلی کش‌شده را بررسی کرده و ۹۲٪ از درخواست‌های دارای ساختار نامعتبر را پیش از ارسال به وب‌سرویس شاهکار فیلتر می‌کند.

۰۴. دستاوردهای عملیاتی در پروداکشن

  • حذف ۱۰۰ درصدی ددلاک‌های دیتابیس: جداسازی کامل کوئری‌های غنی‌سازی از پایگاه‌های داده تراکنشی سوئیچ پرداخت و پایان تداخل قفل‌ها.
  • دقت پیش‌بینی ۷۰ درصدی: حل تعارض و پیش‌تکمیل اطلاعات پرونده‌های ناقص پیش از ثبت نهایی بیومتریک.
  • کاهش ۴۰ درصدی تأخیر در جریان ثبت‌نام: کاهش میانگین زمان احراز هویت اولیه کاربر از ۱۴.۲ ثانیه به ۱.۸ ثانیه.
  • صرفه‌جویی مستقیم در هزینه‌های رگولاتوری: کاهش بیش از ۳۲ درصدی هزینه‌های ماهانه استعلام وب‌سرویس‌های شاهکار و ثبت‌احوال با جلوگیری از فراخوانی‌های تکراری و نامعتبر.