2009-06-04 29 views
9

Tôi đang cố gắng xác định các phương pháp có thể lưu trữ 100 kênh dữ liệu dấu chấm động 25 Hz. Điều này sẽ dẫn đến 78.840.000.000 điểm dữ liệu mỗi năm.Làm thế nào để lưu trữ nhiều năm giá trị 100 x 25 Hz chuỗi thời gian - Sql Server hoặc cơ sở dữ liệu thời gian

Lý tưởng nhất là tất cả dữ liệu này sẽ có hiệu quả cho các trang web và công cụ như dịch vụ báo cáo Sql Server. Chúng tôi biết rằng cơ sở dữ liệu quan hệ là người nghèo trong việc xử lý chuỗi thời gian của quy mô này nhưng vẫn chưa xác định được cơ sở dữ liệu cụ thể theo chuỗi thời gian thuyết phục.

Các sự cố chính là nén để lưu trữ hiệu quả mà còn cung cấp các truy vấn, báo cáo và khai thác dữ liệu dễ dàng và hiệu quả.

  • Bạn xử lý dữ liệu này như thế nào?

  • Có các tính năng hoặc thiết kế bảng trong Sql Server có thể xử lý số lượng dữ liệu chuỗi thời gian như vậy không?

  • Nếu không, có bất kỳ tiện ích mở rộng của bên thứ ba nào cho máy chủ Sql để xử lý hiệu quả chuỗi thời gian khổng lồ không?

  • Nếu không, có cơ sở dữ liệu chuỗi thời gian chuyên xử lý dữ liệu đó chưa cung cấp quyền truy cập tự nhiên thông qua dịch vụ Sql, .Net và Sql Reporting không?

cảm ơn!

+0

Điểm dữ liệu lớn bao nhiêu? – cgp

+0

Kiểu dữ liệu của mẫu là gì? Tỷ lệ mẫu/cấp dữ liệu có được cố định hoặc thay đổi không? Bạn có cần lưu trữ thời gian mẫu hoặc có thể suy ra được không? Và loại dữ liệu nào đang được lấy mẫu? – RBarryYoung

+0

Giả sử điểm nổi 32 bit. Có thể có một số tối ưu hóa nhưng nó sẽ là hoàn hảo nếu chúng ta không phải xử lý mà nhức đầu. – Duncan

Trả lời

1

Tôi sẽ phân đoạn bảng theo ngày, để chia dữ liệu thành các bit nhỏ gồm 216,000,000 mỗi hàng.

Miễn là bạn không cần số liệu thống kê cả năm, điều này có thể dễ dàng phục vụ theo chỉ mục.

Giả sử truy vấn như "cho tôi mức trung bình trong một giờ nhất định" sẽ là một giây.

+0

Cảm ơn câu trả lời. Sử dụng phân vùng máy chủ sql hoặc chỉ nhiều bảng? Nếu có nhiều bảng, có bất kỳ mẫu thiết kế nào để dễ dàng xử lý truy vấn trên các bảng không? – Duncan

+0

@Duncan: Phân vùng SQL Server sẽ là tốt nhất, nhưng tôi không biết có bao nhiêu phân vùng cho phép.Với nhiều bảng, bạn có thể chạy một bộ lập lịch để tạo lại các khung nhìn như SELECT * FROM table_20090609 UNION ALL SELECT * FROM table_20090608 vv Đừng quên đưa một cột phân vùng vào các bảng. – Quassnoi

1

Tôi cho rằng bạn cần quyền truy cập ngẫu nhiên vào chuỗi dữ liệu. Ý tưởng mà tôi đã sử dụng cho bảng dữ liệu lượng mưa, là chia nhỏ toàn bộ tập dữ liệu trong phần nhỏ hơn, để tạo mục nhập cho mỗi vài phút hoặc thậm chí một phút. Sau đó, bạn có thể bật này, vẫn còn lớn, mảng từ db và truy cập trực tiếp đến phần cần thiết, bạn có thể tìm thấy một mối tương quan trực tiếp giữa bù đắp thời gian và bù đắp byte.

+0

Cảm ơn câu trả lời. Sử dụng một blob cho mảng lớn? Có cách tiếp cận thiết kế nào để làm cho blob dễ truy vấn được không, ví dụ: lượt xem? – Duncan

1

Bộ tính năng bạn mô tả là dành cho Cube phân tích. Kiểm tra các dịch vụ Phân tích từ Microsoft nếu bạn đang ở trong một phần của thế giới công nghệ:

http://msdn.microsoft.com/en-us/library/ms175609(SQL.90).aspx

Theo như mô hình bạn đang mô tả, bạn cần phải thực hiện một mô hình Kimball (các dữ liệu chuẩn mô hình kho lưu trữ) với thứ nguyên Thời gian. Tôi đã gặp sự cố này khi lưu trữ tệp nhật ký phương tiện trong khi quay lại.

Chúc may mắn.

+0

Cảm ơn câu trả lời. Khó biết nơi bắt đầu với kho dữ liệu. Tôi đã googled và đọc xung quanh liên kết của bạn nhưng sẽ được hưởng lợi từ một cái gì đó giống như một dự án mẫu mà giải quyết một vấn đề tương tự. Bạn có biết bất cứ điều gì như thế này? – Duncan

+0

Bạn nói đúng là kho dữ liệu rất khó để bắt đầu. Quá trình tốt nhất tôi có thể đề nghị là (và ghi nhớ rằng tôi đang nói Microsoft Visual Studio và Sql Server 2005/2008 ở đây) để tải xuống kho mẫu của AdventureWorks db: http://www.microsoft.com/ Tải xuống/chi tiết.aspx? FamilyId = E719ECF7-9F46-4312-AF89-6AD8702E4E6E & displaylang = vi và sau đó kiểm tra một số bàn tay trong phòng thí nghiệm cho Sql Server: http://www.microsoft.com/sqlserver/2008 /en/us/virtual-labs.aspx Cuối cùng, tôi khuyên bạn nên sử dụng cuốn sách của Kimball để bắt đầu: http://www.ralphkimball.com/html/booksDWT2.html Chúc bạn may mắn! –

0

Bạn có

A. 365 x 24 x 100 = 876.000 giờ tín hiệu (tất cả các kênh) mỗi năm

B.mỗi tín hiệu bao gồm 3600 * 25 = 90.000 datapoints

Làm thế nào về nếu bạn lưu trữ dữ liệu như một hàng cho mỗi tín hiệu, với các cột cho tóm tắt/stats truy vấn đối với trường hợp sử dụng hiện nay được hỗ trợ, và một blob của tín hiệu nén cho những người tương lai?

+0

Cảm ơn câu trả lời. Tôi có thể không hoàn toàn hiểu được gợi ý. Là gợi ý cho mỗi hàng để thích (signalId, timeperiod, float ave, phao min, float max, blob raw)? Có bất kỳ ví dụ nào về việc làm cho dữ liệu blob dễ truy vấn được không, ví dụ: lượt xem? – Duncan

+0

Điều gì đó dọc theo những dòng đó, nhưng tôi không chắc chắn về việc làm cho dữ liệu blob có thể truy vấn được .. Suy nghĩ của tôi là giới hạn truy vấn vào các cột thống kê bổ sung nếu cần. – bubaker

1

Bạn có thể xem Cộng đồng Infobright hoặc Enterprise Edition, tôi nghĩ vậy. Đó là lưu trữ theo định hướng cột được thiết kế cho mục đích phân tích và lớn (hiện có cài đặt lên đến 30 TB ngay bây giờ khi họ nói) dữ liệu và tỷ lệ nén tốt.

Trình tải dữ liệu cũng khá nhanh và các trình kết nối tồn tại đối với các công cụ ETL (Talend, kettle và vv).

Ấn bản cộng đồng có sẵn miễn phí theo điều khoản GNU GPL, nhưng chỉ cho phép thêm dữ liệu qua trình tải gốc. Phiên bản Enterprise hỗ trợ thêm/cập nhật theo hàng đơn qua DML.

Một lợi ích khác mà bạn có thể sử dụng nó với tất cả các công cụ hỗ trợ kết nối MySQL.

Hướng cột cho phép bạn, thêm cột cho thành phần ngày trên mọi cấp độ tổng hợp cần thiết (tôi sử dụng ngày, số tuần, tháng và qtr.) Để có hiệu suất tốt hơn, nhưng cũng tốt nếu không có nó.

Tôi sử dụng dữ liệu giao dịch kinh doanh với số lượng tương đối nhỏ với mục đích phân tích với R là công cụ phân tích dữ liệu qua giao diện mysql và tập lệnh python (numpy) như một loại ETL.

Nhược điểm: thiếu hỗ trợ utf-8 chính thức, tổng hợp theo giá trị hàm (chọn tháng (ngày từ ...)) chưa được triển khai (kế hoạch: tháng 7 năm 2009, AFAIK), nhưng tôi sử dụng ETL cho việc này.

Link: http://www.infobright.org/Download/ICE/

+0

Cảm ơn - Tôi sẽ xem xét. – Duncan

+0

xin vui lòng chia sẻ kinh nghiệm của bạn sau khi khám phá ICE :) Tôi đang nghiên cứu kiến ​​trúc của ứng dụng phân tích/báo cáo nhỏ của chúng tôi với R, Infobright và Django là người xem báo cáo và quan tâm đến những suy nghĩ mới về lưu trữ/đại diện dữ liệu lớn :) – zzr

0

Bạn đã được coi là một cơ sở dữ liệu chuỗi thời gian, giống như http://opentsdb.net?

0

Bạn đã xem xét HBASE hoặc Mở TSDB. Bạn cũng có thể xem Cassandra

0

Nếu đó là dữ liệu điểm động, TSDB sẽ cung cấp cho bạn hiệu suất tốt hơn nhiều. Thuật toán nén Timeseries khác nhau do đó bạn nhận được lưu trữ và tỷ lệ truy vấn tốt hơn.

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