관계형 데이터베이스에서는 관계(테이블)을 기반으로 데이터를 저장한다. 연관된 데이터를 조회하기 위해선 테이블을 조인해야 한다.
관계형 데이터베이스에 명령을 할 땐 SQL을 이용한다.
NoSQL은 SQL을 사용하지 않는 명령어이다.
애초에 데이터를 테이블로 저장하지 않으므로 SQL을 사용할 필요가 없다.
- MongoDB
- Cassandra
- HBase 등
RDBMS와 다르게 NoSQL에선 스키마가 없기 때문에 데이터의 형태가 고정돼있지 않다. 마치 DB에 객체를 저장하고 조회하듯 사용 가능하다.
RDBMS | NoSQL | |
---|---|---|
스키마 | 고정스키마 | 다른 구조의 데이터처리 가능 |
속도 | 중간 | 빠름 |
확장성 | 중간 | 확장에 유리 |
성능 | 중간 | 대량데이터&분산처리 가능 |
안정성 | 안정적 | RDBMS에 비해 떨어짐 |
복잡한 기능이 필요할 때는 RDBMS가 유리하지만 기능이 비교적 단순할 경우 NoSql의 성능이 웃도는 것을 볼 수 있다.
document는 객체와 메타데이터를 저장하는 하나의 레코드이다.
{
"_id": 1,
"first_name": "Tom",
"email": "tom@example.com",
"cell": "765-555-5555",
"likes": [
"fashion",
"spas",
"shopping"
],
"businesses": [
{
"name": "Entertainment 1080",
"partner": "Jean",
"status": "Bankrupt",
"date_founded": {
"$date": "2012-05-19T04:00:00Z"
}
},
{
"name": "Swag for Tweens",
"date_founded": {
"$date": "2012-11-01T04:00:00Z"
}
}
]
}
{
"_id": 2,
"first_name": "Donna",
"email": "donna@example.com",
"spouse": "Joe",
"likes": [
"spas",
"shopping",
"live tweeting"
],
"businesses": [
{
"name": "Castle Realty",
"status": "Thriving",
"date_founded": {
"$date": "2013-11-21T04:00:00Z"
}
}
]
}
위의 두 document는 구조가 비슷하지만 완전히 같진 않다. RDBMS와는 달리 데이터의 스키마가 고정돼있지 않다는 것이 NoSql과 RDBMS의 가장 큰 차이이다.
위의 예시와 같이 비슷한 document의 집합체를 Collection이라고 한다.
Collection 의 document들의 필드구조는 꼭 같지 않아도 된다.
- 개발자가 작업하기에 쉽고 빠른 직관적인 데이터 모델이다
- 스키마의 가변성은 애플리케이션의 변화에 유연하게 대처할 수 있다.
- 수평적인 확장이 가능하다
document 에 대해 접해보는 거에 비해서 잘 모르고 있었는데 알아 볼 수 있어 좋았습니다.