我正在實現事件源代碼體系結構,並且我的聚合將在內存中包含大量記錄。爲了測試在內存中記錄的.NET存儲有多好大量的,我創建了一個簡單的程序:事件源頭:在內存中存儲大量記錄的開銷
static void Main(string[] args)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
int maxRecords = 100000000;
for (int i = 0; i < maxRecords; i++)
{
dict.Add(i.ToString(), new String('A', 10));
}
Console.WriteLine("Done");
Console.ReadLine();
}
在config文件中,我有:
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
所以我存儲1億條記錄和每個記錄是10個字節(假設20個,因爲它可能是Unicode)。所以我將大約2GB的數據存儲在內存中。然而,應用程序增長到15GB。
理想情況下,我想存儲在IDictionary中的東西。有什麼我可以做的,以減少開銷?
如果有人從事一個在內存中存儲大量數據的事件採購架構,請分享您的經驗以及您如何構建您的聚合。
爲什麼要將聚集存儲在內存中? –
如果我將Aggregates存儲在數據庫中,那麼我是否會因爲不需要執行CRUD操作和對象關係映射而喪失事件採購的一些好處? – Sandy
你不會丟失任何東西,並且你獲得了可擴展性。 –