問題タブ [amazon-dynamodb-streams]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
822 参照

amazon-web-services - DynamoDB ストリームからレコードの時系列リストを取得する方法は?

ここに関連する質問がいくつかあります。

  1. ストリームに関する DynamoDB ドキュメントには次のように記載されています。

アプリケーションが複数のシャードからのレコードを並行して処理できるように、シャードはその親テーブルでの高レベルの書き込みアクティビティに応じて分割される場合があります。

私の理解では、シャードが 2 つの子シャードに分割されると、DynamoDB は親シャードへの書き込みを停止し、ラウンドロビン方式で両方の子シャードへの書き込みを開始します。この場合、どうすればレコードの時系列を確立できますか? 両方の子シャードを読み取り、アプリケーション層でレコード シーケンス番号によってレコードを並べ替える必要がありますか? ある時点で 2 番目の子が 2 つの孫シャードに分割された場合はどうなりますか? レコードを順番に取得する前に、子シャードと孫シャードの両方を読み取る必要がありますか?

  1. 前述のドキュメントには次のように記載されています。

シャードには系列 (親と子) があるため、アプリケーションは子シャードを処理する前に常に親シャードを処理する必要があります。

ドキュメントで提供されている低レベルの DynamoDB ストリーム API の例を見ると、// Get the shards in the streamコメントの下で、コードが単に特定のストリームのすべてのシャードを取得し、リストを反復処理することがわかります。親子関係を気にせずにシャードを分割できます。

レコードのリストを時系列で取得したい場合、特定のストリームからすべてのレコードを読み取り、アプリケーション層のレコード シーケンス番号で並べ替える必要があるということですか?

  1. DynamoDB ストリームから時系列のレコード順を取得しようとするのは、まったく悪い考えですか? 私が解決しようとしている具体的な問題について私に聞かないでください。私はここで理論化しています。

アップデート:

上記の質問は、過去 24 時間のストリーム レコードの処理について考えていたときに思い浮かびました。しかし、そもそもなぜ過去 24 時間のストリーム データを処理したいのでしょうか?

ストリームは、そもそもリアルタイムのテーブル変更処理のために構築されていると思います。また、Lambda 関数をトリガーしてストリーム レコードをリアルタイムで処理することは、より理にかなっています。

過去 24 時間のストリーム レコードを処理するための唯一のユース ケースは、何らかのストリーム レコード処理障害回復 (非常に迅速に検出された障害) です。

おまけの質問:

  1. 過去 24 時間の DynamoDB ストリームを掘り下げたいユースケースを思いつきますか?
0 投票する
2 に答える
731 参照

amazon-dynamodb - すべてのレコードの再処理 - DynamoDB ストリーム

Awsラムダ関数+ファイアホースでDynamoDBストリームを使用して、データをredshiftと同期しています。すべての DynamoDB レコードをストリームに追加して再処理することが可能かどうかを知りたいです。そうでない場合、正しいアプローチは何ですか?

0 投票する
1 に答える
645 参照

amazon-dynamodb - e コマース注文テーブルのモデリング - DynamoDB + SNS + SQS

e コマース フロントエンドからの注文を格納する DynamoDB テーブルを作成します。ユーザーが注文すると、DynamoDB テーブルに保存されます。このテーブルには、プライマリ キー (order_id) と 2 つのグローバル セカンダリ インデックス (メール、SSN) があります。

注文状況でも問い合わせたいです。したがって、特定の日付の特定のステータスのすべての注文を取得したいと思います。この動作をモデル化する最良の方法はどれですか?

ソートキーで別のグローバルセカンダリインデックスを作成しますか?

0 投票する
1 に答える
139 参照

amazon-web-services - クライアントは、追加/削除/分割された DynamoDB ストリーム シャードをどのように処理する必要がありますか?

アマゾン開発ガイドから:

シャードは一時的です: 必要に応じて自動的に作成および削除されます。シャードは、複数の新しいシャードに分割することもできます。これも自動的に行われます。(親シャードが子シャードを 1 つだけ持つことも可能であることに注意してください。)アプリケーションが複数のシャードからのレコードを並行して処理できるように、シャードはその親テーブルでの高レベルの書き込みアクティビティに応じて分割される場合があります。

私のアプリケーションでは、どのシャード データが由来するかはあまり気にしません。すべての変更を処理したいだけです。ただし、ストリーム プロセッサをセットアップするときは、シャードまたはシャードのセットにサブスクライブする必要があります。シャードをいつでも削除/分割/追加できる場合、すべての変更を取得していることをどのように確認できますか?

クライアントは変更のためにシャードのリストをポーリングする必要がありますか?

0 投票する
1 に答える
1365 参照

streaming - DynamoDB ストリームの伝搬レイテンシーを測定するにはどうすればよいですか?

DynamoDB Streams + Kinesis Client Library (KCL) を使用しています。イベントがストリームで作成されてから KCL 側で処理されるまでのレイテンシーを測定するにはどうすればよいですか?

私が知っているように、KCL のMillisBehindLatestメトリクスは (DynamoDB ストリームではなく) Kinesis ストリームに固有のものです。 approximateCreationDateTimerecord 属性には分レベルの概算があり、1 秒未満の遅延システムでの監視には受け入れられません。

DynamoDB ストリームのレイテンシを監視するための便利なメトリクスを教えてください。

0 投票する
0 に答える
103 参照

cassandra - データのストリーミングにはどれを使用すればよいですか? AWS で DynamoDB または Cassandra を使用した Spark ストリーミング

ユーザーのクリック データをストリーミング データとして保存する作業を行っています。AWSでそれを行う方法について調査しています。これを行う 1 つの方法は、DynamoDB を使用して、AWS のすべてのネイティブ ツールと共にデータを保存することです。もう 1 つの方法は、Cassandra で Spark ストリーミングをインストールすることです。Datastax は、それらを AWS にインストールするための統合パッケージを提供しています。ネットで見つけた参考書より。AWS のネイティブ DynamoDB を使用すると、コストが高くなる可能性があるようです。ただし、システムの保守にかかる時間を節約できます。以前に経験したことがあり、両方の長所と短所についていくつかの洞察と提案を提供できる人はいますか? さらに、データベースがラムダアーキテクチャなどのバッチデータとストリーミングの両方を処理できるシステムを作成したいと考えています。したがって、ストリーミング データとバッチ データの両方が同じデータベースになります。私の知る限り、Cassandra はこのケースに適しています。DynamoDB もサポートしていますか? どうもありがとう!

0 投票する
1 に答える
416 参照

database-design - いいねやコメントを更新するための DynamoDB ストリーム

バックエンドに DynamoDB を使用しています。いいねとコメントを SQL のように別のテーブルに保持し、別のテーブルに投稿ごとのコメントといいねの数を保持する必要があります

合計 3 テーブル

TableName - HashKey、RangeKey、属性

いいね - PostId, UserName, -

コメント - PostId、UserName、{text: "Jo jo"}

カウント - PostId, -, {コメント: 15, いいね!: 15}

Likesテーブル/コメントテーブルに行を挿入した後、CountsテーブルのLikesカウントを更新する必要があります

今、私は自分のアプリ コード (Java AWS SDK) でこれを行っています。

ストリームとトリガー (Lambda 関数) について聞きました - ストリームを使用してカウント テーブルを更新するにはどうすればよいですか

ストリームに関するいくつかの記事を読みました。私の理解によれば、これらは、そのアクションを実行できない環境を使用しているときに役立ちます。

誰でもこれを明確にしてもらえますか?

前もって感謝します...