지금까지의 경험에 따르면 저는 PK선택을 항상 Auto Incremnet로 했어요. 자료 검색을 하다 우연히 발견했던 것 "UUID vs Auto Increment 중 PK 선택하기"
거의 모든 프로젝트들은 Auto Incremnet 방식을 선택하는데, 그 이유는 무엇이고 UUID의 장점과 사용 이유가 궁금해졌어요.
UUID를 BINARY(255), VARCHAR(36) 등 다른 타입으로 지정할 경우 발생하는 문제점이 있어요.
하이버네이트는 UUID를 저장할 때 binary로 저장하는 것을 기본으로 해요. BINARY(255) 등 16바이트인 UUID 보다 큰 값으로 지정하면 MySQL은 패딩값을 넣어서 채워요.
그래서 UUID에 해당하는 컬럼을 BINARY(16)으로 지정해주어야 해요.
(출처 : Hirberante ORM 5.4.33.Final User Guide)
많은 자료들을 보면 다음과 같이 정리해요.
애플리케이션 내부용 키로는 자동증가 pk, 외부에 공개할 키로는 uuid를 사용하는 것을 권장힌다.
각 방식의 장점을 잘 활용하는 정리 같아요.
오늘도 큰 결론은 똑같은거 같아요.
모든 기술은 trade-off를 갖고 있으며, 상황에 따라 적절히 사용할 수 있는 능력을 키워야 한다.
Best practices on primary key, auto-increment, and UUID in SQL databases
JPA 덕분에 DB에서 삽질한 이야기