본문 바로가기
Infra/MongoDB

MongoDB - (1) - MongoDB 소개

by Inventer 2023. 4. 18.

 

본 포스팅은 아래 책을 학습한 과정을 담고 있습니다.

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=268367408 

 

[전자책] MongoDB 완벽 가이드

몽고DB 입문자를 위한 기초부터 실제 배포에 적용할 수 있는 실용적이고 깊이 있는 내용까지 담았다. 개정 3판에서는 성능이 강화된 몽고DB 최신 버전을 반영해 복제와 샤딩을 더 깊이 다루며 개

www.aladin.co.kr

 

 

이번에 신규로 진행하는 프로젝트는 Notion, Google Sheet와 같은 Wiki Product 적인 성향을 띄고 있었고,

기존 RDBMS만으로는 문서형식의 데이터를 저장하기에 까다로운 측면이 있었습니다.

 

기존 MySQL, Maria, Postgres 등을 사용하여 "커뮤니티"와 같은 프로젝트를 진행해보신 분들은

각 데이터베이스의 연관관계가 복잡해지는 대댓글과 같은 부분에서 많은 어려움을 공감하실거라 생각합니다.

 

이러한 부분들 때문에 관계를 맺지 않는 Not Only SQL을 고려하셨을 것이고,

진행하는 프로젝트인 Wiki Product의 특성상, page안에 page, 또 자유로운 데이터 저장형식 등으로

NoSQL을 도입을 고민했습니다.

 

NoSQL 중에도 많은 상용 데이터베이스가 존재하는데,

http://www.yes24.com/Product/Goods/89907510

 

세븐 데이터베이스 - YES24

7개 데이터베이스의 매력적인 기능과 완벽한 쓰임새를 소개한다! 이 책에서는 PostgreSQL, Riak, HBase, MongoDB, CouchDB, Neo4J, Redis의 7개 데이터베이스들의 핵심 개념과 기능을 구체적으로 소개한다. 또한

www.yes24.com

 

위 책을 통해서 

1. AWS의 지원 여부

2. 데이터를 저장하는 방식

3. 데이터의 색인 방식

4. 차후 확장 방식

 

를 고려하여 MongoDB라는 결론에 도달하였습니다.

 

따라서 본 포스팅은 MongoDB를 실제 활용가능한 수준으로 학습하는 것이 목적입니다.

 

 

기본사항


도큐먼트(Document)

  • RDBMS에서 row와 유사함.
  • 정렬된 Key와 다양한 자료 표현이 가능한 Value로 이뤄짐.
  • Map, Hash, Dict 와 같은 방식으로 Document를 표현함.
  • 저장되는 데이터 타입을 구분함, 5와 "5"는 다름

 

키(Key)

  • 키는 문자열이고 UTF-8 문자열로 쓸 수 있다.
  • \0(Null)문자는 키의 끝을 나타내는데 사용하므로 문자열 중간에 포함하지 않는다.
  • . 과 $ 는 특별한 속성을 가지기에 예약어로 취급한다.
  • 하나의 도큐먼트 내에서는 key가 중복될 수 없다.

 

 

컬렉션


컬렉션(Collection)

  • 컬렉션은 도큐먼트의 모음이다.
  • RDBMS에서 스키마의 개념과 유사하다.

 

동적 스키마(Dynamic Schema)

  • 아래와 같이 하나의 컬렉션 내 도큐먼트들이 모두 다른 구조를 가질 수 있다.
{"greeting" : "Hello, world!", "views" : 3}
{"signoff" : "Good night, and good luck"}

 

그러면 사실상 단일 컬렉션으로 모든 정보를 사용할 수 있는 것 아닌가?

1. 관리하기가 힘들다.

2. 하나의 큰 A라는 컬렉션에 a, b, c 정보를 담는 것보다 A, B, C 라는 컬렉션 목록을 나눠 쿼리하는게 빠르다.

3. 인덱스를 만들면 도큐먼트는 특정 구조를 가져야한다.인덱스는 컬렉션별로 정의하기 때문

 

 

서브 컬렉션(Sub Collection)

  • blog.posts와 blog.authors 라는 컬렉션을 가질 수 있는데 이는 단순히 체계화를 위한 수단이다
  • (내생각) MSA 를 고려한다면 이렇게 도메인의 하위 엔티티처럼 체계화하는 것이 유리할 것

 

데이터베이스


  • 컬렉션이 도큐먼트를 그룹화 하는 것 처럼 데이터베이스에 컬렉션을 그룹화함.
  • 몽고 DB의 인스턴스는 여러 데이터베이스를 호스팅할 수 있으며, 완전히 독립적인 취급이 가능하다.

 

아래는 특별한 의미를 갖는 database이다.

  • admin - 인증과 인가를 하는 데이터베이스
  • local - 복제 셋에서 복제 프로세스에 사용된 데이터를 저장하므로 각 DB간 복제되지 않는 DB
  • config - 샤딩된 몽고 DB의 클러스터는 config DB를 사용하여 shard의 데이터를 보관

 

 

 

 

'Infra > MongoDB' 카테고리의 다른 글

MongoDB - (6) - 인덱싱2  (0) 2023.04.22
MongoDB - (5) - 인덱싱  (0) 2023.04.21
MongoDB - (4) - 쿼리  (0) 2023.04.20
MongoDB - (3) - CRUD 실습  (0) 2023.04.19
MongoDB - (2) - CRUD와 데이터타입  (0) 2023.04.18

댓글