NoSQL MongoDB(몽고디비) 특징 정리

2019.12.25 14:43

졸리운_곰 조회 수:1261

MongoDB(몽고디비) 특징 정리

The features of MongoDB

MongoDB 기본 특징

몽고디비(MongoDB)가 가지는 기본적인 특징에 대해서 알아봅시다…

 

데이터 모델

  • DB -Database는 Collection들의 물리적인 컨테이너. 각 Database는 파일시스템에 여러파일들로 저장됩니다.
  • Collection (Table) - MongoDB Document의 그룹
  • Document (Record)
  • Key : Value (Field)

(참고)

  • Mongodb : db > collection > document > key:value
  • Cassandra : Key-space > Table > Row > Column name : Column value
  • RDBMS : DB > Table > row > column
  • elasticsearch : index > type> document > key : value

 

C++기반

 

Schemaless (Schema-fre)

  • 스키마란?
    • 데이터베이스를 구성하는 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시에 데이터 값들이 갖는 제약조건 등에 관해 전반적으로 정의하는 것이다.
    • Schema가 존재한다는 것은 그 구조가 미리 정의되어 있어야 한다는 의미. 이는 데이터의 급격한 변화에 대응하기 힘듬.
  • MongoDB 는 이러한 스키마가 사전에 정의되지 않아도 된다.
  • 데이터베이스에 저장된 Document는 각기 다른, 다양한 필드를 가질 수 있다.
  • 각 필드는 서로 다른 데이터타입을 가질 수 있다.
  • It actually mean dynamically typed schema.
  • Unstructured data 를 쉽게 저장할 수 있음

 

Document Oriented (Uses BSON format)

  • mongodb document database(official)
  • 하나의 row에 하나의 Document를 저장한다.
  • BSON : It adds support for data types like ‘'’Date’’’ and ‘'’binary’’’ that aren’t supported in JSON
  • Unstructured data 와 복잡한 데이터구조를 쉽게 저장할 수 있음.
  • Join 대신 Embedded document를 활용 가능
  • Dynamic schema은 다형성(polymorphism)을 가능케한다.

 

Deep query-ability

  • 강력한 쿼리 기능을 가지는 것이 mongodb 의 특징이다.
  • mongodb-archtecture (official)
  • document-based query language 로 파워풀한 query를 지원함
  • javascript expressions 으로 이해하기 쉽다.
  • 다양한 쿼리기능
    • Key-value queries : return results based on any field in the document, often the primary key.
    • Range queries : return results based on values defined as inequalities (e.g. greater than, less than or equal to, between).
    • Geospatial queries: return results based on proximity criteria, intersection and inclusion as specified by a point, line, circle or polygon.
    • Search queries: return results in relevance order and in faceted groups, based on text arguments using Boolean operators (e.g., ANDORNOT), and through bucketing, grouping and counting of query results. With support for collations, data comparison and sorting order can be defined for over 100 different languages and locales.
    • (built in) Aggregation Framework queries : return aggregations and transformations of values returned by the query (e.g., count, min, max, average, similar to a SQL GROUP BY statement).
    • JOINs and graph traversals : Through the $lookup stage of the aggregation pipeline, documents from separate collections can be combined through a left outer JOIN operation. $graphLookup brings native graph processing within MongoDB, enabling efficient traversals across trees, graphs and hierarchical data to uncover patterns and surface previously unidentified connections.
    • MapReduce queries : execute complex data processing that is expressed in JavaScript and executed across data in the database.
  • (참고) - mongodb map reduce
  • (참고) - MapReduce란?

 

Supports Aggregation

  • GROUP BY절을 이용하여 그룹 당 하나의 결과로 그룹화 할 수 있다.
  • HAVING절을 사용하여 집계함수(Aggregation)를 이용한 조건 비교를 할 수 있다.
  • MIN, MAX 함수는 모든 자료형에 사용 할 수 있다.
  • 일반적으로 가장 많이 사용하는 집계함수에는AVG(평균), COUNT(개수), MAX(최대값), MIN(최소값), SUM(합계) 등이 있다.

 

Indexing (Any field in MongoDB can be indexed)

  • RDBMS인 MySQL에서 지원하는 대부분의 인덱스를 지원
  • 이처럼 강력한 인덱스 기능 덕분에 거의 모든 쿼리들을 빠르게 처리할 수 있다.
  • 다른 NoSQL에서 찾아보기 힘든 장점이다.
  • Index는 메모리에 저장되기 때문에 메모리 크기에 영향을 많이 받는다.
    • Adhoc 쿼리 지원 : (미리 정의되지 않은 쿼리. 동적으로 변하는 쿼리 )
    • Single Field Indexes : 가장 기본적인 인덱스 타입
    • Compound Indexes : RDBMS에서 많이 쓰이는 복합 인덱스
    • Multikey Indexes : Array에 매칭되는 값이 하나라도 있으면 인덱스에 추가하는 멀티키 인덱스
    • Geospatial Indexes and Queries : 위치 기반 인덱스와 쿼리
    • Text Indexes : String 컨텐츠에도 인덱싱이 가능
    • Hashed Index : BTree 인덱스가 아닌 Hash 타입의 인덱스도 사용 가능
    • “MongoDB를 쓰면서 알게 된 것들”-한글블로그

 

Fixed Size Collection

  • Capped collections 라고도 불린다.
  • Collection의 사이즈를 고정할 수 있으며 , 큐 처럼 동작함.

 

Supports Multiple Storage Engines

  • mongodb multiple storage engine
  • 스토리지 엔진: 데이터가 어떤식으로 저장되는지 매니징 하는
    • WiredTiger Storage Engine (최신 버전의 Default)
    • MMAPv1 Storage Engine (과거 버전의 Default)
    • Third party storage engine 을 적용할 수 있는 API를 제공.

Fast In-Place Updates

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

GridFS

mongodb_gridfs_structure

  • 대용량 파일을 저장하기 위한 Grid File System.
  • MongoDB 는 document 하나의 크기가 최대 16MB 로 제한된다.
  • 그 이상의 파일을 저장하기 위해서 Large File을 작은 파트로 분할해서 분리된 Documents 로 저장하는 MongoDB driver 를 제공한다.
  • 해당 컨텐츠를 요구하면 분리된 작은 Chunks를 자동으로 모아서 오리지널 파일을 반환한다.
  • 별도 스토리지 엔진을 통해 파일을 저장가능
  • image/video PDFs, PPT slides or Excel spreadsheets 와 같은 컨텐츠의 저장소로 활용이 가능하다.
  • GridFS는 16MB(BSON document 사이즈) 넘는 사이즈의 데이터를 저장하고 조회 하는 방법.
  • 한개의 파일로 저장하는 대신에 부분이나 청크로 나누어 분리된 도큐먼트를 청크로 저장한다. 청크사이즈는 기본 256k로 제한되어 있다. 파일 청크와 메타데이터를 저장하는 두개의 컬렉션을 사용한다

  • (참고) - 좋은 설명(영어)
  • (참고) - mongodb gridfs (official doc)
  • (참고) - MongoDB GridFS 개념잡기

 

Join 불가능

 

트랜젝션 처리 불가능

 

MongoDB에서는 데이터 갱신 및 입력이 바로 디스크에 쓰이지 않는다. (비동기식)

  • 따라서 데이터가 유실될 가능성이 있음.

 

Auto-Sharding

  • auto 라는 말은 왜 붙은걸까?

 

MongoDB Replica Set (Provides high availability)

mongo_shard_structure

  • Master-Slave Repliaction
  • 마스터는 읽기+쓰기, 슬레이브는 read
  • Automatic Fail-over

 

References

[출처] https://nicewoong.github.io/development/2018/02/10/mongodb-feature/

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86126
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78629
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95347
42 블록체인 기반 플랫폼 비즈니스를 이해하자 졸리운_곰 2017.09.10 1553
41 다운타임 없는 서비스 구현 패턴 file 졸리운_곰 2017.09.10 1229
40 테이블의 수직분할과 수평분할에 대한 이해 file 졸리운_곰 2017.09.10 3908
39 정규화와 응집도에 대한 고찰 file 졸리운_곰 2017.05.28 1782
38 머신러닝 새 도전…“클라우드를 벗어나라" file 졸리운_곰 2017.05.28 1711
37 보안성 높이는 공공 거래장부 블록체인 file 졸리운_곰 2017.05.28 1757
36 디지털, 속도의 전쟁 VS 데이터, 품질의 전쟁 file 졸리운_곰 2017.05.05 1515
35 04. 데이터 모델링의 3단계 진행 file 졸리운_곰 2016.03.15 1659
34 데이터베이스 설계의 기본 원리.pdf file 졸리운_곰 2016.03.15 2353
33 실체유형(Entity Type) 정의 사항 및 도출 file 졸리운_곰 2015.05.21 2196
32 마농의 SQL 백문백답: 단순하고 쉽게 작성하는 SQL 노하우 [1회] file 졸리운_곰 2015.05.21 1829
31 sql개발자-sql전문가자격시험 시험 예제.pdf file 졸리운_곰 2015.02.15 2302
30 데이터베이스 선정에는 비밀이 있다 - 4부 졸리운_곰 2015.01.15 2095
29 데이터베이스 선정에는 비밀이 있다 - 3부 졸리운_곰 2015.01.15 2042
28 데이터베이스 선정에는 비밀이 있다 - 2부 졸리운_곰 2015.01.15 1827
27 데이터베이스 선정에는 비밀이 있다 - 1부 졸리운_곰 2015.01.15 2391
26 지금 우리에게 필요한 것은 데이터베이스 성능 최적화이다 (2부) 졸리운_곰 2015.01.15 1484
25 우리에게 필요한 것은 데이터베이스 성능 (1부) 졸리운_곰 2015.01.15 1773
24 21회 결과 secret 졸리운_곰 2014.11.10 0
23 [데이터아키텍쳐준전문가] 시험 fail 자료 secret 졸리운_곰 2014.08.31 0
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED