Simplifying Data and Product Integrations with a Data Abstraction Layer
Bài tóm tắt Uber 2026 3. Quy mô lớn Độ khó: Trung bình
Uber · 2026 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Query dữ liệu thường gắn chặt với cấu trúc và vị trí của dataset ("dùng bảng v2, trước 2025 thì dùng v1, metric đổi tên giữa hai bản"), nên đổi mô hình dữ liệu chậm và khó. Báo cáo cho nhà quảng cáo của Uber Ads là ca điển hình: dữ liệu gần thời gian thực lẫn lịch sử, nhiều kho khác nhau, người dùng tự chọn khoảng thời gian, chiều phân tách, metric; trước đó dựng một báo cáo mới mất vài tuần tới vài tháng.
Thay đổi chính
- DAL (Data Abstraction Layer) là một service RPC đứng giữa consumer (frontend báo cáo) và producer dữ liệu. Endpoint
FetchDatanhận tên bảng, schema mong muốn, khoảng thời gian, filter: consumer nói cái gì, DAL lo lấy thế nào. - Bảng logic khai báo hình dạng dữ liệu (dimension, metric) mà không nói ở đâu; mỗi metric có danh sách bảng vật lý ứng viên; cấu hình khai báo vị trí và quan hệ.
- Table resolution qua các pha: loại ứng viên không có đủ mọi dimension hoặc không có metric nào được yêu cầu; loại ứng viên mà cửa sổ sẵn có (độ tươi, thời gian giữ) không giao với khoảng yêu cầu; với mỗi metric dựng ánh xạ khoảng thời gian → bảng, chỗ chồng lấn thì chọn bảng có cardinality gần yêu cầu nhất. Ví dụ: 3 ngày gần nhất từ bảng realtime, 4 ngày trước đó từ bảng daily. Đồ thị phụ thuộc giữa bảng vật lý có thể nhiều tầng, qua nhiều công nghệ DB.
- Sinh và chạy query theo từng loại DB (OLAP nội bộ, Docstore, Hive...), trộn được nhiều loại trong một request.
- Ghép kết quả: nối các dataset liền nhau theo thời gian, join dataset bổ sung nhau theo dimension, rollup khi cần, biến đổi vô hướng (cột ảo, chuẩn hoá, join tham chiếu).
- Kết quả, theo Uber: báo cáo mới từ nhiều tuần còn dưới hai ngày; làm được report builder dạng pivot và API cho bên thứ ba; DAL đã mở rộng ra ngoài Ads. Hướng tiếp: thêm connector DB, request bất đồng bộ cho dữ liệu lớn, decorator làm điểm mở rộng có kiểm soát.
Vì sao
- Mượn cách lập trình: một lớp trừu tượng giấu chi tiết hiện thực sau interface đơn giản thì consumer và producer giảm phụ thuộc, producer đổi mô hình dữ liệu mà không làm vỡ consumer.
Bài học cho SWE
- Tách interface của dữ liệu (bảng logic) khỏi nơi lưu (bảng vật lý) để producer tiến hoá được mô hình.
- Ghi metadata về độ tươi và thời gian giữ của từng bảng thì máy tự chọn được bảng nào cho khoảng nào.
- Lớp trừu tượng gom logic "lấy ở đâu" vào một chỗ, thay vì rải trong mỗi báo cáo.
Liên quan
- Pipeline dữ liệu và analytics
- Cùng công ty: Uber 2026 · Uber 2026
- Cùng bài toán: Airbnb 2026 (metadata engine cho loại metric)
#Data abstraction layer#logical table#physical table#table resolution#availability window#realtime vs daily tables#query generation#OLAP#Docstore#Hive#result assembly#advertiser reporting
Được nhắc tới trong
Chủ đề (1)
Công ty (1)
Bài tóm tắt (1)