2011-06-01 78 views
2

我有一個非常小的MySQL數據庫,其中主表大約有300條記錄,我偶爾會添加更多。該表存儲文件的位置以及用戶有權訪問的視頻資源的一些元數據。 (電影標題,路徑,關鍵幀名稱,電影名稱,文件名等)將簡單的MySQL數據庫轉換爲NoSQL解決方案

我想將此表移至內存中的解決方案,但我現在對於那裏的選項感到困惑是和真正的最快,最輕的重量,最好的降壓。

Redis? MongoDB的?還有別的嗎? MySQL可以在內存中運行嗎?

我打算爲不同項目添加一些其他數據庫。

運行的這個盒子是CentOS 5.6,16GB內存,我每天約有100位訪問者訪問我的網站。

+0

如果你的表很小,我希望MySQL將整個事情緩存在內存中。你是否注意到數據庫看起來特別慢? – 2011-06-01 12:58:11

+0

你的意圖是?你爲什麼想要一個內存中的解決方案?所有主要的數據庫管理系統都喜歡擁有大量的緩存內存,並且速度非常快。所以我非常好奇你的內存解決方案的原因。 – 2011-06-01 12:59:43

+0

@Eric Petroelje - 不,它並不慢,只是越來越多的遊客每天都在觀看鏡頭,我正試圖最大限度地提高箱子的效率。我需要接下來實施清漆。 http://6colors.net – TalkingTom 2011-06-01 13:52:44

回答

0

這取決於您希望如何訪問/查詢數據庫中的記錄。

MongoDB是一個文檔存儲,它完成了Mysql可以完成的大部分工作。但我不會說MongoDB是一個輕量級的解決方案。

Redis是一款快速內存鍵/值數據庫。但是您只能通過特定的密鑰訪問您的記錄。

+0

那麼我在我的表中每個記錄都有一個唯一的關鍵 – TalkingTom 2011-06-01 13:50:49

0

最簡單的方法是使用MySQL MEMORY表引擎。它將所有數據存儲在內存中,並在MySQL服務器停止工作時將其刪除。

0

最簡單的事情就是配置mysql,以便將所有內容都保存在內存中(您有很多)。

這裏看到 Is it possible to load a database in the RAM?

緩衝池大小的答案有了這樣一個小桌子,甚至默認的配置,它可能已經是在RAM中所有的實際目的

0

對於300條記錄,您將看不到移動到nosql系統的任何可衡量的益處。 MySQL可以使用內存作爲存儲表的底層 - 但是如果你的整個數據庫小於系統上的可用內存量,那麼這是不值得的 - 大多數現代操作系統(包括Linux)都會很少必須從磁盤讀取數據 - 而且您不必在磁盤上維護數據庫的副本以免重新啓動。

您的數據庫很小。 「我每天約有100位訪問者訪問我的網站」是一個相當無意義的指標,但意味着流量非常低。

16GB RAM是一個很大的內存 - 如果你正在處理大量的媒體文件,它可能是你的應用程序所需要的。

1

你需要問自己的第一件事是, 爲什麼你想切換到NoSQL數據庫?

答案可能是:你需要更快的速度,你想 複製和分佈式數據庫系統, 需要二手存儲 或複製的更多的可擴展性。或者你希望從更簡單的開發中獲益 。

但從300條記錄我不認爲任何,但 最後會幫助你。

我不認爲你真的想要一個「內存中」的 解決方案。在內存中意味着每個數據只有被寫入 來衝擊,如果你關閉你的數據庫,那麼你所有的 數據都會丟失。如果你真的想要那麼MySQL 有一個內存中的存儲引擎。

否則,所有數據庫將盡可能緩存在內存中的許多內存中 。在你的內存中,300條記錄很可能會在MySQL中完整地寫入 。切換到NoSQL數據庫可能不會帶來任何速度上的好處。

如果您一般計劃切換到NoSQL數據庫, 我寧願MongoDB。它是NoSQL和 和RDBMS的混合體,因爲它爲您提供了一種幾乎像SQL一樣強大的查詢語言 。你可以比RDBMS更好地縮小它 。對我而言,對於無模式數據庫,編程將會更容易 。您可以通過 將MongoDB擴展到1000臺服務器。

但是其他NoSQL數據庫具有更多的可擴展性。 如果你需要更多的服務器,那麼其他數據庫將更好地提供 probablby。但是你失去了一些查詢你的數據的方法。

如果您一般計劃切換到NoSQL數據庫 我認爲MongoDB可以處理這個問題。對於一些特定情況,其他NoSQL數據庫 可能更好,而不是 。