2010-11-25 41 views
6

用grep等分析了一些千兆字節的日誌文件之後,我想知道如何通過使用數據庫記錄這些東西來使這更容易。什麼數據庫可以適用於這種垃圾? vanillia SQL數據庫當然適用,但它提供了許多您不需要的交易保證等,如果您使用千兆字節的數據和非常快的插入速率,這可能會讓它變慢。所以一個NoSQL數據庫可能是正確的答案(比較this answer的一些建議)。對數據庫中的一些要求是:你將使用什麼數據庫進行日誌記錄(即als日誌文件替換)

  • 能力應付千兆字節或數據
  • 快速插入
  • 在每個條目多indizes應該是可能的(如時間,會話ID,URL等甚至TB級)
  • 如果可能,它會以壓縮格式存儲數據,因爲日誌文件通常是極其重複的。

更新:已經有一些SO問題:Database suggestion for processing/reporting on large amount of log file type dataWhat are good NoSQL and non-relational database solutions for audit/logging database。但是,我很好奇哪些數據庫滿足哪些要求。

回答

1

根據您的需要Splunk可能是一個不錯的選擇。它不僅僅是一個數據庫,但你可以得到各種報告。另外,它被設計成一個日誌文件替換,所以他們已經解決了擴展問題。

5

已經嘗試了很多的NoSQL解決方案後,我最好的賭注是:偉大的可擴展性

  • 了Riak +了Riak搜索
  • 在MySQL/PostgreSQL的
  • MongoDB的非標準化數據,如果你不介意等待
  • CouchDB的,如果你知道你要搜索的內容

Riak + Riak搜索容易(真的!),並允許您對您的數據自由格式查詢。您還可以輕鬆地混合數據模式,甚至可以將innostore數據壓縮爲後端。

如果您真的想要使用索引而不是減慢抓取速度,MongoDB會煩人地擴展幾千兆字節的數據。考慮單節點性能並提供索引創建非常快。只要你的工作數據集不再適合內存,它就成了一個問題...

mysql/postgresql仍然非常快,並且由於通常的b +樹索引,它允許自由格式查詢。如果某些字段沒有顯示在每條記錄中,請查看postgres的partial indexes。他們還提供壓縮表,並且由於架構是固定的,所以不會一次又一次保存您的行名稱(這通常發生在很多nosql解決方案中)

如果您已經知道查詢,那麼CouchDB非常好你想看看,他們的增量式地圖/減少視圖是一個很好的系統。