2010-07-08 29 views
0

在我們的Web應用程序中,我們需要跟蹤用戶點擊的內容,他們在搜索框中寫入的內容等。大量數據將由AJAX發送。通常,功能與谷歌分析有點類似,但我們需要以不同的方式進行定製。哪個NoSQL後端存儲網頁跟蹤數據

數據將被收集並每天彙總並導出到PostgreSQL,因此後端應該能夠處理數十個插入。我不考慮使用傳統的SQL數據庫,因爲它可能不會有效地處理這麼多的插入。

我想知道你會使用哪個後端進行這樣的任務?其實我想到了MongoDB或Cassandra。但是也許你知道更好的軟件來完成這項任務?也許不同的NoSQL數據庫?

Web應用程序是用Ruby on Rails編寫的,所以對Ruby的支持會很好,但這絕對不是最重要的。

回答

1

聽起來像你需要分析你的具體要求。

這可能是最好的解決方案是分割/分割/分片傳統數據庫,然後從那裏推送數據。

根據您對數據丟失的容忍程度,有很多選項。如果您選擇具有單服務器耐久性的系統,寫入瓶頸的主要來源將是fdatasync()(假設您使用硬盤驅動器來存儲數據)。

如果您可以容忍的次數少於每次提交時的次數,那麼您可以調整數據庫以定時提交。如果你正確地管理它並且調整持久性(如果它支持的話),根據你的表,索引結構等,我希望你可以得到相當多的帶有「常規」數據庫的插入(例如postgresql)那)給你喜歡。

將此分解爲若干個實例當然可以使您擴展。但是,您需要注意操作要求(即,如果某些實例關閉,會發生什麼情況)。與您的Ops團隊談談他們舒適的管理方式。

+0

感謝您的回答。爲了這個任務,我需要性能超過耐久性。但是,即使在高同步間隔的情況下,我仍然擔心RDMBS仍然會花費一些額外的時間處理交易,限制等等。在這裏,我們將只有4個列的表格,所以我想擺脫ACID。無論如何,我會將該解決方案與其他人進行比較。 – mlomnicki 2010-07-13 07:14:58

+0

您應該拆分操作:接收(特殊服務)發送數據到存儲服務,該服務將數據存儲到RDMBS並將信號發送到另一個服務進行處理。作爲管道,您可以使用MSMQ或其他持久解決方案。 – dariol 2010-08-06 12:27:24