تشخیص تقلب کارت در ۲۷ میلیثانیه روی دیتابریکس
خلاصهٔ کاملتر
تو بلاگ دیتابریکس یه اپ نمونه به اسم retail-app معرفی شده که همون نیمثانیهٔ بعد از کشیدن کارت رو بازسازی میکنه: بکاند FastAPI، فرانت React، دیپلویشده بهعنوان Databricks App. جریان کار سادهست — اول مدل تراکنش رو امتیاز میده، بعد اپ قوانین پروفایل کاربر رو چک میکنه، و هر کدوم از این دو میتونن تراکنش رو رد کنن.
پای دو قابلیت پلتفرم وسطه. اولی route optimization روی Model Serving هست که مسیر شبکه بین اپلیکیشن و کانتینر مدل رو کوتاه میکنه. برای کارهای دستهای چند میلیثانیه اضافه اهمیتی نداره، ولی برای تجربهٔ چکاوت همهچیزه. این مسیر از جریان data-plane با OAuth استفاده میکنه، نه توکن دسترسی شخصی.
دومی Lakebase هست، یه Postgres مدیریتشده که فیچرهای تاریخی مشتری — میانگین مبلغ تراکنش، نسبت تراکنشهای برونمرزی، نرخ چارجبک و سرعت خرج در ۲۴ ساعت گذشته — رو نگه میداره. جالب اینه که یه جدول، دو خواننده داره: کانتینر مدل برای استنتاج فیچر میخونه و اپ FastAPI پروفایل کاربر رو برای قوانین کسبوکار.
نویسنده تأکید میکنه استنتاج سریع بهتنهایی کافی نیست. هر تراکنش حداقل دو بار به Lakebase وصل میشه و باز کردن کانکشن تازه یعنی هندشیک TCP بهعلاوهٔ مذاکرهٔ TLS، که راحت ۲۰ تا ۵۰ میلیثانیه سربار اضافه میکنه. برای همین یه ThreadedConnectionPool با ۳ تا ۱۰ کانکشن نگه داشته میشه و هر عملیات دیتابیس الگوی «قرض بگیر، کوئری بزن، تو بلوک finally برگردون» رو دنبال میکنه.
یه ظرافت دیگه هم هست: Lakebase با OAuth احراز هویت میشه — client id نقش نام کاربری Postgres رو داره و توکن نقش رمز — پس هیچ رمز دیتابیس بلندمدتی وجود نداره. اما وقتی توکن منقضی بشه، کانکشنهای داخل پول دیگه کار نمیکنن. راهحل اپ اینه که تغییر توکن رو تشخیص بده و پول تازه بسازه، با قفل دوبار-بررسی تا دو ترد همزمان پول رو بازنسازی نکنن و یه تایمر ۳۰ ثانیهای تا کوئریهای در جریان فرصت تموم شدن داشته باشن.
نتیجهٔ بنچمارک هم روشنه: ۵٬۰۰۰ درخواست ترتیبی به اندپوینت بهینهشده فرستادن و کل رفتوبرگشت در میانه ۲۷.۲ و در p95 برابر ۳۷.۳ میلیثانیه بوده، با ۱۰۰٪ موفقیت. خوندن فیچر از Lakebase در میانه ۸.۹ و در p95 برابر ۱۳.۹ میلیثانیه، و خودِ پیشبینی CatBoost فقط ۰.۴ میلیثانیه — یعنی زمان مدل رو عملاً جستوجوی فیچر میخوره، نه استنتاج. حدود ۱۷ میلیثانیه هم سربار شبکه و زیرساخت سرویسدهیه.
جمعبندی نویسنده اینه که کارهای بلادرنگ زیر ۵۰ میلیثانیه — امتیازدهی تقلب، شخصیسازی، قیمتگذاری پویا — رو میشه بهصورت بومی روی دیتابریکس ساخت، و اگه قبلاً به این نتیجه رسیده بودین که معماری لِیکهاوس به تأخیر سطح چکاوت نمیرسه، این اعداد ارزش یه نگاه دوباره رو دارن. سورس کامل روی گیتهاب هست و میشه تو ورکاسپیس خودتون دیپلویش کنین.
نکات کلیدی:
- اپ نمونه: FastAPI + React روی Databricks Apps، مدل CatBoost روی Model Serving، فیچرها روی Lakebase Postgres
- route optimization مسیر شبکه رو کوتاه میکنه و از جریان data-plane با OAuth استفاده میکنه
- بنچمارک ۵٬۰۰۰ درخواستی: ۲۷.۲ میلیثانیه در میانه، ۳۷.۳ در p95، با ۱۰۰٪ موفقیت
- جستوجوی فیچر ۸.۹ میلیثانیه ولی خود استنتاج فقط ۰.۴ میلیثانیه — گلوگاه اون یکیه
- کانکشنپول و بازسازی پول موقع چرخش توکن OAuth به اندازهٔ سرعت مدل تعیینکنندهست
- قوانین پروفایل (سقف روزانه و تراکنش بینالمللی) میتونن تأیید مدل رو هم لغو کنن




