我處於C#(它將作爲Windows服務運行)內存緩存設計的初始階段。預計一旦投入生產,平均可以容納近百萬個物體(各種類型)。某些緩存項目的大小可能高達10MB(或更多)。 我考慮了各種數據存儲解決方案,現在我決定使用DataTable或SQLite內存中的實例作爲緩存存儲。在這一點上我的問題是內存中緩存 - SQLite vs System.Data.DataTable
- 你認爲一個DataTable的性能將與這麼多的記錄數?
- 你覺得和SQLite的解決方案會是一個矯枉過正?(由於SQLite是設計成一個「數據庫」,我可能不是真的想所有這些數據庫相關的水暖活動)
性能是最高優先級我。
編輯
添加一些細節。
- 這些緩存項不只是鍵值對,他們有兩個 (截至目前),性質(固定和鎖定的項目),這會影響 其可用性。每個查找將包括所有三個 屬性。
- Memcached已經考慮過了,但在這一點上,這不是一個 選項,主要是由於我們的SLA限制(這就是我可以說的關於 它)。
- 並非所有項目都是10MB大小。
- 我非常肯定,這些項目中的很多將僅僅是 數字和小字符串值。
- 我相信RAM的可用性不是問題。
由於提前, 詹姆斯
這真的取決於您的查詢要求。如果您需要相對複雜的臨時查詢,您可能需要使用SQLite解決方案。但是,如果每個查詢都要使用鍵/索引,那麼DataTable應該足夠了。 – rossipedia
你有10,000,000MB的RAM? –
在作爲服務運行的內存緩存中?像memcached?爲什麼重新發明輪子?如果你的第一個想法是在內存中使用數據表或SQL數據庫,那麼你不會這麼做。 – Chris