Cấu trúc dữ liệu của tôi là như sau:
date: <timestamp>
filter_a: <integer> -> range [0, 1000]
filter_b: <integer> -> range [0, 1000]
filter_c: <integer> -> range [0, 86400]
filter_d: <integer> -> range [0, 6]
group: <string>
second_group: <integer>
variable_a: <float>
variable_b: <float>
variable_c: <float>
a couple more no very important
Tôi cần thực hiện các truy vấn sau:
Đầu tiên:
- Lọc dữ liệu bằng
date
,filter_a
,filter_b
,filter_c
và những người khác
Thứ hai, với dữ liệu được lọc:
- đếm tất cả hồ sơ
- lấy trung bình của
variable_a
,variable_b
vàvariable_c
- có độ lệch chuẩn của
variable_a
,variable_b
vàvariable_c
- nhận phần tư của
variable_a
,variable_b
vàvariable_c
- dữ liệu nhóm theo
group
hoặcsecond_group
và tổng hợp (Đếm, Trung bình, Std, ..)
Số lượng người dùng của hệ thống là khoảng 10 hoặc 15, nhưng số lượng mặt hàng rất lớn, hiện tại là 70 triệu nhưng sẽ là 500 triệu trong vài tuần và sẽ là 1000 triệu trong khoảng một năm.
Số lượng truy vấn ít, không quá 10 người dùng đồng thời, vấn đề của tôi là làm thế nào để xử lý các truy vấn đó với lượng dữ liệu khổng lồ này.
Tôi đã thử những gì cho đến nay?
Tôi đã bắt đầu với
mongodb
, lúc đầu thì nhanh nhưng nó trở nên chậm khi tính các tứ phân với 10M +. Nó được cải thiện khi tôi thêm chỉ mục nhưng nó không giúp ích gì nhiều khi tôi phải truy vấn tất cả dữ liệu. Tôi bắt đầu sử dụng mongodb vì dữ liệu rất năng động nhưng may mắn là định dạng dữ liệu "sẽ không thay đổi nữa".Như
filter_a
vàfilter_b
có thể được nhìn thấy như các nút, tôi đã thửneo4j
. Tôi rất thích nó neo4j rất nhiều nhưng đồ thị của tôi có RẤT NHIỀU cạnh nên các truy vấn không nhanh lắm.Cuối cùng, vì định dạng dữ liệu sẽ không thay đổi và nó chỉ là một bộ sưu tập / bảng nên không cần tham gia trong SQL, tôi đã kiểm tra postgresql. Các thử nghiệm của tôi đã nhanh hơn với postgresql, nhưng tôi sợ nó không thể mở rộng đúng quy mô trong tương lai.
Tôi cần những gì?
- Postgresql là một lựa chọn tốt cho trường hợp này?
- Có một loại cơ sở dữ liệu nào tôi có thể sử dụng? cái nào là tốt nhất cho trường hợp này?
- Tôi có thể làm gì khác để cải thiện nó?
Biên tập
- Khoảng 1 triệu yếu tố được chèn mỗi ngày và "không nên thay đổi" theo thời gian.
- Tốc độ ghi không quan trọng
- Yêu cầu khó là đọc / tổng hợp nhanh
Cảm ơn!