안녕하세요. 행복이팀의 귀여운 막내 수빈수입니다. 데이터베이스에 데이터를 저장할 때 기본 키를 어떤 방식으로 할당하면 좋을지에 대해서 알아보는 시간을 가져봅시다 🙂
기본적으로 django는 기본키인 id
값을 따로 모델에 명시하지 않아도 자동으로 부여해주는 AUTO_INCREMENT 전략을 사용하고 있다. 이는 데이터를 INSERT 할 때마다 1씩 증가하면서 PK를 부여하는 방식이다.
1, 2, 3, 4, 5, 6...
이런 식으로 증가하는 PK를 가지게 된다. 따라서 중복키(Duplicate Key)가 발생하고, 이에 따라서 데이터 일관성에 문제가 생길 수 있다.그렇다면 AUTO_INCREMENT 이외의 전략에는 뭐가 있을까? UUID라고 불리는 전략이 가장 보편적으로 쓰이는 방식이다. UUID는 Universally Unique ID
의 약자이다. 128비트의 데이터로 완전히 unique하다고 보장은 못하지만 충돌할 가능성이 굉장히(거의 없을 정도로) 낮은 전략이라고 볼 수 있다.
파이썬에서도 import uuid
만으로 간단하게 만들 수 있기 때문에 추후에 다른 프로젝트 할 일이 생긴다면 다들 한 번씩 시도해보는 것도 좋을 것 같다.
UUID에는 버전이 여러개가 있는데 각각은 무엇을 기준으로 랜덤하게 UUID를 생성하느냐에 따라 차이가 있다.
우리는 다중 DB를 사용하지 않고 MySQL 하나만을 사용하는 프로젝트를 진행하고 있다. 따라서 분산형 시스템에서의 문제가 발생하지 않을 것이라는 생각이 든다. 보안상으로 좀 취약할 수는 있지만 정식 서비스가 아니고 학습을 위한 프로젝트이기 때문에 이 부분은 가볍게 넘어가도 좋겠다는 생각을 했다. 이러한 이유로 인해서 우리는 AUTO_INCREMENT
전략을 선택했다 😎