イベントソーシングアーキテクチャを実装していて、集計にメモリに大量のレコードが含まれています。メモリ内のレコードのどれだけの.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();
}
を、私が持っている:
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
だから私は億個のレコードを格納していますし、各レコードは10バイトです(おそらくUnicodeなので20としましょう)。だから私はメモリに約2GBのデータを保存しています。ただし、アプリケーションは15GBまで拡張されます。
理想的にはIDictionaryに物事を保存したいと思います。オーバーヘッドを減らすためにできることはありますか?
大量のデータをメモリに保存するイベントソーシングアーキテクチャで働いていた人は、これとあなたの集計をどのように構築したかについての経験を共有してください。この質問のための
なぜ集計をメモリに保存しますか? –
集計をデータベースに格納すると、CRUD操作とオブジェクト・リレーショナル・マッピングを行う必要がないようなイベント・ソーシングの利点が失われますか? – Sandy
あなたは何かを緩めず、スケーラビリティを得ることができます。 –