私はdynamiskdbテーブルを持っています。ここで、hashKeyはuserIdで、範囲キーはタイムスタンプです。dynamodb mapper、ハッシュ/範囲キーに関係なく重複レコードを防ぐ方法
dynamo dbテーブルにレコードを作成するいくつかのレガシーコードがあり、そのデータにはフィールドthreadId(レガシーデータベースのプライマリキー)があります。
重大なメッセージングプラットフォームのおかげで、重複したthreadIdsを持つレコードを取得することがあります。この場合、本番データベースには1つのレコードしか必要ありません。
私は次のように条件を設定しようとしました:
DynamoDBSaveExpression saveExpr = new DynamoDBSaveExpression();
saveExpr.setExpected(new ImmutableMap.Builder()
.put("threadId", new ExpectedAttributeValue()
.withValue(new AttributeValue().withS(record.threadId))
.withComparisonOperator(ComparisonOperator.NE)).build());
mapper.save(record, saveExpr);
しかし、これは動作しません。私は確信していませんが、userId/created(ハッシュ/範囲キー)の値が同じでない場合、dynamoは保存式に関係なく新しいレコードを作成します(文書と一致しないようです)。
何か間違っていますか?ハッシュ/範囲キーの値に関係なく重複レコードを防止する方法はありますか?
私はあなたがput("threadId", new ExpectedAttributeValue()
.withValue(new AttributeValue().withS(record.threadId))
.withComparisonOperator(ComparisonOperator.NE)).build());
が代わりになりたいと思います
私は保存式がキーでのみ動作すると思う、THREAD_IDはあなたの例ではハッシュまたは範囲キーですか? – Superaghu
遅く返事を申し訳ありません、はいthread_idはハッシュキーです。 – mark