2012-02-09 132 views
0

我沒有處理很多記錄的經驗。以前,我使用MySql來存儲文章,評論和其他簡單的數據。現在我需要在Ruby On Rails中編寫一個應用程序,它每分鐘都會向數據庫推送數十條記錄。如何有效地在數據庫中存儲多個數據?

此應用程序將要觀看一些網站並測量他們的一些參數。該網站將全天候收看。如果我想觀察100個網站,我每天都會在我的數據庫表中添加約144000(100 * 60 * 24)個新增記錄。

我不想只是將它們存儲在數據庫中,而且還與他們合作,合併的結果,圖表等

我猜想,這是不是很明智,以保存這些記錄,如在博客評論系統。我應該存儲沒有任何「花哨」解決方案的數據嗎?

回答

2

我會建議你使用MongoDB,我目前有幾個它運行存儲數百萬文件的實例。與通常的關係模式相反,您可以使用MongoDB對子文檔的支持。

MongoDB是一個NoSQL數據庫,但它非常易於使用,並且如果您熟悉數據庫和日常OO,就可以開始使用。

MongoDB中有最流行的語言,包括Ruby,所以你可以安裝Ruby的驅動程序(假設這是你想用什麼)通過使用寶石運行以下命令司機:

gem install mongo 

如果運行Debian/Ubuntu簡單isntall mongodb與以下內容:

apt-get install mongodb 

這應該讓你開始。

根據每個記錄的大小,可以採用各種不同的設計,MongoDB目前每個文檔有16MB的限制,所以這是您需要注意的事情。

我想有一個集合命名的網站,用於存儲有關您正在監視網站的基本信息(名稱,網址,參考客戶端,...)

然後有將被用來存儲其他集合你的統計數據,可以稱爲「統計數據」,我會將每個子文檔(每分鐘的統計數據)存儲在另一個文檔中,這些文檔將保存一天的數據。

所以在統計每個文件將是這樣的:

{ 
    _id : X, 
    website_id : STORE_THE_ID_HERE, 
    timestamp_start : PUT_THE_TIMESTAMP_WHEN_YOU_START_MONITORING_HERE, 
    timestamp_end : SAME_AS_ABOVE_REALLY, 
    stats_count : A_DENORMALIZED_COUNT_OF_STATS 
    stats : [ { views : X, clicks : X2, ... }, 
     ... 
    ] 
} 

希望,讓你開始,我想如果你願意試一試的MongoDB完全符合您的要求。

+0

這個答案對我來說聽起來很棒。我會試一下! – Arti 2012-02-09 18:46:15

相關問題