メイン データベースとして redis に依存する node.js アプリケーションを作成しており、ユーザー情報はこのデータベースに格納されています。
現在、ユーザー データ (電子メール、パスワード、作成日など) を という名前のハッシュで保持していuser:(incremental uid)
ます。email:(email)
そして、値を持つキー(same incremental uid)
。
誰かがログインすると、アプリは電子メールに一致するキーを検索してemail:(email)
を返し、(incremental uid)
でユーザー データにアクセスしますuser:(incremental uid)
。
これはうまく機能しますが、ユーザー数が数百万に達すると (可能性はありますが、多少遠い問題です)、データベースのサイズが劇的に増加し、いくつかの問題が発生し始めます。
次のようなハッシュバケットにソートするために使用できる整数に電子メールをハッシュする方法を考えています(疑似コード):
hash(thisguy@somedomain.com) returns 1234
1234 % 3 or something returns 1
store { thisguy@somedomain.com : (his incremental uid) } in hash emailbucket:1
次に、この uid で email を検索する必要がある場合thisguy@somedomain.com
は、同様の手順を使用します。
hash(thisguy@somedomain.com) returns 1234
1234 % 3 or something returns 1
lookup thisguy@somedomain.com in hash emailbucket:1 returns his (incremental uid)
だから、リスト形式の私の質問:
- これは実用的ですか / より良い方法はありますか?
- 電子メールを数桁にハッシュするにはどうすればよいですか?
- これらのハッシュをバケットに整理する最良の方法は何ですか?