2010-07-20 29 views
6

Tôi có một hệ thống ghi lại một số giá trị được đo mỗi giây. Cách tốt nhất để lưu trữ dữ liệu xu hướng là giá trị tương ứng với một giây cụ thể?Thịnh hành 100 triệu + hàng

1 day = 86.400 seconds 
1 month = 2.592.000 seconds 

Khoảng 1000 giá trị để theo dõi từng giây.

Hiện tại có 50 bảng nhóm dữ liệu xu hướng cho 20 cột mỗi cột. Các bảng này chứa hơn 100 triệu hàng.

TREND_TIME datetime (clustered_index) 
    TREND_DATA1 real 
    TREND_DATA2 real 
    ... 
    TREND_DATA20 real 
+1

Dữ liệu xu hướng có được đọc hoặc cập nhật nhiều không? –

+0

Bạn nên chỉ định RDBMS - đây là một câu hỏi về việc thực hiện cơ sở dữ liệu vật lý không phải là thiết kế hợp lý, RDBMS không quan trọng ở đây. – Unreason

+0

Nó sẽ được đọc rất nhiều để hiển thị nhiều loại đồ họa. – kerem

Trả lời

2

Tôi sẽ thay đổi phương pháp lưu dữ liệu và thay vì lưu dữ liệu 'thô' làm giá trị tôi sẽ lưu 5-20 phút dữ liệu trong mảng (Bộ nhớ, BL bên), nén mảng đó bằng thuật toán dựa trên LZ và sau đó lưu trữ dữ liệu trong cơ sở dữ liệu dưới dạng dữ liệu nhị phân. Ngoài ra, nó sẽ được tốt đẹp để tiết kiệm Max/Min/Avg/etc .. thông tin cho rằng nhị phân đoạn.

Khi bạn muốn xử lý dữ liệu, bạn có thể xử lý dữ liệu đoạn sau đoạn và bằng cách giữ cấu hình bộ nhớ thấp cho ứng dụng của bạn. cách tiếp cận này phức tạp hơn một chút nhưng rất có khả năng mở rộng về bộ nhớ/xử lý.

hy vọng điều này sẽ hữu ích.

+0

Cách tiếp cận này không thể mở rộng Tôi nghĩ vì khi tôi muốn xem một tháng dữ liệu, tôi phải giải nén rất nhiều. – kerem

+0

Tôi biết ý bạn là gì. Để giải quyết vấn đề này, nếu có thể, hãy tạo một bản tóm tắt dữ liệu đã nén mà bạn có hơn một tháng/năm và lưu trữ bản tóm tắt đó trong cơ sở dữ liệu. Bạn có lẽ sẽ cần phải lưu trữ các bản tóm tắt khác nhau đại diện cho các hoạt động khác nhau được thực hiện trên dữ liệu cơ bản nhưng bạn sẽ có được tốc độ rực rỡ. – Gilad

0

Có phải vấn đề lược đồ cơ sở dữ liệu không?

1 giây đối với nhiều xu hướng rõ ràng trước tiên hiển thị cho bạn một bảng riêng biệt có khóa ngoài thứ hai bảng. Ngoài ra, nếu "nhiều giá trị xu hướng" được đại diện bởi các cột chứ không phải các hàng, bạn luôn có thể nối thêm các cột vào bảng giây và phải chịu các giá trị null.

Bạn đã thử điều đó chưa? Hiệu suất kém?

3

Bạn đã xem RRDTool - nó cung cấp cơ sở dữ liệu vòng tròn hoặc bộ đệm tròn, cho dữ liệu chuỗi thời gian. Bạn có thể lưu trữ dữ liệu ở bất kỳ khoảng thời gian nào bạn muốn, sau đó xác định các điểm hợp nhất và chức năng hợp nhất, ví dụ (tổng, phút, tối đa, trung bình) trong một khoảng thời gian nhất định, 1 giây, 5 giây, 2 ngày, v.v. các điểm hợp nhất mà bạn muốn, nó không cần lưu trữ tất cả các điểm dữ liệu khi chúng đã được tổng hợp.

GangliaCacti sử dụng điều này dưới bìa và nó khá dễ sử dụng từ nhiều ngôn ngữ.

Nếu bạn cần tất cả các điểm dữ liệu, hãy xem xét sử dụng nó chỉ cho tập hợp.

+0

Tôi chắc chắn ủng hộ cách tiếp cận này, tôi sử dụng Ganglia để theo dõi nhiều chuỗi dữ liệu trong nhiều năm và nó hoạt động tuyệt vời! –

+0

Cảm ơn, ganglia và xương rồng dường như rất hữu ích. Nhưng tôi không thể tìm thấy một thư viện C# cho RRDTool. – kerem

Các vấn đề liên quan