uuid와 맞닥뜨리기 전까지는 id는 autodincrement하기 쉽게 모두 int형으로만 되어있는 줄 알았다.
UUID(Universally Unique IDentifier)는 네트워크에서 id의 uniqueness를 보장하고자 만든 국제 표준이다. UUID 표준에 따라 이름을 부여하면 uniqueness를 완벽하게 보장할 수는 없지만 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.
UUID는 32개의 16진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다.
ex) 550e8400-e29b-41d4-a716-446655440000
사용 가능한 UUID 갯수는 약 10의 38제곱, 340간이다. 기존 int id는 1부터 생성되는데 uuid를 쓰면 id가 겹칠 일이 거의 없어 유용하겠다.
UUID 버전은 다섯 가지가 있다.
이 중에서 타임 스탬프 기반인 버전 1과 랜덤 생성 기반인 버전 4가 자주 쓰인다고 한다.
iOS에서도 버전 4로 uuid가 생성된다고 한다.
UUID에 대한 자세한 내용은 RFC 4122를 참고하자.
postgresql에서 버전 4 기반으로 uuid를 생성하고 싶다면
pgcrypto extension의 gen_random_uuid()를 사용하면 된다.
uuid_ossp extension의 uuid_generate_v4()를 사용해서도 버전 4 기반 uuid를 생성할 수 있다. 그러나 postgresql 9.3 미만 버전이 아니고서는 pgcrypto extension의 gen_random_uuid()를 사용하는 것이 권장된다.
[참고 자료]
[iOS, Swift] UUID는 어떤 원리로 만들어지는 것일까..
위키피디아 UUID
https://dba.stackexchange.com/questions/205902/postgresql-two-different-ways-to-generate-a-uuid-gen-random-uuid-vs-uuid-genera
https://github.com/websauna/websauna/issues/209