Mongo(Humongous) DB?
NoSQL DBMS의 한 종류
MongoDB는 NoSQL 로 분류되는 *크로스플랫폼 도큐먼트 지향 데이터베이스 시스템
*크로스플랫폼이란?
하나 이상의 플랫폼에서 실행가능한 소프트웨어
예) 한 앱이 안드로이드와 아이폰에서 기능상, 외관상 차이 없이 똑같이 실행 된다면 이러한 앱을 크로스 플랫폼으로 개발된 것이라고 볼수 있음
mongo는 humongous를 줄인 표현, 엄청 큰 DB 라는 뜻이다.
MongoDB의 특징
- JSON 형태의 동적 스키마형 문서 사용 (= BSON)
- 가장 기본적인 데이터를 문서 Document 라고 부른다. (RDBMS = Row)
- 이 Document 의 집합을 Collection 이라고 함 (RDBMS = Table)
- Collection의 집합은 DB (RDBMS = DB)
- 같은 조건으로 설계 되었을 시, 기존 RDBMS 속도보다 굉장히 빠르다
- *ACID를 포기한 댓가로 속도를 얻은 것이다
*ACID?
데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질
A : 원자성(Atomicity), 트랜잭션 관련 작업이 실행되다가 중단되지 않는 것을 보장하는 능력
C : 일관성(Consistency), 트랜잭션이 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것
I : 독립성(Isolation), 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것
D : 지속성(Durability), 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미
데이터 Consistency가 거의 필요 없으며, 조인 연산을 Embed로 대체할 수 있는 경우 MongoDB가 확실한 대안이 될 수 있다.
반대로, 저장하는 데이터가 은행 데이터 같이 Consistency가 매우 중요한 작업에서는 쓰기 힘들다.
Document 구조
RDBMS의 record (=row), 한개 이상의 키와 값(Key-value)을 가지는 구조
{
"_id" : ....,
"subject" : "제목",
"content" : "내용",
"user" : {
username: "Park",
age: "31"
}
}
Database 생성
"use 데이터베이스" 명령어로 Database를 생성할 수 있다.
이미 생성된 데이터베이스가 있을 때에는 해당 데이터베이스를 사용한다는 명령어 이기도 하다.
"show dbs" 현재 데이터베이스 리스트목록 조회
Database 제거
"db.dropDatabase()"
Collection 생성
"db.createCollection()"
Collection 제거
"db.컬렉션이름.drop()"
'Database > MongoDB' 카테고리의 다른 글
[MongoDB] Aggregate를 활용한 Embeded Document (RDB = JOIN) (0) | 2021.02.22 |
---|
댓글