How PayPal Uses Real-time Graph Database and Graph Analysis to Fight Fraud

Bài tóm tắt PayPal 2021 3. Quy mô lớn Độ khó: Trung bình

PayPal · 2021 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Bài nói mô hình dữ liệu đồ thị trong ví dụ không phải mô hình production; phần embedding đồ thị chỉ tóm tắt ngắn.

Bối cảnh

  • 2021: hơn 400 triệu người dùng và merchant đang hoạt động, vài nghìn giao dịch thanh toán mỗi giây. Quan hệ giữa tài khoản (cùng IP, cùng thiết bị, cùng hộ gia đình, trả tiền cho nhau) là tín hiệu rủi ro mạnh, nhưng theo PayPal quá lớn để duyệt bằng database quan hệ.
  • Kẻ gian lặp lại tấn công rất nhanh sau khi bị chặn, nên liên kết tài khoản mới với tài khoản xấu đã biết phải xong trong vài giây kể từ khi quan hệ xuất hiện.

Thay đổi chính

  • Ba tầng nền tảng đồ thị theo yêu cầu latency: real-time (dưới một giây, trả feature cho luật rủi ro hoặc embedding cho model, dùng chặn gian lận online); interactive (vài giây đến vài phút, có trực quan hoá, cho back office và điều tra rửa tiền); analytics (thuật toán đồ thị, tạo feature/embedding, train graph ML).
  • Build thay vì buy: đánh giá nhiều vendor và dự án mã nguồn mở graph, không cái nào đạt yêu cầu về scale và hiệu năng query, nên tự xây graph database real-time. Yêu cầu: API query tuỳ biến, latency dưới giây, độ tươi dữ liệu tính bằng giây, scale ngang có chịu lỗi, khoảng một triệu QPS, backfill linh hoạt từ offline lên online, đáp ứng yêu cầu bảo mật và riêng tư.
  • Đường ghi hai kênh gói trong một service xử lý dữ liệu đồ thị: kênh offline nạp snapshot ban đầu, delta hằng ngày/tuần, và nạp lịch sử khi thêm loại đỉnh/cạnh/thuộc tính mới (cũng là đường khôi phục khi có thảm hoạ); kênh event tiêu thụ các message nghiệp vụ (đăng nhập, giao dịch...) để tạo đỉnh, cạnh mới trong vài giây.
  • Đường đọc: Gremlin (Apache TinkerPop) làm ngôn ngữ query chung; đội viết lại tầng lưu trữ của Gremlin trên Aerospike cùng các tối ưu song song, batch, cache. Query 2 bước nhảy trung bình khoảng 10 ms; query service bọc Gremlin thành API dạng template cho các microservice quyết định rủi ro, SLA 100 ms.
  • Graph viewer chạy Gremlin trên web, được agent, analyst, data scientist dùng rộng rãi. Mirror graph sinh lân cận nhiều bước nhảy song song để tính embedding đồ thị.
  • Theo PayPal (2021), gần như mọi model rủi ro đều dùng feature từ đồ thị.

Vì sao

  • Cùng dữ liệu quan hệ phục vụ ba nhu cầu latency khác nhau; tách tầng thay vì ép một hệ phục vụ cả quyết định real-time lẫn phân tích.
  • Tự viết storage backend cho một ngôn ngữ query chuẩn giữ được hệ sinh thái Gremlin mà vẫn đạt latency trên một kho key-value đã vận hành sẵn.

Bài học cho SWE

  • Dữ liệu dạng đồ thị đọc theo bước nhảy có latency khó đạt trên DB quan hệ; nhưng "graph database" ở đây là lớp query đồ thị trên một kho KV nhanh, không phải một engine mới hoàn toàn.
  • Hệ cần cả độ tươi tính bằng giây lẫn đổi schema thì cần hai đường nạp: event cho dữ liệu mới, batch cho backfill và khôi phục.
  • Bài không nêu số node, dung lượng đồ thị hay chi phí so với phương án mua.

Liên quan