9

この値は一意であり、mongo データベース内のすべてのユーザーに存在するため、これを Web アプリケーションでユーザー識別子として使用する場合に特に注意すべき点はありますか?

私が検討している特定の問題には、将来ユーザーを転送する必要があるかどうかが含まれます。

4

1 に答える 1

10

...これをWebアプリケーションでユーザー識別子として使用する際の注意事項はありますか?

私が見たいくつか:

  1. URL には適していません。Twitter はhttp://twitter.com/gatesvpのような URL を提供し、ObjectId を使用するとhttp://example.com/ab12ab12ab12ab12ab12ab12のような URL を取得します。
  2. ObjectId の断片化は非常に不十分です。実際にはランダムではなく、ある程度連続しているため、新しいユーザーはランダムに分散するのではなく、シャードにクラスター化されます。
  3. 多くの場合、別の一意の識別子が必要になります。ほとんどの Web サイトには、一意の電子メールまたは一意のユーザー名が必要です。はい、「ユーザー名」に一意のインデックスを作成できますが、2つの一意のインデックスがあり、1つは便利で、もう1つは単なる乱数です。
  4. どこでもこれを参照します。通常、ユーザーのデータは、すべて「userId」へのポインターを持つ複数のコレクションに分散されます。ObjectId (または Guid) を持つということは、これらの大きな ID をあらゆる場所に常にコピーして貼り付け、DB に格納していることを意味します。

私が検討している特定の問題には、将来ユーザーを転送する必要があるかどうかが含まれます。

どこに転勤?ユーザーのデータをMongoDBに保存し始めると、IDは別のDBに転送する際の問題を最小限に抑えます。最新のすべての DB は、何らかの形式の文字列またはバイナリを主キー ID として処理できるため、転送は問題なく機能するはずです。しかし、複雑さのほとんどは ID とは何の関係もありません。

于 2012-07-28T02:59:35.380 に答える