私はアプリケーションを構築しましたが、現在、かなり標準的なユーザー テーブルがあります。
int id、varchar メール、varchar パスワード
これを DynamoDB に切り替えるとしたら、このテーブルをどのように作成しますか?
メールアドレスにハッシュキーを使用すると、メールを更新する機能を提供できなくなります。ID を保存するためにハッシュを使用すると、高価なスキャンを使用する必要があります。 1Mb の制限によって制限されます。
アドバイスをお願いします。ありがとう、マーク
私はアプリケーションを構築しましたが、現在、かなり標準的なユーザー テーブルがあります。
int id、varchar メール、varchar パスワード
これを DynamoDB に切り替えるとしたら、このテーブルをどのように作成しますか?
メールアドレスにハッシュキーを使用すると、メールを更新する機能を提供できなくなります。ID を保存するためにハッシュを使用すると、高価なスキャンを使用する必要があります。 1Mb の制限によって制限されます。
アドバイスをお願いします。ありがとう、マーク
メール フィールドでフィルタリングする必要があるため、ID をハッシュとして使用するのはコストがかかると思いますか?
非キー列でクエリをフィルタリングする必要がある場合、多くの場合、そのためのインデックスの作成を終了します。
DynamoDBには組み込みのセカンダリ インデックスはありませんが、独自のソリューションを実装するのは非常に簡単です。
あなたが指摘したように、メインテーブルはIDをhashとして使用でき、別のテーブルがインデックスとして機能します。次のようになります。
varchar email, int id
セカンダリテーブルのハッシュ キーを電子メールで送信します。同じ電子メールで複数のユーザーを持つことが許可されている場合は、IDを範囲として使用して簡単にすることができます。そうでない場合は、単純な列が適しています。
インデックス作成用に別のテーブルを使用すると、メンテナンスに手間がかかります。元CTOからの冗長モデルに出くわしました。
あなたのテーブルの場合: USER
RDBMS:
ID、メールパスワード
1、senthil3569@stack.com、質問
ダイナモDB:
キー、ID、メール、パスワード
1、1、senthil3569@stack.com、質問
senthil3569@stack.com、1、senthil3569@stack.com、尋ねる
1 つのレコードを保存する代わりに、インデックスのない列を使用してフェッチするために冗長に保存しています。
解決策が明確であることを願っています。