データベースでUIDをUIDとして使う
1807 ワード
設定したObjectIdは範囲が小さすぎて、UIDに変えてデータの固有IDにします.
もしあなたが過去にWeb開発の経験があるなら、ここに来て疑問を持ち始めます.最初の問題は「ObjectIdの数量の限界ですか?」ここでは答えられません.この答えは重要ではないので、答えを正確に知りたいです.
上記の問題より、あなたを信じてもっと聞きたいです.
UUIDを自分で生成するためには、まずNodeJSのモジュールnode-uuidをインストールしなければなりません.
もしあなたが過去にWeb開発の経験があるなら、ここに来て疑問を持ち始めます.最初の問題は「ObjectIdの数量の限界ですか?」ここでは答えられません.この答えは重要ではないので、答えを正確に知りたいです.
上記の問題より、あなたを信じてもっと聞きたいです.
ObjectId ?
(Scale), ID ?
一般的には、MongoDBで設定されているObjectIdはかなり役に立ちますが、大型のWeb Serviceを構築するか、将来の拡張性を維持するためには、ObjectIdの代わりにUUUIDをUUIDにUIDフィールドを追加する必要があります.しかし、MongoDB自体はUIDを生成していませんので、UIDを使用するには、UIDフィールドを作成してください.MongoDBを事前に生成したObjectIdを使わずに私達が送ったIDに変えさせます.UUIDを自分で生成するためには、まずNodeJSのモジュールnode-uuidをインストールしなければなりません.
npm install uuid
UUIDを生成し、insertで使用する.var uuid = require('node-uuid');
var mongodb = require('mongodb');
var mongodbServer = new mongodb.Server('localhost', 27017, { auto_reconnect: true, poolSize: 10 });
var db = new mongodb.Db('mydb', mongodbServer);
/* open db */
db.open(function() {
/* Select 'contact' collection */
db.collection('contact', function(err, collection) {
/* Generate UUID(16 Bytes) and convert to BinaryData object for mongodb */
var uuidBinary = new Buffer(uuid.v1({}, []));
var id = mongodb.BSONPure.Binary(uuidBinary, mongodb.BSONPure.Binary.SUBTYPE_UUID);
/* Insert a data with uuid */
collection.insert({
_id: id,
name: 'Fred Chien',
email: '[email protected]'
}, function(err, data) {
if (data) {
console.log('Successfully Insert');
} else {
console.log('Failed to Insert');
}
});
});
});
上記のサンプルプログラムではUUIDをMongoDB BSONのBinaryData形式に変換しています.これは有効性を考慮するためです.純粋な文字列をUnique IDとして使っていますので、データベース検索ではBinaryData Objectよりも遅くなります.