2010-08-27 25 views
5

Tôi bắt đầu xem xét NoSql và đã tự hỏi những gì người khác nghĩ về sự phù hợp của các giải pháp như vậy để lưu trữ và truy vấn dữ liệu chuỗi thời gian tài chính?NoSql (ví dụ: RavenDB) cho dữ liệu chuỗi thời gian tài chính?

Ví dụ: trong một trường hợp đơn giản, tôi sẽ lưu trữ biểu tượng cổ phiếu, mở, cao, thấp, đóng, âm lượng và dấu thời gian. Sau đó tôi sẽ muốn truy vấn dữ liệu đó dựa trên biểu tượng và phạm vi dấu thời gian.

Bạn nghĩ cấu trúc tài liệu tốt cho tình huống này là gì?

Cảm ơn,

Tom

Edit: tôi chủ yếu quan tâm đến việc thực hiện truy vấn đọc của chuỗi thời gian dữ liệu có trụ sở tại một giải pháp NoSQL vs một giải pháp RMDBS truyền thống

Trả lời

3

Tom, dữ liệu tài chính có xu hướng có các yêu cầu nhất quán và kiên trì nghiêm ngặt. Thoạt nhìn và không biết thêm về ứng dụng của bạn, tôi mong bạn cần các thuộc tính ACID của RDBMS trái ngược với thuộc tính BASE thường xác định các giải pháp NoSQL. Có thể nếu bạn mô tả mẫu sử dụng của mình và lý do bạn cho rằng bạn yêu cầu một mô hình phi quan hệ, tôi sẽ có thể tìm ra giải pháp phù hợp hơn cho bạn.

Vì nó là viết tắt, dữ liệu của bạn có vẻ dễ dàng được cấu trúc bởi mô hình quan hệ và có lược đồ khá cứng nhắc nên tôi không thấy cần DB2 cho Schemaless (MongoDB, CouchDB, Riak ...). Thông thường báo giá chứng khoán cần phải có tính nhất quán cao (luôn được cập nhật) vì vậy tôi không thấy bất kỳ điểm nào trong bản sao động (Cassandra, Voldemort ...). Và trừ khi bạn đã có một lượng dữ liệu khổng lồ và đạt được một bức tường liên quan đến tốc độ xử lý và sử dụng tài nguyên, tôi sẽ không đi đến một cột dựa trên db (HBase, Hypertable)

+0

Thuộc tính ACID không phải là yêu cầu đối với tôi ở đây. Các dữ liệu được lưu trữ được cập nhật qua đêm chỉ trong một công việc hàng loạt và sẽ nhận được truy vấn chỉ đọc trong suốt cả ngày. Điều tôi tò mò là nếu giải pháp NoSQL sẽ tốt hơn trong truy vấn dựa trên chuỗi thời gian (chọn dữ liệu trong phạm vi thời gian) so với giải pháp RMDBS truyền thống – TJF

+0

Không có vẻ như bạn có yêu cầu về tính khả dụng ở đây, bạn chỉ muốn truy vấn nhanh trên cơ sở dữ liệu chỉ đọc. Điều đó nghe có vẻ giống như một cái gì đó khá nhiều bất kỳ cơ sở dữ liệu phong nha có thể cung cấp tất cả các bạn thực sự cần là một chỉ số trên dấu thời gian. Tôi không nghĩ rằng một giải pháp NoSQL sẽ tốt hơn, nhưng nó phụ thuộc vào quy mô.Thành thật mà nói tôi sẽ sử dụng một công cụ tìm kiếm như Solr (hoặc Lucene) và chỉ cần chỉnh sửa bộ nhớ đệm vì dữ liệu của bạn là chỉ đọc chúng có thể rất nhanh. – Asaf

3

Take a look at ESENT.

Đối với kịch bản của bạn, tôi sẽ xem xét sử dụng chỉ mục chính trên 2 cột: biểu tượng + dấu thời gian (nếu bạn đang tìm kiếm biểu tượng riêng lẻ trong một khoảng thời gian) hoặc dấu thời gian + biểu tượng (nếu bạn định lấy tất cả biểu tượng trong một khoảng thời gian nào đó).

3

Tom. Chính xác thì bạn đang cố gắng đạt được điều gì? RavenDB chắc chắn có thể xử lý kịch bản này, nhưng bạn phải nhận thức được thực tế là các chỉ mục của RavenDB được cập nhật trên nền. Kịch bản của bạn có vẻ phù hợp với RDBMS, vì vậy tôi phải hỏi tại sao bạn đang tìm kiếm giải pháp NoSQL.

+0

cập nhật nền của các chỉ mục không phải là vấn đề trường hợp sử dụng này. Câu hỏi của tôi chủ yếu là về hiệu suất đọc. Liệu một giải pháp NoSql có tốt hơn trong truy vấn "chuỗi thời gian" (phạm vi thời gian) hơn là một giải pháp RMDBS truyền thống không? – TJF

+0

Có lẽ, với RavenDB, bạn có thể thực hiện hầu hết công việc trực tiếp trên đầu chỉ mục được xây dựng, sẽ là _very_ fast –

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