개발/Etc
UUID type3, UUID type4 (JAVA)
daisy-day
2021. 8. 24. 22:33
UUID(Universally Unique IDentifier)란?
네트워크에서 id의 uniqueness를 보장하고자 만든 국제 표준이다. UUID 표준에 따라 이름을 부여하면 uniqueness를 완벽하게 보장할 수는 없지만 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.
UUID는 32개의 16진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다.
UUID type3, UUID type4
아래와 같이 UUID 를 만들어서 데이터베이스에 저장했다고 가정해보자.
UUID customerId = UUID.randomUUID();
그리고 이런식으로 UUID를 가지고 오면다른 결과값이 반환되는걸 확인 할 수 있는데, (customer_id 는 16바이트로 지정된 필드이다)
UUID customerId = UUID.nameUUIDFromBytes(resultSet.getBytes("customer_id"));
randomUUID는 type4 이고, nameUUIDFromBytes는 type3 이다.
이 둘의 차이점은 type4 -> 128 비트이고, type3 -> 64비트이다.
128비트(16바이트)인 UUID 를 64비트로 받아와서 다른 결과가 반환이 되었던 것이다.
값을 제대로 가지고 오려면 아래와 같이 64비트를 2번 받아온 다음에 UUID 생성자에 넣어줘야한다.
ByteBuffer byteBuffer = ByteBuffer.wrap(resultSet.getBytes("customer_id"));
UUID customerId = new UUID(byteBuffer.getLong(), byteBuffer.getLong());