dev_hun
2023. 1. 13. 16:53
2023. 1. 13. 16:53
mongoDB란?
- NoSQL DBMS의 한 종류로서 테이블과 같은 schema가 없으며, JSON 형태의 문서 지향적 NoSQL 데이터베이스입니다.
- mongoDB는 C++로 작성된 오픈소스 문서지향적 Cross-platform 데이터베이스이며, 뛰어난 확장성과 성능을 자랑합니다.
mongoDB 개념
- mongoDB는 입.출력에서는 JSON 그리고 저장에는 BSON 타입으로 데이터를 저장합니다.
mongoDB의 용어 설명
- mongoDB에서 사용하는 용어는 RDBMS와 조금 다릅니다. 아래 표와 같이 mongoDB에서는 table를 collection이라 하고, row를 document, db server를 mongod, db client를 mongo라고 부릅니다.
RDBMS |
mongoDB |
database |
database |
table |
collection |
row |
document |
column |
field |
index |
index |
DB Server |
Mongod |
DB Client |
mongo |
스키마 리스의 장점
- mongoDB는 document 기반 데이터베이스이기 때문에 RDBMS와 다르게 자유로이 데이터 구조를 잡을 수 있습니다.
index
- query를 더욱 효율적으로 할 수 있도록 document에 기준(key)을 정해 정렬된 목록을 생성합니다. 인덱스가 없다면 MongoDB는 full collection scan 방식으로 데이터를 찾습니다.
- mongoDB index는 B-Tree 구조로 되어있습니다.
ObjectId
- 모든 Mongo DB의 document는 기본적으로 12byte 크기의 _id 필드 인덱스가 존재합니다. 컬렉션 생성 시 _id 필드를 따로 지정하지 않으면 mongod 드라이버가 자동으로 _id 필드 값을 ObjectId로 설정합니다. _id 인덱스는 unique하고 이는 MongoDB client가 같은 _id를 가진 문서를 중복적으로 추가하는 것을 방지합니다.
- ObjectId는 세 가지 영역으로 나뉘어져 있습니다. 첫 4Byte는 UNIX Timestamp 정보를 담고있고, 다음 5byte는 랜덤한 값으로 이루어져 있는데 3byte와 2byte로 나뉩니다. 그리고 마지막 3byte는 클라이언트 머신별로 고유한 키를 이용하여 랜덤한 값을 만들어 사용합니다.