programing

mongodb에서 고유 객체 ID를 생성하는 방법

showcode 2023. 5. 25. 22:12
반응형

mongodb에서 고유 객체 ID를 생성하는 방법

Java에서 Mongodb를 사용할 때 클라이언트에서 Object id를 생성하고 싶습니다.그러나 레코드를 삽입하기 전에 ObjectId() 메서드에서 생성된 id가 고유한지 확인하기 위해 mongodb를 먼저 쿼리해야 합니다.mongodb에 두 번 액세스하지 않고 고유한 객체 ID를 생성할 수 있는 방법이 있습니까?

데이터베이스를 참조하지 않고 클라이언트에서 ObjectId를 생성할 수 있습니다.이러한 ID는 고유합니다(동일한 개체 ID 두 개를 얻으려면 매우 노력해야 합니다).

ObjectId id = new ObjectId();

// or this
ObjectId id = ObjectId.get();

개체 ID는 RDMS에서 사용하는 순차 ID와 다릅니다.개체 ID 사양에 따라 올바르게 생성된 경우 개체가 고유한 것에 대해 걱정할 필요가 없습니다.

새 개체 ID를 재사용하는 대신 항상 새 개체 ID를 생성하기만 하면 됩니다.

MongoDB Java Driver 3.3.0 이후 ObjectId를 생성하는 방법은 다음과 같습니다.

매개 변수 없이 생성자 사용: 고유 ObjectId를 제공합니다.

1. ObjectId id1 = new ObjectId(); //Generates unique id 

    1.1. ObjectId id2 = ObjectId.get(); //Calls new ObjectId();

매개 변수화된 생성자 사용: 매개 변수는 ObjectId의 고유성에 영향을 미칩니다.

2. public ObjectId(byte[] bytes) // Receives a byte array of size 12.

3. public ObjectId(String hexString) //Receives a String that is a hexadecimal representation of 12 bytes.

4. public ObjectId(Date date) // Receives a Date object

5. public ObjectId(Date date, int counter) //Receives date and a counter

6. public ObjectId(Date date,
            int machineIdentifier,
            short processIdentifier,
            int counter) //Receives Date, MachineId, PID and counter.

7. public ObjectId(int timestamp,
            int machineIdentifier,
            short processIdentifier,
            int counter) //Receives Epoch time in sec, MachineId, PID and counter.

ObjectId 이해:

ObjectId는 12바이트로 구성되며 다음과 같이 나뉩니다.

               ObjectID layout

0   1   2   3   4   5   6   7   8   9   10  11

|time          |machine    |pid    |inc      |

언급URL : https://stackoverflow.com/questions/8723229/how-to-generate-unique-object-id-in-mongodb

반응형