2010-05-12 77 views
10

Tôi hiện đang nghiên cứu về một chương trình phụ trợ để sử dụng cho một dự án có yêu cầu tổng hợp dữ liệu đòi hỏi. Các yêu cầu chính của dự án là như sau.Tập hợp dữ liệu mongodb vs mysql

  1. Lưu trữ hàng triệu bản ghi cho mỗi người dùng. Người dùng có thể có hơn 1 triệu bài viết mỗi năm, ngay cả với 100 người dùng, chúng tôi đang nói về 100 triệu bài viết mỗi năm.

  2. Tập hợp dữ liệu trên các mục nhập đó phải được thực hiện khi đang di chuyển. Người dùng cần có khả năng lọc các mục nhập của một tấn bộ lọc có sẵn và sau đó trình bày tóm tắt (tổng số, trung bình e.t.c) và đồ thị trên kết quả. Rõ ràng tôi không thể tính toán trước bất kỳ kết quả tổng hợp nào vì các kết hợp bộ lọc (và do đó các bộ kết quả) là rất lớn.

  3. Người dùng sẽ chỉ có quyền truy cập vào dữ liệu của riêng họ nhưng sẽ rất tuyệt nếu số liệu thống kê ẩn danh có thể được tính cho tất cả dữ liệu.

  4. Dữ liệu sẽ là phần lớn thời gian theo lô. ví dụ: người dùng sẽ tải lên dữ liệu mỗi ngày và có thể có 3000 hồ sơ. Trong một số phiên bản sau này, có thể có các chương trình tự động tải lên cứ vài phút trong các lô nhỏ hơn 100 mục chẳng hạn.

Tôi đã thực hiện một thử nghiệm đơn giản về việc tạo một bảng với 1 triệu hàng và thực hiện tổng đơn giản 1 cột cả trong mongodb và trong mysql và hiệu suất chênh lệch rất lớn. Tôi không nhớ những con số chính xác nhưng nó là một cái gì đó giống như mysql = 200ms, mongodb = 20 giây.

Tôi cũng đã thực hiện thử nghiệm với couchdb và có kết quả tồi tệ hơn nhiều.

Điều gì có vẻ hứa hẹn tốc độ khôn ngoan là cassandra mà tôi đã rất nhiệt tình khi lần đầu tiên tôi phát hiện ra nó. Tuy nhiên tài liệu khan hiếm và tôi đã không tìm thấy bất kỳ ví dụ cụ thể nào về cách thực hiện các khoản tiền và các hàm tổng hợp khác trên dữ liệu. Điều đó có thể không ?

Có vẻ như tôi đã thử nghiệm (Có thể tôi đã làm điều gì sai) với hiệu suất hiện tại không thể sử dụng mongodb cho dự án như vậy mặc dù chức năng tự động kích hoạt có vẻ hoàn toàn phù hợp với nó.

Có ai có kinh nghiệm về tập hợp dữ liệu trong Mongodb hoặc có bất kỳ thông tin chi tiết nào có thể trợ giúp cho việc triển khai dự án không?

Cảm ơn, Dimitris

Trả lời

2

tôi chưa bao giờ bị ấn tượng bởi hiệu suất của MongoDB trong trường hợp sử dụng nơi javascript là cần thiết , ví dụ như bản đồ-giảm-công việc.Có lẽ nó là tốt hơn trong 1.51.Tôi đã không cố gắng

Bạn cũng có thể thử các phiên bản nút duy nhất miễn Greenplum: http://www.greenplum.com/products/single-node/http://www.dbms2.com/2009/10/19/greenplum-free-single-node-edition/

+0

Xin cảm ơn. Liên kết greenplum rất hữu ích vì tôi phát hiện ra có rất nhiều dbs ở đó giống như greenplum được tối ưu hóa cho những gì tôi cần làm. Phân tích dữ liệu khổng lồ. Một số khác là infobright mà cắm vào mysql và có vẻ đầy hứa hẹn. –

+0

Nhìn vào điều này, có vẻ hoàn hảo cho Infobright – Amala

3

Nếu bạn đang tìm kiếm một DBMS hiệu suất rất cao và không cần nó để được quan hệ, bạn có thể xem xét Cassandra - mặc dù lợi thế của mình chỉ đi vào chơi nếu bạn có một cơ sở dữ liệu cụm thay vì một nút duy nhất.

Bạn không nói những giới hạn nào có trên kiến ​​trúc vật lý. Bạn đã đề cập đến sharding mà ngụ ý một cụm. Các cụm MySQL IIRC cũng hỗ trợ quá trình xóa. Nó cũng sẽ rất hữu ích để biết mức độ đồng thời của hệ thống được thiết kế để hỗ trợ, và làm thế nào dữ liệu sẽ được thêm vào (nhỏ giọt thức ăn hoặc hàng loạt).

Bạn nói "Rõ ràng tôi không thể tính toán trước bất kỳ kết quả tổng hợp nào vì các kết hợp bộ lọc (và do đó tập hợp kết quả) rất lớn."

Đây là vấn đề lớn nhất của bạn và sẽ là yếu tố quan trọng nhất trong việc xác định hiệu suất của hệ thống của bạn. Chắc chắn bạn không thể duy trì quan điểm vật chất của mọi kết hợp có thể, nhưng chiến thắng hiệu suất lớn nhất của bạn sẽ được duy trì hạn chế trước khi tổng hợp quan điểm và xây dựng một ưu mà có thể tìm thấy những trận đấu gần nhất. Nó không phải tất cả những khó khăn.

C.

+0

Xin cảm ơn vì phản hồi. Tôi đã cập nhật bài đăng gốc của mình với một số thông tin khác. Nhận xét cuối cùng của bạn về lượt xem tổng hợp trước và trình tối ưu hóa đối sánh gần nhất là những gì tôi đã nghĩ đến khi thực hiện nghiên cứu dự án. Vấn đề của tôi là tôi không có ý tưởng về cách đi về nó và bắt đầu từ đâu. Mỗi bản ghi sẽ có nhiều cờ sẽ được sử dụng làm bộ lọc cộng với người dùng sẽ có thể lọc theo khoảng thời gian tùy ý. Sau đó, trên tập kết quả, tôi sẽ phải tính toán tổng số tiền trung bình và số lượng. Số lần cờ này đúng e.t.c Mọi con trỏ khác được đánh giá cao –

1

Nếu một khoản tiền đơn giản là 1 triệu tài liệu mất 20 giây ở Mongo, có thể bạn không có đủ RAM. Điều quan trọng với Mongo là bạn có thể duy trì toàn bộ tập dữ liệu trong bộ nhớ hoặc hiệu suất sẽ bị ảnh hưởng. Bạn đã không đề cập đến cách bạn đã đếm, có lẽ đó là vấn đề với mã giảm bản đồ của bạn? Có quá ít chi tiết để nói vấn đề là gì, nhưng tôi đã làm bản đồ phức tạp hơn sẽ giảm đi với một đơn đặt hàng nhiều tài liệu hơn mất ít thời gian chạy trên máy tính xách tay của tôi

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