Tôi muốn để lưu trữ chuỗi thời gian trong một cơ sở dữ liệu MySQL. Tôi muốn làm điều đó trong một thời trang tuyến tính, có nghĩa là, mỗi hàng là viết tắt của một quan sát duy nhất (1 biện pháp, 1 trang web, 1 dấu thời gian). Hiện tại, nó sẽ yêu cầu 84 096 000
hàng và nó sẽ tăng khoảng 2 102 400
hàng mỗi năm.cơ sở dữ liệu lưu trữ Timeserie tuyến tính
gì biện pháp phòng ngừa phải được thực hiện để thiết kế đúng bảng chuỗi thời gian, chỉ số và truy vấn liên quan (thực chất là một lựa chọn các dữ liệu mà biện pháp, trang web và phạm vi thời gian được xác định).
Edit:
Thêm một đề nghị của thiết kế bảng:
CREATE TABLE TimeSeries(
Id INT NOT NULL AUTO_INCREMENT,
MeasureTimeStamp DATETIME NOT NULL,
MeasureId INT NOT NULL,
SiteId INT NOT NULL,
Measure FLOAT NOT NULL,
Quality INT NOT NULL,
PRIMARY KEY (Id),
CONSTRAINT UNIQUE (MeasureTimeStamp,MeasureId,SiteId),
FOREIGN KEY (MeasureId) REFERENCES Measure(Id),
FOREIGN KEY (SiteId) REFERENCES Site(Id)
);
CREATE INDEX ChannelIndex ON TimeSeries(MeasureId,SiteId);
Cung cấp Đo lường và bảng trang web tồn tại, những gì cần được cải thiện để cấu trúc này nếu truy vấn lớn của tôi là:
SELECT *
FROM TimeSeries
WHERE (MeasureId IN (?,?,?))
AND (SiteId IN (?,?,?))
AND (MeasureTimeStamp BETWEEN ? AND ?)
ORDER BY MeasureId ASC,
SiteId ASC,
MeasureTimeStamp ASC;
Chỉnh sửa 2:
Sites khoảng 20 và các biện pháp khoảng 50. Điều này dẫn đến tối đa 1000 kênh (cặp của trang web và biện pháp). Nó có thể tăng một chút trong vài thập kỷ nhưng nó sẽ không đạt được hơn 10000 kênh. Hầu hết các dữ liệu có độ thời gian khoảng 30 phút. Bất kỳ thời gian granulity không phải là không đổi, và sẽ không được nhỏ hơn một phút (một số dữ liệu được hàng ngày hoặc hàng tuần).
MySQL có thể dễ dàng xử lý. Bạn dự đoán những loại mệnh đề WHERE nào? Tối thiểu, chỉ mục cho "trang web". – mainstreetmark
'WHERE' khoản sẽ, ít nhất, chọn trên hai phím nước ngoài' site' và 'đo' sử dụng tiêu chí danh sách' IN' (tất cả các cột đó sẽ được lập chỉ mục) và 'dấu thời gian' bằng cách sử dụng' GIỮA '(được lập chỉ mục vì nó là một phần của khóa chính). – jlandercy
Sau đó, tôi đề xuất tạo chỉ mục với cả 'site' và' measure'. Hai cột đó sẽ làm giảm kết quả đủ hiệu quả. Nếu bạn thêm Dấu thời gian vào kết hợp, thì chỉ mục của bạn sẽ có nhiều hàng như bảng dữ liệu, và MySQL sẽ bỏ qua nó. – mainstreetmark