2009-12-09 22 views
2

我們都知道MYSQL。 我們都知道memcached。物理/內存數據庫。 (用於登錄我的網站)

我喜歡memcached。你有一個字符串鍵,它返回一個值。死簡單。

是否有內存數據庫?例如,我正在構建一個需要跟蹤LOGGING的網站。人們做的一切...我需要跟蹤。但是每次有人點擊頁面時寫入磁盤的速度會很慢......

所以我想把它保存在內存中。 問題是,memcached對此太簡單了。我不希望這些信息存儲在memcached的:

log1:query:apple,12-11-2009:32:33,3,5,2 

是否有一個工具,簡單易用的memcached的,但提供了更多的功能,而不是基本的鍵值?

關鍵是簡單易用,簡單易學,但它的工作原理!

+0

實際上您是否剛剛嘗試寫入數據庫,並讓數據庫引擎在內存中爲您緩存? – 2009-12-09 00:53:03

+0

如果日誌記錄操作失敗,應該怎麼做?一個問題人們並不經常問。如果答案不是「它會發生」,那麼你也可以考慮異步寫入一個常規的數據庫等。有時候,記錄操作是主要事務的一部分是必須的,但是你可能會發現自己處於「我們真的希望它能在那裏,但如果它可能會在一段時間內錯過一次「的情況下可以生活。只要確保在管理失敗時向管理員提出錯誤。 我總是爲「內存記錄」這個想法感到好笑。我明白爲什麼,但它仍然聽起來像一個矛盾。 – 2009-12-09 02:12:49

回答

1

我認爲SQLite可能適合您的需求。它是一個完整的關係數據庫(事實上,你可以使用SQL命令來控制它,顧名思義),但是非常輕便,並且允許數據庫完全保留在內存中。

+0

我會去SQLite讓事情開始,然後根據需要改變可能看看MySQL或PostgreSQL – 2009-12-09 01:09:17

0

HSQLDB是我見過的最突出的一個。它很小,很快,使用標準的SQL,並被OpenOffice和其他項目使用。

4

我會阻止您使用不同的數據庫來存儲日誌信息與您的業務數據。當您想要進行實際報告時 - 例如,X組中有多少用戶執行了活動Y--您將希望在「業務數據」和「記錄數據」之間進行連接。如果該數據位於不同的數據庫管理系統中,則會遇到麻煩。

真的,對磁盤進行單次寫入的稅率並不是那麼高(請注意,您的HDD控制器足夠聰明,可以批量寫入 - 寫入不會被阻止)。

0

在MySQL下使用內存引擎肯定會保持它的速度。唯一的問題是它不是持久的,所以如果MySQL重新啓動,你的數據就會消失(對會話數據有好處)。

無論是或只是在文件系統上追加一個文件。如果您需要在服務器之間合併日誌,請使用Facebook的抄寫員。

0

我真的對Flare的功能印象深刻。它使用memcached協議進行連接,使用Tokyo Cabinet進行連接。最終的結果是,memcached客戶端只是有點工作': http://labs.gree.jp/Top/OpenSource/Flare-en.html

我沒有在生產中運行此,順便說一句。

此外,您可以通過動態主機添加和多個複製選項獲得集羣,以便您可以執行一些時髦的事情,例如由您的memcached密鑰哈希策略固有分割的循環複製!當然值得一看,因爲它應該是(希望!)配置屬性更改指向Flare而不是memcached。

0

您已經從數據庫和操作系統獲得了大量的緩存/緩衝。你會爲增加收益而增加主要的複雜性,尤其是對於大多數只寫活動而言。您可能會考慮像其他人一樣進行日誌記錄 - 寫入文本文件。