データベースでUIDをUIDとして使う

1807 ワード

設定したObjectIdは範囲が小さすぎて、UIDに変えてデータの固有IDにします.
もしあなたが過去に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よりも遅くなります.