09月01日

質問者さん

DDDにおける大量データに対してのbulkipdateにはどのように対応すべきなのでしょうか?(レコードが多く、ひとつずつインスタンスに詰め替えると間に合わないケースを想定しています。)

09月09日

かとじゅん

かとじゅんさん

DDDにおける大量データのbulk updateについて質問ですが、これはDDDの考え方とは直接的な関係がないものの、実装上重要な課題ですね。 大量データの処理に対しては、以下のようなアプローチが考えられます 1) バルク更新メソッドの導入: リポジトリインターフェースにバルク更新用のメソッドを追加することで、効率的な更新が可能になります。例えば: public interface UserAccountRepository { void store(List<UserAccount> aggregates) throws RespositoryException; } この方法により、複数のエンティティを一度の操作で保存できます。 2) ストリーム処理の活用: データ量が非常に多く、Listにバッファリングすることさえ困難な場合は、RxJavaのようなリアクティブストリーミングライブラリを使用することで、メモリ効率の良い処理が可能になります: public interface UserAccountRepository { Single<Integer> store(Flowable<UserAccount> aggregates); } https://github.com/ReactiveX/RxJava https://www.reactive-streams.org/ 3) 分散処理フレームワークの活用: データ量が単一ノードの処理能力を超える場合、Apache Sparkのような分散処理フレームワークの使用を検討すべきです。ここでは実装の詳細に触れませんが、Sparkを使用することで、以下の利点があります: - 大規模データの効率的な処理: ペタバイト級のデータでも処理可能です。 - 分散コンピューティング: 複数のマシンにわたってデータ処理を分散させます。 - インメモリ処理: データをメモリ上で処理することで、高速な演算が可能です。 - 柔軟なAPIと多言語サポート: Java, Scala, Python, R等多様な言語でSparkを利用できます。 ご参考までに。

かとじゅんさんに 質問してみましょう!

かとじゅん

かとじゅん

Chatwork社テックリード/DDD/Scala,Rust/A-CSM,CSPO,CSD/NLP Practitioner/お仕事のご相談は➡ https://t.co/e6L5mvqaIx / 質問は➡https://t.co/m3VwQnynVZ / Github sponsor ➡ https://t.co/JC9amBhwM9

Tips質問回答方針

Tips額に応じて優先して詳細に回答します。

Tips報酬金額を選択する

(Tips質問者は回答全文をメール受領できます)

¥0(無料質問)

かとじゅんさんが

回答したTips質問

¥500

いいね!

12月01日

CQRS/ESを使うべきではないケースは、どのようなものがありますか?

かとじゅんさんが

「いいね」した質問

¥500

いいね!

12月01日

CQRS/ESを使うべきではないケースは、どのようなものがありますか?

いいね!

11月26日

どんなに高カロリーなものを食べても健康状態の意味で、べき等だった時代に戻りたいです。

かとじゅんさんが

最近答えた質問

09月09日

DDDにおける大量データに対してのbulkipdateにはどのように対応すべきなのでしょうか?(レコードが多く、ひとつずつインスタンスに詰め替えると間に合わないケースを想定しています。)

08月18日

続き質問

元の質問の趣旨とは外れた質問をいたします。 生SQLを使う際、infra層のテストはどのように行っていますか? クエリが期待通りに発行されることのテストなどをしていますか?

07月15日

オンプレ→クラウド→オンプレとクラウドのハイブリッドとか、オンプレ→クラウド→オンプレへの揺り戻しとか時代の変遷があると思っていて、これは集中=オンプレ、クラウド=分散と読み替えてもある程度意味は通じるような気がしています。ここで、このループを超えて、「オンプレ→クラウドの次に来るものは何か。」ということに私見はありますか。