NoSQL 데이터베이스의 한 종류인 도큐먼트 데이터베이스
관계형 데이터베이스와 많은 공통점을 가지고 있으며 일부 명칭은 다르나 비슷한 역할을 수행
JavaScript 기반의 명령어와 JSON 도큐먼트를 인자로 사용
항목 | mongoDB - JavaScript | 관계형 DB - SQL |
---|---|---|
입력 | db.member.insert({ no : "C001", age : 45, status: "A" }) | insert into member(no, age, status) values('C001', 45, 'A') |
수정 | db.member.update( { age : { $gt : 25 } }, { $set : { status : "C" } }, { multi : true } ) | update member set status = 'C' where age > 2 |
삭제 | db.member.remove( { no : "C001" } ) | delete from member where no = 'C001' |
조회 | db.member.find( { no : "C001" } ) | select * from member where no = 'C001' |
별도의 스키마 선언 없이 도큐먼트의 필드를 자유롭게 추가 및 삭제 하는 유연한 구조
도큐먼트 구조 설계 방식 (임베디드 vs. 레퍼런스)
SQL? NoSQL?
- 똑같은 조건으로 설계되었을 시 기존 RDBMS 보다 속도가 빠르다는 장점
이런 속도는 ACID(트랜젝션)를 포기한 댓가로 얻은 것
➡ 데이터 consistency(일관성)가 거의 필요 없고 조인 연산을 embed로 대체할 수 있는 경우
➡ MongoDB가 확실 한 대안이 될 수 있음
❗ 저장되는 데이터가 은행 데이터 같이 consistency가 매우 중요한 작업에는 NoSQL 사용 ❌
- SQL, NoSQL은 서로 반대의 개념도, 경쟁상대도 아님
많은 회사들이 두 타입 모두 동시에 사용하기도 함
하나의 시스템이 모든 경우에 만족된 서비스를 제공하지 못함
만약 데이터가 급격하게 늘어나는 형태라면 NoSQL이 도움