http://code.flickr.com/blog/page/4/MongoDBの疑似主キー - 悪い考えですか?
このブログ記事は、Flickrのでは開発者からのものであり、MySQLを使用してシャードデータベース環境での写真のGUIDを生成し、その簡略化されたアプローチを概説します。
私はMongoDBを埋め込みドキュメントに格納されているアイテムと同様の要件を持つデータストア用のアプリケーションに取り組んでいます。基本的には、コレクション内のドキュメントはアイテムのリストを表し、その後個々のアイテムはの中にあります。それぞれのドキュメントには、ルックアップの目的で何らかの識別子も必要です。アイテムではないリストキーは実際にはメタデータであり、独自のコレクションを持つ必要はないので、別のコレクションにアイテムを入れないでください。理想的にはそれは1つの文書でなければなりません。
私は、この問題を解決するためにブログ投稿に詳述されたアプローチを実装できると考えていました。これらのエントリのGUIDを生成し、最後に使用した値を保存するエンドポイントです。問題は、このアプローチがmongoのデータストアをシャーディングするときに問題を引き起こすかどうかはわかりません。 Mongoをいくつかのマシンに配布した経験はありません。データを保存して_id
キーを適切に設定すると、アプリケーション層にこのエンドポイントをチェックさせることができますが、データセットに対するクエリにどのように影響するか分かりません。
この種のGUIDシステムを設定するのは間違いですか?私はそれが一般的にNoSQLの原則のいくつかに逆行することを認識していますが、文書が埋め込まれているので、そこには何がありますか?
MongoDBで提供されている 'ObjectId'機能を単に使用してみましたか? http://www.mongodb.org/display/DOCS/Object+IDsこれらは、自分のフィールドでも、コレクション内のドキュメントのIDフィールドでも使用できます。 –
@Hightechriderこれは本質的に私が不確かなものです.OptimIdが唯一のプライマリIDであり、ドキュメント内に一度しか表示されないデフォルトを中断すると、行の書き込み/読み取りをシャットアウトしてしまうことになります。私が読んだほうが、ドキュメントからは問題ではないようです... – DeaconDesperado
このように使用するのは問題ありません。 –