2011-12-31 35 views
5

Tôi đang làm việc trên một dự án thực hiện tổng hợp và phân tích nhật ký như là một phần của dự án lớn hơn. Tôi không biết cơ sở dữ liệu nào để chọn xử lý các nhật ký này. Gần đây tôi sẽ đi qua lại giữa MongoDB và Cassandra, nhưng tôi chắc chắn có những người khác phù hợp với nhu cầu của tôi. Tôi nên chọn cái nào và tại sao?Mongodb vs Cassandra để tổng hợp, tìm kiếm và phân tích nhiều nhật ký

Toàn bộ điều khá ở đầu ngay bây giờ, nhưng đây là những yêu cầu cho đến nay:

  • nhật ký trong các định dạng syslog
  • truy vấn chủ yếu là trên một sợi dây nhỏ đó là bây giờ trong thông điệp nhưng tôi sẽ lấy nó trên một lĩnh vực riêng biệt. Và cũng sẽ có các bộ lọc dựa trên ngày, mức độ nghiêm trọng hoặc thẻ. Rất hiếm khi mọi người chỉ tìm kiếm một chuỗi ngẫu nhiên trong thư.
  • phân tích theo giờ từ một số các mục log
  • giữ các bản ghi trong một khoảng thời gian cấu hình của
  • hơn sẽ đến, tôi chắc chắn :) Đó là lý do tôi đang nghĩ NoSQL là thích hợp hơn, bởi vì chúng ta có thể thay đổi giản đồ.

Chúng tôi hy vọng sẽ phát triển cơ sở dữ liệu cho một số dữ liệu TB (và ~ 50K lần chèn mỗi giây), do đó, sharding là phải. Truy vấn không thường xuyên như vậy, bởi vì chúng chủ yếu được sử dụng bởi các nhà phát triển của dự án lớn hơn. Nhưng kết quả cần được trả lại sau vài giây.

Ngay bây giờ, bộ nhớ là phổ biến (và chậm) cho tất cả các máy. Vì vậy, đối với khả năng mở rộng, tôi cho rằng chúng ta cần phải tận dụng tốt nhất bộ nhớ và đa luồng - để cho sharding có ý nghĩa. Các ý tưởng cơ bản mà tôi có cho đến nay là MongoDB có nhiều tính năng hơn, chẳng hạn như kết quả phân loại hoặc regex, và dễ dàng thiết lập cấu hình tốt hơn, trong khi Cassandra có khả năng mở rộng hơn (bằng cách thêm máy chủ), và cũng có vài tính năng gọn gàng, như đặt TTL trên dữ liệu.

+0

tôi đã kết thúc bằng Elasticsearch. Hãy xem ở đây để biết thêm thông tin: [link] (http://www.elasticsearch.org/tutorials/2012/05/19/elasticsearch-for-logging.html) –

Trả lời

2

MongoDB có âm thanh phù hợp với yêu cầu của bạn. Đây là lý do:

  • chỉ mục: vì bạn muốn chạy các truy vấn không thường xuyên, thật tuyệt không cần phải duy trì chúng trong ứng dụng của bạn hoặc có ứng dụng tìm kiếm riêng biệt (Lucene).
  • vảy tốt (hỗ trợ sharding tích hợp, sao chép)
  • viết không đồng bộ (theo mặc định, bạn có thể làm cho chúng đồng bộ.), Không bị chặn và nhanh. Bạn có thể mất ít trong một số trường hợp lỗi nhất định, nhưng đối với nhật ký và phân tích, nó sẽ không tạo ra sự khác biệt.
  • API truy vấn khá mạnh (không giống như quan hệ, không tham gia, nhưng tốt hơn tất cả các cửa hàng khóa-giá trị nosql khác và âm thanh mạnh hơn những gì Cassandra cung cấp).

Bạn thậm chí có thể tìm thấy cấu hình thích hợp để có cấu hình trong thiết lập không bị phân đoạn. Ví dụ theo mặc định nó đồng bộ với đĩa mỗi 60 giây, có nghĩa là 60 giây ghi sẽ được đệm do đó làm giảm IO. Tôi đã thử nó trên một nửa terabyte dữ liệu trên một máy tính duy nhất và một truy vấn trường được lập chỉ mục duy nhất chạy trong cca 100-200ms.

+0

Cảm ơn bạn rất nhiều vì đã trả lời. Nó phù hợp với những gì tôi có trong tâm trí ngay bây giờ, đó là đi với MongoDB và sau đó có thể chuyển sang cái gì khác chỉ khi tôi gặp vấn đề. –

5

Kho dữ liệu cột thưa thớt như Apache Cassandra là tuyệt vời trong việc tổng hợp dữ liệu chuỗi thời gian.Xem các bài viết sau đây cho ví dụ:

+0

Bạn đang nói về thực tế là Cassandra tự động lưu trữ một dấu thời gian cho mỗi cột? Lúc đầu, tôi nghĩ rằng điều này thực sự hữu ích cho tôi, nhưng sau đó tôi nhận ra rằng tôi thực sự cần một dấu thời gian khác nhau: một khi sự kiện được tạo ra trên máy chủ, không phải khi sự kiện đến trình tổng hợp nhật ký. Nếu bạn nghĩ rằng tôi đang thiếu một cái gì đó ở đây, bạn có thể xin vui lòng viết một số chi tiết? –

+0

Tôi đang đề cập cụ thể đến cách tiếp cận mô hình hóa dữ liệu. Khái niệm về dấu thời gian của Cassandra không liên quan gì đến điều này. Vui lòng đọc các bài viết ở trên - chúng sẽ cung cấp một số thông tin chi tiết về cách bạn cấu trúc các nhóm cột để lưu trữ dữ liệu nhật ký. – zznate

0

Cho rằng hệ thống của bạn sẽ là một thông lượng ứng dụng ghi cao Tôi muốn giới thiệu Cassandra.

tôi đã đặt cùng một cái nhìn tổng quan mức độ cao về sự khác nhau giữa MongoDB và Cassandra đây - https://scalegrid.io/blog/cassandra-vs-mongodb/

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