大量の注文トランザクション レコードをコマース Web サイトからリポジトリに保存することを計画しています (ここでは Cassandra を使用する必要があります。これが私たちの DB です)。このコンポーネントを commerceOrderRecorderService と呼びましょう。
問題の 2 番目の部分は、これらの注文を処理して、他のダウンストリーム システムにプッシュしたいということです。このコンポーネントは、batchCommerceOrderProcessor と呼ぶことができます。
commerceOrderRecorderService と batchCommerceOrderProcessor はどちらも Java プラットフォームで実行されます。
これらのコンポーネントの設計について提案が必要です。特に以下:
commerceOrderRecorderService
パフォーマンスとスケーラビリティを考慮して、列を設計する最善の方法は何ですか? 注文全体 (複雑なエンティティ) を単一の JSON オブジェクトとして保存する必要がありますか? 注文属性に関する検索要件はありません。少なくとも、バッチ プロセッサによって処理されるまで待つことができます。1 つの注文に多くのサブアイテムが含まれている可能性があることを考慮してください。このようなデータ構造の列を設計するのはやり過ぎかもしれません
データ量が多くなることを考えると、何が重要なのか。ピーク時には毎秒 10 トランザクションとしましょう。Cassandra でそのようなトランザクション データを作成するためのライブラリまたはベスト プラクティスはありますか? TTLも有効に使えますか?
batchCommerceOrderProcessor
- 処理のために行をどのように取得する必要がありますか?
- バッチ プロセッサのマルチスレッド実装 (および複数のノードで実行される可能性がある) が行レベルで分離されるようにする方法。つまり、2 つのインスタンスが同じ行を同時に読み取って処理することはありません。重複処理はありません。
- 圧縮などの cassandra プロセスに対応しながら、一定期間後にデータをパージする方法。
設計入力、コード サンプル、およびライブラリへのポインタを高く評価します。ありがとう。