Tôi đang làm việc để chuyển một công cụ tìm kiếm từ cơ sở dữ liệu sql sang elasticsearch. Lý do chính để làm điều đó là có thể tính toán các khía cạnh dễ dàng.ElasticSearch biểu diễn mong đợi
Hiện tại chúng tôi có các khía cạnh trên sql bằng cách tạo các bảng precalc. Nó hoạt động tốt nhưng đó là một nỗi đau để duy trì và các khía cạnh được hỗ trợ chỉ trên một tập con của các dữ liệu.
Bây giờ nguyên mẫu ES đang hoạt động, tôi đang chuẩn hóa hai giải pháp và có vẻ như phiên bản ES hơi nhỏ hơn phiên bản sql về hiệu suất (về khả năng bảo trì tốt hơn nhiều).
Tôi đã sử dụng chính xác cấu hình máy giống nhau, nền tảng 64 bit, 32 hợp đồng ram, đĩa ssd và lõi tứ Intel Xeon ở 3ghz để so sánh sql và ES.
Tài liệu không nhỏ, có khoảng 200 trường, tùy thuộc vào yêu cầu, sắp xếp dựa trên tập lệnh được sử dụng và các khía cạnh luôn được tính toán trên 8 trường của tài liệu.
Chỉ mục chứa 3 triệu tài liệu, nếu tôi không nhầm là nó tương đối nhỏ so với những gì ES có thể xử lý.
Về truy vấn, tôi sử dụng truy vấn được lọc và một số yêu cầu, một truy vấn custom_filters_score để tính toán điểm số và sử dụng nó để sắp xếp.
Một số bộ lọc là toàn cầu vì các khía cạnh nhưng luôn có một số bộ lọc trong truy vấn đã lọc, do đó số lượng tài liệu được quét sẽ giảm (không phải tất cả chỉ mục được quét).
Tôi sử dụng hai biện pháp trong thử nghiệm của mình: thời gian dành cho máy chủ để thực hiện tìm kiếm và số truy vấn theo giây được thực thi bởi ứng dụng khách chạy 100 luồng song song.
Đối với elasticsearch, thời gian trung bình dành cho máy chủ là khoảng 500 ms cho mỗi truy vấn (cho 100 truy vấn song song) và truy vấn trung bình theo giây trên máy khách là khoảng 160 (một số ms bị mất khi tạo truy vấn , gửi, nhận kết quả và phân tích chúng). Và đây là chỉ số có 1 phân đoạn và 0 bản sao, khi tôi tăng số lượng phân đoạn/bản sao, hiệu suất giảm đáng kể.
Đối với sql, thời gian trung bình bỏ ra để thực hiện một truy vấn là khoảng 360 ms (idem, với 100 truy vấn chạy song song), và các truy vấn trung bình thứ hai trên máy khách là khoảng 200.
Tôi biết đó là khó so sánh, nhưng vì tôi không có bất kỳ ý tưởng nào về kết quả tôi có thể mong đợi, tôi tự hỏi liệu có ai đó có thể bình luận về các biện pháp này hay không.
Có lẽ tôi đã bỏ lỡ điều gì đó và nó phải là một thứ tự cường độ nhanh hơn, hoặc có thể đây là những kết quả điển hình cho các môi trường tương tự như tôi, tôi không biết.
Tôi có thể mong đợi gì trong trường hợp của mình? Bạn đã quan sát điều gì trong các trường hợp tương tự với ES? Ứng dụng có hỗ trợ yêu cầu đồng thời tốt không? Thời gian thực hiện truy vấn có nằm trong phạm vi 500 ms khi thực hiện 100 truy vấn cùng một lúc không? Có một số cách để cải thiện hiệu suất tìm kiếm không?
Bất kỳ thông tin hoặc nhận xét nào được hoan nghênh, đây là một phần quan trọng trong quyết định công nghiệp hóa nguyên mẫu hay không.
Cảm ơn bạn.
Xin chào, Không ai muốn nhận xét về điều này? –
Bạn có thể muốn thử làm cho nó ít ranty hơn một chút ... – fread2281