바닥코딩

MongoDB는 왜 빠른가? 본문

데이터 베이스/MongoDB

MongoDB는 왜 빠른가?

개발공부개발공부 2023. 6. 17. 20:46

  MongDB는 빠른 속도의 처리가 가능합니다. 유연한 구조와 빠른 속도를 가지고 있는 DBMS의 특성 덕분에 빅데이터와 실시간 데이터 처리에 많이 사용 되어지고 있습니다. MongoDB가 빠른 속도를 가질 수 있는 이유에 대해 일전 포스팅에서 잠깐 언급을 했었습니다.

https://dkkim2318.tistory.com/118

 

MongoDB란

데이터베이스를 관리하는 방법으로 실무에서나 개발 공부과정에서 우리는 RDBMS(관계형 데이터베이스)를 보편적으로 사용합니다. oracle, mysql, mssql, postgre... 등등 말이죠 RDBMS를 사용해신 분들이라

dkkim2318.tistory.com

일번적인 RDB(관계형 데이터베이스) 의 ACID를 따르지 않기 때문에 빠른 속도를 가질 수 있다는 언급을 한적 있었는데, 그렇다면 ACID가 무엇인지 MongoDB는 왜 빠른지에 대해 좀 더 자세히 알아보겠습니다.

 

ACID

그렇다면 우리는 ACID에 대해 잠깐 알아볼 필요가 있습니다.  산성(PH) 이라는 뜻을 가지고도 있지만, RDB에서 말하는 ACID는 RDB의 4가지 속성의 앞글자를 딴 약어 입니다. 

 Atomicity(원자성) . Consistency(일관성), Isolation(독립성), Durability(지속성)  바로 이 4개가 RDB의 ACID에 해당하는 4가지 속성입니다. 사실 RDB에 대해 다루는 포스팅이 아니기 때문에 각각의 성질에 대해 자세히 알아보기 보다는 간단하게 알아보고 넘어가겠습니다.

  • Atomicity(원자성) : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단 되지 않는 것을 보장하는 능력
  • Consistency(일관성) : 트랜잭션이 실행을 성공했을 경우 언제나 일관성 있는 데이터베이스 상태로 유지해야한다
  • Isolation(독립성) :  여러 트랜잭션이 동시에 수행이 되더라고 각각의 트랜잭션은 다른 트랜잭션의 수행에 영향을 받지 않고 독립적으로 수행이 된다.
  • Durability(지속성) : 트랜잭션의 성공적으로 완료되어 커밋되고 나면 해당 트랜잭션에 의한 모든 변경은 향후 어떤 SW/HW 장애가 발생이 되더라도 보존 되어진다.

 

MongoDB에서의 ACID

   MongoDB에서는 ACID를 따르지 않는다는 특징을 가지고 있습니다. 그렇다면 여기서  ACID를 따르지 않으면 데이터베이스로서의 역할로서 부적합 한게 아닌가?  저 원칙들을 부정하는 것인가? 등등의 의문이 생길 수 있습니다. 결론부터 말하자면 MongoDB는 ACID를 부분적으로 수용합니다. 또 그에 따라 BASE라는 원칙을 가지고 데이터베이스를 관리하고 있습니다. 

 그렇다면 왜 MongoDB는 ACID를 따르지 않고 부분적인 수용을 하고 있을까요? 

이에대해 알아보기 위해 그래프를 하나 준비했습니다. RDBMS에서 각각의 프로세스들을 진행하는데 걸리는 시간을  의미합니다 저 부분에서 12퍼센트에 해당하는 부분이 실제로 정보를 저장/삭제/수정하는 부분입니다. 그럼 12퍼센트를 제외한 나머지 88퍼센트의 시간은 Index Management, Logging, Locking, Latching, Buffer Management 등에 사용된다는 것인데 이러한 시간 활용이 바로 ACID를 엄격히 사용하기 때문에 발생하는 코스트 입니다.

 이러한 특성에서 발생하는 코스트를 줄이고 좀더 빠르게 데이터베이스를 관리하기 위해 MongoDB는 ACID의 특성을 부분적으로만 수용하고 있습니다. 바로 이러한 이유 때문에  MongoDB는 RDBMS에 비해 빠른 속도의 처리가 가능합니다.

 

BASE

 MongoDB의 BASE 원칙은  Basically Avaiable, Sort state, Eventually consistent를 의미합니다. 각 3개의 특성이 무엇인지 대해서 살펴보자면 

   Basically Avaiable(기본적인 가용성) 

  기본적인 가용성이라는 말은 언제든지 MongoDB 사용을 할 수 있다는 상태를 의미합니다. MongoDB는 데이터베이스 사용 중 다수의 사용자가 사용할 수 없는 상황이 와도 금방 다시 사용할 수 있는 상태로 바꿉니다. 

  이해하기 어려운 특성이지만  MongoDB는 사용자들이 주로 사용중인 데이터베이스가  사용할 수 없는 상태가 된다면, MongoDB 자신이 복제하여 사용중인 레플리카 set을 데이터베이스로 대체 하는 것이 가능합니다. 즉 다수의 실패에도 가용성을 보장하며, 다수의 스토리지에 복사본을 저장합니다.

   Sort state(소프트 상태)

 소프트 상태란 외부의 개입 없이도 정보가 바뀔 수 있다는 의미입니다. 그 다음 설명할 Eventually consistent의 특성 문에 필요한 성질입니다. 

  Eventually consistent(최종 일관성)

 최종 일관성이란 시스템 상에서 일관적으로 일관적이지 않은 상태가 되어도 일정 시간 후에는 일관적 상태가 되는 성질입니다. 조금더 알기 쉽게 풀어 설명하자면, 일반적인 DBMS가 매번 오류를 체크하는 반면  MongoDB는 매번 문제가 없나 체크하지 않고 있다가, 문제가 발생했다는 것을 일정 시간후에 확인하면 그떄 오류를 찾습니다. 즉 오류가 발생하지 않는 상태라면 빠른 속도로 데이터 처리가 가능합니다.

'데이터 베이스 > MongoDB' 카테고리의 다른 글

Compass를 이용한 DB서버 접속 및 생성  (0) 2023.06.17
BSON  (0) 2023.06.17
MongoDB의 구조  (0) 2023.06.17
MongoDB 설치하기  (0) 2023.06.17
MongoDB란  (0) 2023.06.17