問題タブ [dynamo-local]
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.
amazon-dynamodb-streams - DynamoDB ローカル: Streams.getRecords が TrimmedDataAccessException を返す
DynamoDB ローカルを使用して、nodejs (Javascript SDK) から統合テストを実行しています。getRecords を呼び出すと、「TrimmedDataAccessException」が発生します。AWS (ローカルではない) で DynamoDB に対して同じコードを実行すると、正常に動作します。手順は次のとおりです。
- DynamoDB を実行する
- createTable "イベントストア"
- createTable "音楽"
- describeTable "EventStore" (LatestStreamArn を取得します)
- 「LatestStreamArn」として返される describeStream (ShardId を取得します)
- getShardIterator with ShardIteratorType "LATEST"
- 「ミュージック」テーブルにレコードを入れる
- 「EventStore」テーブルにレコードを入れる
- 「EventStore」ストリームからの getRecords
「put」コマンドの順序は重要です。最初に "EventStore" に配置するとすべて正常に動作しますが、最初に "Music" に配置すると失敗します。ただし、順序を変更するとアプリケーションロジックが間違っているため、順序を変更するだけで問題になります。
DynamoDB を実行する
createTable
createTable (応答)
describeTable(イベントストア)
describeTable(EventStore) レスポンス
記述Steam
describeStream レスポンス
getShardIterator
getShardIterator の応答
put(テーブル名:音楽)
put(テーブル名: イベントストア)
getRecords (イベントストア)
getRecords (EventStore) 応答
node.js - DynamoDBLocal : DB を開始および停止するにはどうすればよいですか?
「dynamodb_helper.js」があり、local-dynamoを使用して DynamoDB をローカルでエミュレートします。テストの前にサーバーを起動して正常に実行できましたが、stopDB() が機能していないようです。どんな助け/提案も大歓迎です。したがって、サーバーの子プロセスは、テストが終了した後も引き続き実行されます。
以下の私のコードを見つけてください。
titan - 頂点/エッジが追加されると、titan + dynamoDB (ローカル) でグラフ処理がますます遅くなる
AWS dynamoDB ローカル実装を 16GB マシンのストレージ バックエンドとして使用して、titan 1.0 を使用しています。私の使用例では、頂点とエッジを 120K のオーダーで定期的に含むグラフを生成します。メモリ内に新しいグラフを生成するたびに、DB に保存されているグラフをチェックし、(i) 存在しない頂点/エッジを追加するか、(ii) 既に存在する場合はプロパティを更新します (存在は「ラベル」によって決定されます)。および「値」属性)。'Value' プロパティがインデックス化されていることに注意してください。トランザクションは 500 個の頂点のバッチでコミットされます。
問題:新しいグラフを処理するたびに、このプロセスが遅くなることがわかりました (最初のグラフは最初に空のデータベースで 45 分で終了し、2 番目は 2.5 時間、3 番目は 3.5 時間、4 番目は 6 時間、5 番目は 10 時間など) )。実際、特定のグラフを処理するとき、開始時はかなり高速ですが、徐々に遅くなります (最初のバッチは 2 ~ 4 秒かかり、その後、500 ノードの同じバッチ サイズで数百秒に増加します。バッチには 1000 ~ 2000 秒かかります)。これは処理時間だけです (以下のアプローチを参照)。コミットには常に 8 ~ 10 秒かかります。jvm ヒープ サイズを 10G に設定しましたが、アプリが実行されているときに、最終的にすべてを使い果たしていることに気付きました。
質問:この動作は予期されたものですか? ここで何かが間違っているようです(私の設定/アプローチのどちらかですか?)。どんな助けや提案も大歓迎です。
アプローチ:
- インメモリ グラフのルート ノードから開始して、すべての子ノードを取得し、キューを維持します。
子ノードごとに、DB に存在するかどうかを確認し、存在しない場合は新しいノードを作成し、いくつかのプロパティを更新します。
/li>
関数の作成:
スキーマ定義: (いくつかのインデックスを表示)
注:
"EdgeLabel" = Constants.EdgeLabels.Uses
"EdgeProperty1" = Constants.EdgePropertyKeys.EndpointId
"EdgeProperty2" = Constants.EdgePropertyKeys.Timestamp
javascript - Node.js 接続 ECONNREFUSED 127.0.0.1:8000 DynamoDB ローカル エラー
このNPM プラグインを使用して、Node アプリ内のローカル DynamoDB ローカル サーバーの作成を処理しています。何らかの理由で、次のエラーが表示されることがあります。理由はわかりませんが、テストの特定のセクションでテストを実行すると、常に発生するようです。
それは間違いなく毎回起こるわけではありません。たぶん50%くらい。非常に奇妙な。
このエラーは、DynamoDB ローカル サーバーの起動に失敗したことを意味することを読みました。しかし、それ以上の詳細を提供していないため、理由はわかりません。
ああ、これがサーバーを作成するための私のコードです。
何か案は?
junit - 単体テスト クラスまたはシングルトンのインスタンス化ごとに DynamoDbLocal の複数のインスタンス
単体テスト ケースに DynamoDbLocal サーバーを使用しようとしています。そして2つの選択肢を思いついた、
クラスの前にローカルサーバーを開始し、クラスの後に停止するjunitクラスルールを定義します。したがって、基本的には、単体テスト クラスごとにサーバーを起動および停止します。
また
シングルトン インスタンス:
どちらをお勧めしますか?これを行う方が良いですか? Guice依存性注入フレームワークで使用できるはずです。
java - プログラムで dynamodblocal を使用して http://localhost:{port} に到達できない
com.amazonaws の dynamodblocal (maven の v 1.10.5.1) を使用して、inMemory dynamoDB をローカルに作成しています。
ローカル サーバーを起動する Java コードは次のとおりです。
これは、ローカル dynamodb を正常に開始したことを確認するログです。
http://localhost:60677/shell
ここではポート 60677 が使用されており、Web ブラウザーから手動で開くことができます。しかし、プログラムでアクセスしようとすると機能しません。私は取得し続けHTTP/1.1 500 Server Error
ます。
これにより、500エラーが発生します(ポートはの出力になりますgetAvailablePort()
):
また、コマンドラインから次のコマンドを起動すると、次のようになります。
プログラムで接続しようとすると、正常に動作します。すべての CRUD 操作をプログラムで実行できます。
私は何を間違っていますか?