Tôi có khoảng 4 triệu hồ sơ mỗi ngày và phải giữ giá trị trực tuyến 7 năm, vì vậy chúng tôi đang xem xét 10,2 tỷ hồ sơ mà tôi cần để có thể tìm kiếm thông qua. Người dùng đang mong đợi rằng tìm kiếm sẽ đủ nhanh cho giao diện người dùng, kết quả sau 3-5 giây
Do chính trị nằm ngoài tầm kiểm soát của tôi, tôi không thể sử dụng giải pháp cơ sở dữ liệu ngoài kệ vì điều đó có nghĩa là tôi sẽ phải cung cấp cơ sở dữ liệu cho nhóm khác để quản lý (không hỏi) có nghĩa là tôi mất khả năng tối ưu hóa phần cứng và phần mềm vì họ có dịch vụ một kích cỡ phù hợp cho tất cả các cơ sở dữ liệu và tính phí (nội bộ) theo GB. Tôi chắc chắn rằng tôi sẽ nhận được ý kiến đề nghị tôi đưa ra quan điểm, tôi đã có và quản lý hiểu những gì họ đang yêu cầu tôi làm là vô lý.
Tôi đã xem việc sử dụng Lucene là mấu chốt của giải pháp của mình. Lưu trữ dữ liệu thực tế được phân vùng theo loại và theo ngày trong các tệp phẳng. Sau đó, sử dụng tài liệu Lucene để lập chỉ mục một số trường được tìm kiếm theo, với trường "Được lưu trữ" duy nhất là id của bản ghi (để tôi có thể đọc nó từ tệp phẳng)
Tôi không chính xác bám vào Lucene hoặc ổ cứng, nhưng theo sự hiểu biết của tôi, sẽ có IO / thời gian tìm kiếm ban đầu để tìm kiếm chỉ mục, sau đó khi tôi có tất cả ID tài liệu Lucene, tôi đọc các tài liệu sẽ phát sinh thêm IO / tìm kiếm thời gian, sau đó tôi đọc bản ghi thực tế từ căn hộ ... Tôi không thể tưởng tượng được, với kích thước của tập dữ liệu, rằng điều này sẽ rất nhanh, điều mà tôi hơi lo lắng?
Lucene có kích thước tài liệu tối đa là 2,1 tỷ mỗi chỉ mục, vì vậy tôi sẽ yêu cầu nhiều chỉ số ở đây.
Liệu cách tiếp cận này, trên mặt của nó, trông giống như nó có thể làm việc?
Dữ liệu tôi đang lưu trữ là dữ liệu hành động sự kiện. Hầu hết các truy vấn sẽ được nhóm theo id sự kiện và nhận chi tiết hành động sự kiện cuối cùng cho một sự kiện cụ thể. Một số truy vấn sẽ phân tích các sự kiện tập hợp lớn và các hành động sự kiện riêng lẻ của chúng.