Tôi có một giải pháp có thể song song, nhưng tôi chưa (có) có kinh nghiệm với hadoop/nosql và tôi không chắc giải pháp nào là tốt nhất cho nhu cầu của tôi. Về lý thuyết, nếu tôi có CPU không giới hạn, kết quả của tôi sẽ trở lại ngay lập tức. Vì thế nên bất kỳ sự giúp đỡ nào cũng được đánh giá cao. Cảm ơn!truy vấn thời gian thực/tổng hợp hàng triệu bản ghi - hadoop? hbase? cassandra?
Dưới đây là những gì tôi có:
- 1000s của bộ dữ liệu
- phím số liệu:
- tất cả các tập hợp dữ liệu có các phím cùng
- 1.000.000 phím (sau này có thể là 10 hoặc 20 triệu đồng)
- cột bộ dữ liệu:
- mỗi bộ dữ liệu có các cột cùng
- 10 đến 20 cột
- nhất cột là giá trị số mà chúng ta cần để tổng hợp trên (avg, stddev, và sử dụng R để tính toán thống kê)
- một vài cột là "type_id" cột, vì trong một truy vấn cụ thể chúng tôi có thể muốn chỉ bao gồm một số type_ids
- ứng dụng web
- người dùng có thể chọn dữ liệu ngay ETS họ quan tâm đến (bất cứ nơi nào 15-1000)
- ứng dụng cần đến nay: chìa khóa, và kết quả tổng hợp (avg, stddev) của mỗi cột
- cập nhật dữ liệu:
- một toàn bộ số liệu có thể được thêm, bỏ hoặc thay thế/cập nhật
- sẽ thật tuyệt vời để có thể thêm cột. Nhưng, nếu được yêu cầu, chỉ có thể thay thế toàn bộ tập dữ liệu.
- không bao giờ thêm hàng/chìa khóa để một tập dữ liệu - do đó, không cần một hệ thống với rất nhiều nhanh chóng viết
- cơ sở hạ tầng:
- hiện hai máy với 24 lõi mỗi
- cuối cùng, muốn khả năng cũng để chạy trên amazon
tôi không thể precompute giá trị tổng hợp của tôi, nhưng vì mỗi i chính độc lập, điều này sẽ dễ dàng mở rộng. Hiện tại, tôi có dữ liệu này trong cơ sở dữ liệu postgres, trong đó mỗi tập dữ liệu nằm trong phân vùng riêng của nó.
- phân vùng đã được thoải mái, vì có thể dễ dàng thêm/thả/thay thế các phân vùng
- cơ sở dữ liệu là tốt đẹp cho lọc dựa trên type_id
- cơ sở dữ liệu không phải là dễ dàng để viết các truy vấn song song
- cơ sở dữ liệu là tốt cho cấu trúc dữ liệu và dữ liệu của tôi không được cấu trúc
Như một bằng chứng của khái niệm tôi đã cố gắng ra hadoop:
- tạo một tab tập tin tách ra mỗi bộ dữ liệu cho một type_id đặc biệt
- tải lên HDFS
- bản đồ: lấy ra một giá trị/cột cho mỗi phím
- giảm: tính trung bình và độ lệch chuẩn
Từ chứng minh thô sơ của tôi, tôi có thể thấy điều này sẽ có quy mô độc đáo, nhưng tôi có thể thấy hadoop/hdfs có độ trễ mà tôi đã đọc rằng nó thường không được sử dụng để truy vấn thời gian thực (mặc dù tôi ổn với kết quả trả về cho người dùng trong 5 giây).
Bất kỳ đề xuất nào về cách tôi nên tiếp cận điều này? Tôi đang nghĩ đến việc thử HBase bên cạnh để cảm nhận điều đó. Tôi có nên nhìn vào Hive không? Cassandra? Voldemort?
cảm ơn!
Cảm ơn sự giúp đỡ. Có lẽ tôi không rõ vì sao tôi không thể tính toán trước được. Tôi đang tìm giá trị trung bình cho một khóa cụ thể và một cột cụ thể trong tập hợp dữ liệu (người dùng được chỉ định) không chính xác. Ví dụ: một người dùng có thể chọn 500 bộ dữ liệu, nhưng người dùng khác có thể chọn 500 bộ dữ liệu khác nhau. Mặc dù chúng tôi tính toán số liệu thống kê cho tất cả các khóa giống nhau và cho tất cả các cột giống nhau, các tập dữ liệu (tệp trong hadoop hoặc phân vùng trong cơ sở dữ liệu của tôi) là những biến thể. Cảm ơn. – anish
@anish Đối với stddev và trung bình bạn có thể tính toán trước và lưu trữ đủ thông tin để kết hợp các bộ nhanh chóng - chỉ cần theo dõi tổng các giá trị, tổng của các ô vuông và tổng số. – cftarnas
OK, tôi cảm thấy hơi dày đặc ở đây và tôi hoàn toàn mất tích cách dễ dàng tính toán trước dữ liệu. Tôi khiêm nhường… tôi có thể được giúp một chút không? Nếu tôi có 3 bộ dữ liệu (A, B, C) thì các combo có thể của tôi là: A, B, C, ABC, AB, BC. Tôi sẽ không cần phải tính toán trước cho tất cả các hoán vị? Với 1000 bộ dữ liệu, đây sẽ là rất nhiều dữ liệu. Ngoài ra, tôi sẽ cố gắng cải thiện hiệu suất truy xuất các giá trị cho các bộ dữ liệu cụ thể của tất cả các khóa bằng cách: truy vấn song song và có thể là phương pháp định hướng cột (cột = bộ dữ liệu và giá trị tương ứng). David, cảm ơn vì đã nói với tôi để thử HBase. cám ơn! – anish