SequenceField 와 ObjectIdField 의 성능 차이
1월 03, 2024
In Database |
## SequenceField 와 ObjectIdField 의 성능 차이 _SequenceField와 ObjectIdField 간에는 몇 가지 성능 차이가 있을 수 있음_ _성능 비교는 사용 사례에 따라 다를 수 있으며, 어떤 측면에서 성능이 더 중요한지에 따라 선택해야함_ ### Insert 성능: - SequenceField: 샤딩되지 않은 환경에서는 쓰기 연산이 일반적으로 빠름. 그러나 findOneAndUpdate 연산을 사용하여 일련번호를 증가시키는 추가적인 작업이 필요할 수 있음 - ObjectIdField: 기본적으로 샤딩에 대한 자연스러운 키로 사용되기 때문에 쓰기 성능이 우수. ObjectId는 무작위로 생성되며, 이는 여러 서버에서의 동시 쓰기 작업을 허용 ### 일련번호 유지 및 캐싱: - SequenceField: 캐싱을 사용하여 일련번호를 최적화하며, 중복을 방지하기 위해 findOneAndUpdate를 사용 - ObjectIdField: MongoDB는 ObjectId를 자동으로 생성하고 유지하며, 중복을 방지하기 위해 고유성을 보장 ### 검색 및 쿼리 성능: - SequenceField: 증가하는 일련번호를 사용하면 시간순으로 정렬된 인덱스를 이용해 쿼리 성능이 향상될 수 있음 - ObjectIdField: ObjectId는 내부적으로 시간 정보가 포함되어 있어, 시간 기반의 쿼리에 적합 ### 고유 식별자 유형: - SequenceField: 사용자 정의 가능한 일련번호를 사용하므로 특별한 의미나 시간 정보가 없을 수 있음 - ObjectIdField: ObjectId는 생성 시간과 머신 ID 등의 정보를 포함하므로 해당 정보를 활용할 수 있음 ### 결론 성능 측면에서 ObjectIdField는 일반적으로 빠르게 동작하며, 더 많은 내장 기능을 제공 그러나 사용 사례에 따라 고유한 일련번호가 필요하거나 특별한 의미가 있는 경우 SequenceField를 사용