⬛️ 몽고DB 소개
- Database > Collection > Document > Field 계층으로 이루어져 있다.
- 레코드는 key-value 쌍으로 이루어지고, value에는 다른 document나 array 등이 포함될 수 있다.
- MongoDB의 document는 JSON과 유사하다.
- 관계형 DB가 아니므로 RDBMS와 다르게 Schema-less 구조이며 JOIN이 존재하지 않는다.
- 유연한 데이터 모델: 몽고DB는 동적 스키마(Dynamic Schema)를 사용하여 데이터 모델링을 유연하게 할 수 있습니다. 각 문서는 자체적인 구조를 가지며, 필드의 유무나 형식이 서로 다른 문서들이 컬렉션에 함께 저장될 수 있습니다.
{
"_id": ObjectId("617a5d9ad6ee39a26f1a29d5"),
"name": "John",
"age": 30,
"email": "john@example.com"
}
{
"_id": ObjectId("617a5da7d6ee39a26f1a29d6"),
"name": "Alice",
"age": 25,
"address": {
"city": "New York",
"zipcode": "10001"
},
"hobbies": ["reading", "hiking", "cooking"]
}
{
"_id": ObjectId("617a5db3d6ee39a26f1a29d7"),
"name": "Bob",
"email": "bob@example.com",
"is_active": true
}
- 고성능 및 확장성: 몽고DB는 분산형 데이터베이스로서, 수평적 확장이 가능합니다. 데이터베이스의 용량이나 처리 능력을 쉽게 증가시킬 수 있으며, 샤딩(Sharding)을 통해 데이터를 분산하여 처리할 수 있습니다.
- 강력한 쿼리 언어: 몽고DB는 강력한 쿼리 언어를 제공하여 복잡한 쿼리를 수행할 수 있습니다. 쿼리는 JSON 형식으로 작성되며, 필드 값, 배열, 내장 문서 등 다양한 조건을 활용할 수 있습니다.
- 고가용성 및 복제: 몽고DB는 데이터의 안정성을 보장하기 위해 복제(Replication) 기능을 제공합니다. 데이터의 신뢰성과 가용성을 높이기 위해 여러 개의 노드에 데이터를 복제하여 운영할 수 있습니다.
- 풍부한 기능: 몽고DB는 풍부한 기능을 제공하여 개발자들이 더 효율적으로 데이터를 다룰 수 있도록 도와줍니다. 인덱싱, 풀텍스트 검색, 집계 기능, 지리 공간 쿼리 등 다양한 기능을 포함하고 있습니다.
⬛️ RDB와 MongoDB 비교
RDB |
MongoDB |
database |
database |
table |
collection |
tuple/row |
document |
column |
key / field |
table join |
Embedded Documents |
Primary Key |
Primary Key (_id) |
database server |
Client |
mysqld |
mongod |
mysql |
mongo |
RDBMS 와 mongoDB의 속도 비교