2014-07-22 29 views
5

Tôi đang đánh giá một số cơ sở dữ liệu NoSQL khác nhau để lưu trữ dữ liệu JSON chuỗi thời gian. ElasticSearch đã rất thú vị do công cụ truy vấn, tôi chỉ không biết nó phù hợp như thế nào để lưu trữ dữ liệu chuỗi thời gian.Tìm kiếm đàn hồi cho dữ liệu chuỗi thời gian

Dữ liệu bao gồm các chỉ số và số liệu thống kê khác nhau được thu thập theo các khoảng thời gian khác nhau từ các thiết bị. Mỗi phần dữ liệu là một đối tượng JSON. Tôi hy vọng thu thập khoảng 12GB/ngày, nhưng chỉ cần giữ dữ liệu trong ES trong 180 ngày.

ElasticSearch có phù hợp với dữ liệu này so với MongoDB hoặc HBase không?

+0

Xem http://stackoverflow.com/a/37133862/3524828 –

Trả lời

4

Sử dụng chỉ mục dựa trên thời gian, ví dụ: chỉ mục một ngày, cùng với tính năng mẫu chỉ mục và bí danh để truy vấn tất cả các chỉ mục cùng một lúc có thể có kết quả phù hợp. Tuy nhiên, có rất nhiều yếu tố mà bạn phải tính đến như: - loại truy vấn - Cấu trúc của yêu cầu về tài liệu và truy vấn đối với cấu trúc này. - Số lần đọc so với viết - Availability, sao lưu, theo dõi - vv

Không phải là câu hỏi dễ trả lời với có hoặc không, tôi sợ bạn phải làm nhiều hơn nữa nghiên cứu mình trước khi bạn đang thực sự nói rằng nó là công cụ tốt nhất cho công việc.

+0

Có giới hạn nào về số lượng chỉ mục bạn có thể có không? Nếu tôi muốn có một chỉ mục cho mỗi số liệu cho mỗi ngày, liệu có quá nhiều thứ để ES xử lý? – Patrick

+0

Có, số lượng chỉ mục trên mỗi máy/nút có thể nhiều. Bạn phải cấu hình số lượng chards khôn ngoan. Bạn cũng có thể suy nghĩ về việc sử dụng các loại thay vì chỉ mục. –

+0

Tuyệt vời, cảm ơn tất cả lời khuyên! – Patrick

14

Bạn có thể đọc trên ví dụ về trường hợp sử dụng chuỗi thời gian ElasticSearch here.

Nhưng tôi nghĩ cơ sở dữ liệu cột phù hợp hơn với yêu cầu của bạn.

Hiểu biết của tôi là ElasticSearch hoạt động tốt nhất khi truy vấn của bạn trả lại một tập hợp con nhỏ các kết quả và lưu trữ các tham số đó để sử dụng sau này. Nếu các thông số tương tự được sử dụng trong các truy vấn một lần nữa, nó có thể sử dụng các kết quả được lưu trữ cùng nhau trong công đoàn, do đó trả về kết quả thực sự nhanh chóng. Nhưng trong dữ liệu chuỗi thời gian, bạn thường cần tổng hợp dữ liệu, điều đó có nghĩa là bạn sẽ đi ngang qua nhiều hàng và cột cùng nhau. Hành vi như vậy là khá có cấu trúc và dễ dàng để mô hình hóa, trong trường hợp đó có vẻ không phải là một lý do tại sao ElasticSearch nên thực hiện tốt hơn so với cơ sở dữ liệu cột. Mặt khác, nó có thể cung cấp dễ sử dụng, ít điều chỉnh, vv tất cả đều có thể làm cho nó thích hợp hơn.

Cơ sở dữ liệu cột thường cung cấp cấu trúc dữ liệu hiệu quả hơn cho dữ liệu chuỗi thời gian. Nếu cấu trúc truy vấn của bạn được biết trước, thì bạn có thể sử dụng Cassandra. Cẩn thận rằng nếu truy vấn của bạn yêu cầu mà không sử dụng khóa chính, Cassandra sẽ không được thực hiện. Bạn có thể cần phải tạo các bảng khác nhau với cùng một dữ liệu cho các truy vấn khác nhau, vì tốc độ đọc của nó phụ thuộc vào cách nó ghi vào đĩa. Bạn cần phải tìm hiểu những phức tạp của nó, một ví dụ chuỗi thời gian là here.

Cơ sở dữ liệu cột khác mà bạn có thể thử là phần mở rộng cột được cung cấp cho Postgresql. Xem xét rằng kích thước db tối đa của bạn sẽ là khoảng 180 * 12 = 2,16 TB, phương pháp này sẽ hoạt động hoàn hảo, và thực sự có thể là lựa chọn tốt nhất của bạn. Bạn cũng có thể mong đợi một số nén kích thước đáng kể khoảng 3x. Bạn có thể tìm hiểu thêm về nó here.

+0

Thông tin tuyệt vời, cảm ơn bạn đã phản hồi! – Patrick

+0

Amazon Redshift quá - một postgres như cột theo định hướng db – lukewm

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