Tóm tắt: Chỉ mục tìm kiếm là bản dữ liệu phục vụ đọc nhanh. Nó phải có thể được dựng lại từ nguồn dữ liệu chuẩn.
Thuật ngữ chính: Index: cấu trúc dữ liệu dành cho tìm kiếm; relevance: mức độ phù hợp của kết quả; reindex: tạo lại toàn bộ chỉ mục.
Bài toán
Cập nhật chỉ mục ngay trong luồng ghi làm người dùng phải chờ và vẫn có thể mất thay đổi khi lỗi. Dùng chung chỉ mục cũng có nguy cơ lộ dữ liệu giữa khách hàng. Khi cấu trúc thay đổi, hệ thống cần tạo chỉ mục mới mà không dừng tìm kiếm.
Vì sao cách làm đơn giản chưa đủ
Search engine đánh đổi transactional consistency để lấy khả năng truy xuất chuyên biệt. Sản phẩm phải quy định kết quả được lag bao lâu và operation nào fallback về cơ sở dữ liệu.
khách hàng filter phải được trusted truy vấn wrapper tự thêm, không để caller tùy chọn.
Luồng xử lý
thay đổi chuẩn→Outbox hoặc CDC
indexing sự kiện bền vững→Indexer
transform có phiên bản→Search chỉ mục
đọc model theo khách hàng
Quyết định kiến trúc
Document có phiên bản
cơ sở dữ liệu sequence hoặc aggregate phiên bản ngăn sự kiện trễ ghi đè trạng thái mới.
Tách schema khỏi alias
Tạo không thể thay đổi chỉ mục phiên bản và để stable đọc alias trỏ vào phiên bản active.
Đo relevance offline và online
Dùng labelled truy vấn cho precision/recall rồi xác nhận click hoặc kết quả thành công, không tối ưu engagement mù quáng.
Phân tích chuyên sâu
Deletion là luồng hạng nhất
Privacy deletion phải xóa primary data, chỉ mục, cache và backup theo chính sách kèm evidence bền vững.
Rebuild năng lực xử lý là resilience
Nếu không thể rebuild toàn chỉ mục trong recovery objective, hệ derived đang phụ thuộc chưa kiểm thử vào trạng thái hiện tại.
Các bước triển khai
- Bắt thay đổi đã commit qua outbox hoặc CDC.
- chỉ mục với document phiên bản và khách hàng identity do server quản lý.
- Build chỉ mục mới, kiểm chứng rồi chuyển alias atomically.
Ví dụ kỹ thuật: Reindex bằng alias
create index products_v3(mapping_v3)
bulk index snapshot with sourceVersion
consume changes after snapshot watermark
compare counts, samples and query set
atomic alias products_read: v2 -> v3Giữ chỉ mục cũ trong rollback window hữu hạn và tiếp tục feed cả hai tới khi cutover đáng tin.
Các tình huống lỗi cần tính trước
- Update đến trễ làm dữ liệu đã xóa xuất hiện lại.
- Thiếu khách hàng filter trả document của khách hàng khác.
- Reindex làm quá tải nguồn cơ sở dữ liệu.
Tín hiệu cần giám sát
| Tín hiệu | Ý nghĩa |
|---|---|
| Indexing lag theo sự kiện type | Đo freshness và rủi ro deletion. |
| Số stale phiên bản bị từ chối | Cho biết out-of-order đã được chặn. |
| Tỷ lệ zero-result và search thành công | Theo dõi relevance từ kết quả người dùng. |
Cách kiểm chứng thiết kế
- Delay và reorder chỉ mục sự kiện quanh update và delete.
- Chạy negative truy vấn chéo khách hàng ở search client layer thấp nhất.
- Reindex volume gần môi trường thật trong khi ghi tiếp tục.
Kế hoạch triển khai an toàn
Thêm durable sự kiện và phiên bản check vào chỉ mục hiện tại trước. Build mapping kế tiếp song song, so truy vấn corpus đại diện rồi chuyển cohort khách hàng nhỏ qua routing alias trước global cutover.
Checklist trước khi đưa vào vận hành
- Search không trở thành nguồn dữ liệu chuẩn cho transaction.
- Delete và privacy sự kiện có propagation objective được đo.
- Relevance change được đánh giá bằng truy vấn set cố định và business metric.
Kết luận
Search đáng tin cậy kết hợp data luồng rebuild được, freshness rõ ràng và relevance đo được.
