2011-04-12 88 views
4

我正在尋找.NET的持久鍵值存儲器。要求如下:.NET--一個快速輕量級的持久鍵值存儲器

  • 存儲用於由字符串標識的對象,並具有多個只包含字節數組的可選(命名)屬性。對於SQL解決方案,我會將它建模爲一個字符串 - > id表和幾個id - > blob表。
  • 數據的預期量爲幾兆字節(超過10 MB是目前不可能的,但比例高達100Mb將是一個不錯的獎金)
  • 輕量級 - 優選單組件,絕對沒有外部應用
  • 讀取比寫入更頻繁,至少減少100倍。
  • 快速讀取/寫入訪問 - 我期望內存中的存儲和對數據更新的延遲寫入;我可以週期性地產生異步寫入自己,如果存儲做到了,則可以獲得獎勵積分。
  • 原子I/O - 如果在寫入過程中終止進程,數據庫不應該中斷;否則數據不重要,即不需要額外的冗餘。

目前我認爲SQLite將在這裏工作;然而它似乎有點矯枉過正 - 我只需要鍵值存儲,而不是完整的SQL支持。我也聽說過bdb和libdb-dotnet綁定 - 它似乎更輕量級,但我不知道性能/一致性特性。

任何人都可以在這裏推薦一些東西嗎?歡迎使用其他參考(例如,如果.NET Framework中有某些功能可以完成這項工作,那將會非常棒),以及SQLite或libdb-dotnet(或一般bdb)或本土解決方案的經驗,如果它是無痛的。

+0

對我來說,使用任何類型的數據庫的聲音對於這一點來說都是矯枉過正的,只有10mb,爲什麼不一次一次地向/從磁盤讀取/寫入所有內容? (它不像它佔用了所有那麼多的內存) – Doggett 2011-04-12 18:04:04

+0

@Doggett,這聽起來像重新發明數據庫,如果建議的應用程序是不平凡的。 – driis 2011-04-12 18:06:30

+0

@Doggett,問題是在每次更新時寫完整的數據庫會變得很慢,並且沒有任何一個刷新點(即我無法在應用程序退出時編寫完整的數據庫,因爲應用程序可能會被提前終止)。我將不得不支持部分沖洗,並使它們成爲原子 - 我猜這是唯一不平凡的事情。 – zeuxcg 2011-04-12 18:14:17

回答

0

也許看看http://ravendb.net/。它將JSON文檔存儲在鍵值存儲中,但具有很好的.NET對象支持。

從您對您的需求的解釋中,您可以考慮使用它的管理存儲引擎「Raven.Munin」,它是一個單一程序集。