인프런 커뮤니티 질문&답변

세진:)님의 프로필 이미지

작성한 질문수

Real MySQL 시즌 1 - Part 2

Ep.14 UUID 사용 주의사항

primary key에 시간, uuid로 복합키로 설정하는 경우

해결된 질문

24.07.13 19:28 작성

·

107

·

수정됨

0

안녕하세요!
좋은 강의 감사합니다!

이력 테이블의 대용량 데이터를 저장하기 위해

pk값 설정 시 정수형은 제한이 있다고 생각해서

시간+uuid로 복합키를 설정하려고 하는데요! 레인지 파티션도 사용하려구 하구요! 이렇게 할 경우 결국엔 String타입으로 저장되서 클러스터링 인덱스가 제대로 저장이 될까? 고민이 있었는데요!

이런 고민을 갖고 강의를 보게 되었는데, 강의 내용을 참고해보면

uuid값이 정수형보다 길어서 pk로 사용할 경우

메모리를 많이 차지해서 메모리크기가 큰 인스턴스를 사용해야 하므로 비용처리가 드는걸로 이해했습니다.

uuid대신 snowflake나 sonyflake 라이브러리로 대체하는게 더 좋다고 말씀해주셨는데, 해당 라이브러리가 망하거나(?) 제대로 작동을 안할경우의 위험성도 고려해봐야할것 같다는 생각이 들어서요! 제가 요 라이브러리는 잘 몰라서 여쭤보고자합니다!

그래서 질문은 아래 3가지 입니다!

Q1. 시간+uuid로 복합키로 pk를 설정하거나, 애플리케이션단에서 시간+uuid만든 String 타입을 pk를 설정하는것보다, snowflake 라이브러리 하나만 사용하는게 더 메모리가 효율적인게 맞을까요?

Q2. snowflake가 실제로 현업에서도 많이 쓰이는지 해당 라이브러리가 추후에 제대로 작동을 안할 경우에는 어떻게 대처를 해야 하는지 궁금합니다!

Q3. 추가적으로 uuid관련 내용이 Real Mysql 2권 중 어디에 있는지도 궁금합니다! 목차에서는 찾을 수가 없어서요 ㅠㅠ

답변 2

1

이성욱님의 프로필 이미지
이성욱
지식공유자

2024. 07. 19. 12:25

세진님, 안녕하세요.

 

uuid대신 snowflake나 sonyflake 라이브러리로 대체하는게 더 좋다고 말씀해주셨는데, 해당 라이브러리가 망하거나(?) 제대로 작동을 안할경우의 위험성도 고려해봐야할것 같다는 생각이 들어서요! 제가 요 라이브러리는 잘 몰라서 여쭤보고자합니다!

Snowflake UID 라이브러리는 망해도 그 코드는 그대로 사용하시면 됩니다. Snowflake를 만든 회사를 믿고 사용하는 것이 아니라, In-House로 개발하는 시간을 단축하기 위해서 snowflake Uid를 사용하는 거라 보시면 됩니다. 이 라이브러리는 매우 매우 단순하고, 이미 많은 회사들에서 사용하고 있기 때문에 지금 코드의 안정성을 걱정하진 않으셔도 될거라 (개인적으로) 생각됩니다.

 

Q1. 시간+uuid로 복합키로 pk를 설정하거나, 애플리케이션단에서 시간+uuid만든 String 타입을 pk를 설정하는것보다, snowflake 라이브러리 하나만 사용하는게 더 메모리가 효율적인게 맞을까요?

UUID 값 하나라도 이미 충분히 긴 값인데, 여기에 시간까지 합치면 길이는 더 길어지는 거라.. 굳이 Snowflake랑 비교할 부분이 아닌 것 같아요.

 

Q2. snowflake가 실제로 현업에서도 많이 쓰이는지 해당 라이브러리가 추후에 제대로 작동을 안할 경우에는 어떻게 대처를 해야 하는지 궁금합니다!

이미 위에서 답변드린 듯 합니다.

Q3. 추가적으로 uuid관련 내용이 Real Mysql 2권 중 어디에 있는지도 궁금합니다! 목차에서는 찾을 수가 없어서요 ㅠㅠ

UUID 자체에 대한 내용은 없습니다. 다만 Real MySQL 서적에서는 UUID 컬럼 인덱스의 효율성에 대한 이해를 도울 수 있는 MySQL Clustering Index와 인덱스 키 값 크기에 대한 효율성 등을 자세히 설명드리는 챕터가 있으니, 참고 부탁드려요.

 

Real MySQL 8.0 (1 권)

  • 4.2.1 프라이머리 키에 의한 클러스터링

  • 8.3.3 B-Tree 인덱스 사용에 영향을 미치는 요소

    • 8.3.3.1 인덱스 키 값의 크기

 

0

세진:)님의 프로필 이미지
세진:)
질문자

2024. 08. 04. 08:10

자세히 알려주셔서 감사합니다~!!! 도움이 많이 되었습니다!!

세진:)님의 프로필 이미지

작성한 질문수

질문하기