
부트캠프 기간 동안 웹앱을 두 번 정도 만들었는데, 모두 elephant SQL 을 통해 Postgre SQL을 사용했다. 이번에는 Mongo DB를 한 번 써보려고 한다.
NoSQL은 Not only SQL, SQL뿐만 아니다 라는 의미를 가지고 있다. 즉, 관계형 데이터베이스가 아닌 데이터베이스들을 일컫는다. MongoDB외에도 Redis, HBase 등이 있다.
NoSQL은 기존 RDBMS의 한계를 극복하기 위해 생겼다.
| RDBMS | NoSQL | |
|---|---|---|
| 사례 | 데이터 정합성 보장 필요한 은행 시스템 | 낮은 지연시간, 가용성이 중요한 SNS |
| 데이터 모델 | 정규화와 참조 무결성이 보장된 스키마 | 스키마가 없는 자유로운 모델 |
| 트랜젝션 | 강력한 ACID 지원 | 완화된 ACID(BASE) |
| 확장 | 하드웨어 강화(Scale up) | 수평 확장 가능한 분산 아키텍처(Scale out) |
| API | SQL query | 객체 기반 API 제공 |
표 내용은 간단하게 참고하여 두 시스템을 비교해보았다.
Mongo db는 대표적인 NoSQL 데이터베이스이다. JSON과 같은 형태의 도큐먼트들을 사용하며 오픈소스이기 때문에 무료로 사용할 수 있다. 그리고 RDBMS의 ACID 대신 BASE를 택했다.
가장 기존의 RDBMS와 차별되는 부분은 분산처리라고 한다. 기존의 RDBMS는 빅데이터 시대에 대규모 데이터 처리에서 한계가 있기 때문에 NoSQL이 등장했고 MongoDB역시 이러한 요구에 맞추어 더 빠른 성능, 수평 확장이 가능한 데이터베이스로 탄생한 것이다.
BASE라든지, Database > Collection > Document > Field로 이루어진 MongoDB의 계층과 같은 자세한 내용은 조금 더 공부해봐야 할 것 같다. 우선은 프로젝트에 적합한지 (사실 아직 확신이 없다) 더 공부하면서 알아보겠다.