Bỏ qua đến nội dung chính
Backend1 năm trước11 phut doc7.2k luot xem

Thiết kế database cho marketplace như thế nào?

Phân tích schema thực tế cho freelance marketplace — escrow, reviews, dispute resolution và làm sao tránh bottleneck.

Tây Du Code

Tây Du Code

Developer

Khi thiết kế database cho marketplace, có 4 vấn đề kinh điển bạn phải giải quyết: payments, escrow, reviews và disputes.

**Payments**: Đừng tự xử lý card, hãy dùng Stripe/VNPay/MoMo. Database chỉ lưu transaction_id và status. Dùng webhook để cập nhật trạng thái — tuyệt đối không trust client.

**Escrow**: Tách bảng escrow_account riêng, dùng double-entry bookkeeping (debit/credit). Mọi transaction phải atomic và traceable. Dùng database transaction + idempotency key.

**Reviews**: Lưu cả rating numeric và comment text. Tính avg rating bằng materialized view nếu volume lớn. Cẩn thận với fake review — yêu cầu phải có purchase mới review được.

**Disputes**: Thiết kế state machine rõ ràng — OPEN, INVESTIGATING, RESOLVED, CLOSED. Lưu mọi event vào audit log để truy vết được.

**Performance tips**: Đánh index trên (seller_id, status), (buyer_id, created_at). Partition orders table theo tháng. Cache các counter (total_sales, total_reviews) thay vì COUNT() mỗi lần.

Bai viet lien quan