본문 바로가기

MongoDB

MongoDB 이해하기

MongoDB의 장점

 

-MongoDB는 NoSQL을 이용한 DBMS이다.

NoSQL은 Not only SQL의 약자이며 특징으로는

1) 관계형 모델을 사용하지 않는다.

2) 스키마 없이 동작한다.

정도가 있다.

 


MongoDB는 왜 빠를까?

 

 

 

-NoSQL인 이유?

1. ACID를 지키지 않는다 -> 속도가 빠르다.

2. Sharding이 더 용이하다 -> 대규모의 데이터에 적합하다.


ACID란? 

 

ACID란 RDBMS의 원칙을 의미한다.


Atomicity 원자성
Consistency 일관성
Isolation 독립성

Durability 지속성

 

Atomicity 원자성
->트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다.
MongoDB는 각각의 Document에 대해 원자성을 지닌다.
-여러 Document에 대해서도 만족하려면 $Isolated operator를 사용해야한다.

Consistency 일관성
->트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 유지해야한다
무결성 제약조건, 비명시적 조건과 같은 조건이 전 후에도 지켜져야 한다.
-MongoDb는 Database수준까지 일관성을 유지한다.

Isolation 독립성
->여러 트랜잭션이 동시에 수행되더라도 각각의 트랜잭션은 다른 트랜잭션의 수행에 영향을 받지 않고 독립적으로 수행되어야 한다
-특정 명령어에 대해서 일정 수준의 독립성이 보장된다.

Durability 지속성
->트랜잭션이 성공적으로 완료되어 커밋되고 나면, 해당 트랜잭션에 의한 모든 변경은 향후에 어떤 소프트웨어나 하드웨어 장애가 발생 되더라도 보존되어야 한다는 것을 의미한다.
-MongoDB 는 Replica set을 설정하면 DB수준에서 보존된다.

 


BASE

 

관계형 데이터베이스인 RDBMS의 ACID대신 

NoSQL에서는 BASE 원칙을 따른다.

 

Basically Available
Soft state
Eventually consistent

Basically Available -> 가용성, 기본적으로 언제든지 사용할 수 있다. 다수의 사용자가 DB를 사용할 수 없는 상황이 와도 금방 다시 사용할 수 있는 상태로 바뀐다.
기본적인 가용성을 지닌다. 

Soft state ->
외부의 개입 없이도 정보가 바뀔 수 있다는 의미이다.
이것은 Eventually consistent특성 때문에 필요한 특성이다.

Eventually consistent->일관적인 상태가 되는 성질,
시스템상에서 일시적으로 일관적이지 않은 상태가 되어도 일정 시간 후에는 일관적 상태가 되는 성질이다.

 


MongoDB의 구조

 

 

Database
Collection
Document의 3단구조

참고로 Document = JSON과 비슷한 BSON구조로 되어있음

BSON이란?-> Binary JSON의 의미. (참고로 JSON이란  javascript에서 쓰이는 데이터의 표현방식을 의미한다)
JSON의 일부로써 MongoDB에서 데이터를 저장하기 위한 형식이다.

BSON은 Field와 value값을 가지고 있으며 Key값과 Value값을 가진 Java의 HashMap과 매우 유사하다.

 

 


Database와 Collection만들기

 

 

use testDB
db.myCollection.insertOne({x:1})

터미널에 해당 명령어를 통해서 Coellection에 Field : value값을 넣어준다.

잘 들어갔는지 확인하려면
db.myCollection.find() (모든 요소조회)
insertOne명령어가 testDB와 myCollection이 없으면
생성해서 Document {x:1}을 넣는다.

 

 

정상적으로 삽입이 완료되면 해당 이미지와 같은 구조로 저장이 완료된다는 것을 알 수 있다.