UUID
문자와 숫자의 조합으로 이루어져있고 길이가 길어 각각의 데이터를 식별하고 구분하기 위해 사용하고 랜덤하게 생성된다고 한다. 우리 각자 모두가 이름이 있어 구별할 수 있는 것처럼 데이터를 식별하기 위해 사용한다고 한다.
UUID는 nanoid보다 더 긴 길이의 식별자로 매우 낮은 충돌과 넓은 범위에서 고유성과 신뢰성을 보장하고 널리 알려진 표준이라 많은 시스템과 라이브러리를 지원하고 있다고 한다.
nanoid
UUID보다 짧고 간단한 식별자를 21개의 알파벳과 숫자로 이루어진 문자열로 구성하여 랜덤하게 생성한다고 한다. 우리가 친구들을 부를 때 짧게 별명을 사용하는 것처럼 짧은 식별자를 사용해 데이터를 식별한다고 한다.
nanoid도 랜덤하게 식별자를 생성해주지만 암호학적으로는 안전하지 않다고 한다. 그러나 충돌 확률이 매우 낮아 대부분의 상황에서 사용하기 괜찮다고 한다. URL과 같이 제약이 있는 환경에서 사용하기 적합한 반면 겹칠 수 있는 가능성이 존재한다고 하고 UUID와 달리 널리 인정받은 표준이 아니기 때문에 모든 시스템에서 지원하지 않을 수도 있다고 한다.
느낀 점
UUID보다 nanoid가 가볍다고 하여 여러번 추천을 받았었는데 둘 다 장단점이 있어 무조건적인 사용보다 사용하는 환경과 요구사항에 따라 사용하면 좋을 것 같다.