Tôi đang làm việc trên một ứng dụng liên quan đến việc thực hiện cập nhật / chọn truy vấn trong cơ sở dữ liệu rất cao.
Tôi có một bảng cơ sở (A) sẽ có khoảng 500 bản ghi cho một thực thể trong một ngày. Và đối với mọi người dùng trong hệ thống, một biến thể của thực thể này được tạo dựa trên một số tùy chọn của người dùng và chúng được lưu trữ trong một bảng khác (B). Điều này được thực hiện bởi một công việc định kỳ chạy vào nửa đêm hàng ngày.
Vì vậy, nếu có 10.000 người dùng và 500 hồ sơ trong bảng A, sẽ có 5 triệu hồ sơ trong bảng B cho ngày hôm đó. Tôi luôn giữ dữ liệu trong một ngày trong các bảng này và vào nửa đêm, tôi lưu trữ dữ liệu lịch sử vào HBase. Thiết lập này đang hoạt động tốt và cho đến nay tôi không gặp vấn đề gì về hiệu năng.
Gần đây đã có một số thay đổi trong yêu cầu kinh doanh và bây giờ một số thuộc tính trong bảng cơ sở A (cho 15 - 20 bản ghi) sẽ thay đổi cứ sau 20 giây và dựa vào đó tôi phải tính toán lại một số giá trị cho tất cả các bản ghi biến thể trong bảng B cho tất cả người sử dụng. Mặc dù chỉ có 20 bản ghi chính thay đổi, tôi cần phải tính toán lại và cập nhật 200.000 bản ghi người dùng mất hơn 20 giây và sau đó bản cập nhật tiếp theo xảy ra cuối cùng dẫn đến tất cả các truy vấn Chọn được xếp hàng. Tôi nhận được khoảng 3 nhận yêu cầu / 5 giây từ người dùng trực tuyến, kết quả là 6-9 Chọn truy vấn. Để đáp ứng yêu cầu api, tôi luôn sử dụng các trường trong bảng B.
Tôi có thể mua thêm sức mạnh xử lý và giải quyết tình huống này nhưng tôi quan tâm đến việc có một hệ thống được thu nhỏ đúng cách có thể xử lý cả triệu người dùng.
Bất cứ ai ở đây có thể đề nghị một sự thay thế tốt hơn? Có nosql + cơ sở dữ liệu quan hệ giúp tôi ở đây? Có bất kỳ nền tảng / kho dữ liệu nào sẽ cho phép tôi cập nhật dữ liệu thường xuyên mà không bị khóa và đồng thời cho tôi sự linh hoạt khi chạy các truy vấn chọn trên các trường khác nhau trong một thực thể không?