2010-08-18 158 views
2

我有一個從大約90-100個Web服務器收集實時Apache日誌數據的系統。我還定義了一些url模式。什麼是最好的數據庫/存儲來存儲統計數據?

現在我想建立另一個系統,更新基於這些日誌每個模式的出現時間。

我曾想過使用MySQL來存儲統計資料,通過聲明進行更新: 「更新table設置count =計數+ 1,其中....」,

但恐怕MySQL的來自此類服務器數量的數據將變慢。此外,我正在尋找一些更具擴展性和簡單性的數據庫/存儲解決方案。 (作爲RDBMS,MySQL在這種情況下支持太多我不需要的東西)。你有什麼主意嗎 ?

回答

1

Apache Cassandra是一個高性能的列家庭存儲和可擴展得非常好。學習曲線有點陡峭,但在處理大量數據時沒有問題。

更簡單的解決方案將是一個鍵值存儲,如Redis。這比Cassandra更容易理解。 Redis似乎只支持主從複製作爲擴展的一種方式,因此主服務器的寫入性能可能是瓶頸。 Riak有沒有任何中央節點的分散架構。它沒有單點故障,也沒有任何瓶頸,因此更容易擴展。

+2

Redis的將是完美的解決方案,爲單位遞增操作從比賽到保護條件。 Cassandra和Riak不支持這個功能,這會使正確更新數據變得困難。 – 2010-08-19 09:20:13

0

關鍵值存儲似乎是我的系統合適的解決方案。在對這些存儲進行快速瀏覽之後,我對有關競態條件的問題感到擔憂,因爲會有很多客戶嘗試在同一個密鑰上執行這些步驟:

  1. count = storage.get(key )
  2. storage.set(鍵,計數+ 1)

我以前與東京內閣的工作,他們有這完全符合我的情況下匹配「addint」的方法,我不知道其他的儲存也有類似的功能?我沒有選擇東京櫃/暴君,因爲我經歷過關於它的可擴展性和數據穩定性的一些問題(如修復損壞的數據,...)

+0

Redis支持[INCR命令](http://code.google.com/p/redis/wiki/IncrCommand),Riak不支持。 MongoDB是另一種選擇,如果你需要原子方式增加值,因爲它有[$ INC運營商(http://www.mongodb.org/display/DOCS/Updating#Updating-%24inc)。在另一個注意:在堆棧溢出你應該使用註釋問問題,而不是答案:)(見常見問題解答) – 2010-08-19 07:51:42

+0

謝謝尼爾斯,我試圖使用評論。但是StackOverFlow不允許我有'換行'的評論。這就是爲什麼我使用答案模式,希望SOF很快就會支持它。 MongoDB看起來不錯,1.6版本中的可伸縮性(分片模式)也有很大改變。我會試一試。 – fang 2010-08-19 11:14:10

相關問題