MongoDB 란 ?

Juppi·2023년 7월 8일
0

MongoDB

목록 보기
1/1

mongoDB는 NoSQL(Not only SQL)의 일종으로 document database이다. mongoDB는 데이터 레코드를 BSON 문서로 저장한다. BSON은 JSON의 이진 표현이며, 더 많은 데이터 유형을 포함한다.

NoSQL 이란 ?

NoSQL은 관계형 데이터베이스의 단점을 해결하기 위해 등장했다.

  • 데이터를 시각적으로 확인하기 좋다
  • JOIN 없이 조회가 가능하므로 응답 속도가 빠르다.
  • 스키마가 유연해서 데이터 모델을 서비스의 요구사항에 맞게 데이터를 수용할 수 있다.

Document 구조

mongoDB document는 field-value 쌍으로 구성되며 아래와 같은 구조를 갖는다

{
   field1: value1,
   field2: value2,
   field3: value3,
   ...
   fieldN: valueN
}

필드 값은 다른 document, 배열 및 document 배열을 포함한 BSON 데이터 유형 중 하나일 수 있다. 예를 들어 아래 document에는 다양한 유형의 값이 포함되어 있다

var mydoc = {
               _id: ObjectId("5099803df3f4948bd2f98391"),
               name: { first: "Alan", last: "Turing" },
               birth: new Date('Jun 23, 1912'),
               death: new Date('Jun 07, 1954'),
               contribs: [ "Turing machine", "Turing test", "Turingery" ],
               views : NumberLong(1250000)
            }
  • _id : ObjectId 를 보유한다.
  • name : first, last필드를 포함하는 embedded document를 보유한다 .
  • birth, death  : Date 유형의 값을 보유한다.
  • contribs *: 문자열 array*를 보유한다.
  • views : NumberLong 유형의 값을 보유한다.

Dot notation

MongoDB 는 dot notation 을 사용해서 배열이나 document 내의 요소에 접근한다.

array

{
   ...
   contribs: [ "Turing machine", "Turing test", "Turingery" ],
   ...
}
  • "contribs.2"

embedded document

{
   ...
   name: { first: "Alan", last: "Turing" },
   contact: { phone: { type: "cell", number: "111-222-3333" } },
   ...
}
  • contact.phone : { type: "cell", number: "111-222-3333" }
  • contact.phone.type : “cell”

Document 크기 제한

  • BSON document의 최대 크기는 16MB
    • 단일 document가 과도한 양의 RAM을 사용하거나, 전송 중에 과도한 양의 대역폭을 사용하지 않도록 하기 위해 단일 document의 크기를 제한한다.
  • 최대 크기보다 큰 document를 저장하려면, MongoDB에서 제공하는 GridFS API를 사용하면 된다 !

Document 순서 제한

JavaScript 개체와 달리 BSON document의 필드는 순서가 지정된다.

document를 비교할 때 필드 순서가 중요하다

  • a예를 들어 문서를 필드 와 b쿼리 에서 비교할 때 :
    • {a: 1, b: 1} == {a: 1, b: 1}
    • {a: 1, b: 1} != {b: 1, a: 1}

RDBMS와 비교

RDBMSMongoDB (NoSQL)
databasedatabase
tablecollection
tuple / rowdocument
columnkey / field
table joinembedded documents
primary keyprimary key (_id)

document를 사용함으로써 얻는 이점

  • document는 많은 프로그래밍 언어의 기본 데이터 유형에 해당한다.
  • embedded document 및 array는 비용이 많이 드는 join의 필요성을 줄인다.
  • dynamic schema는 능숙한 다형성을 지원한다.

Collections/Views/On-Demand Materialized Views

  • mongoDB는 document를 collection에 저장한다
  • collection 이외에 지원하는 것들

Key Feature ✨

  • High Performance

    mongoDB는 고성능 data persistance를 제공한다 !

    • embedded data model로 데이터베이스 시스템의 I/O 활동이 줄어든다
    • 인덱스는 더 빠른 쿼리를 지원하고 embedded document 및 array의 key를 포함할 수 있다
  • Query API

    CRUD(읽기 및 쓰기 작업) 와 다음을 지원한다.

  • High Availability

    replica set 이라고 하는 MongoDB의 복제 기능은 다음을 제공한다

    • automatic failover
    • data redundancy
  • Horizontal Scalability

    MongoDB는 수평적 확장성을 제공한다 !

    • Sharding은 머신 클러스터 전체에 데이터를 분산시킨다.
    • MongoDB 3.4 부터 shard key 기반으로 데이터 영역 생성을 지원한다.
  • Support for Multiple Storage Engine

    여러 스토리지 엔진을 제공한다

MongoDB 기본 Database

  • admin
    • 인증과 권한 부여 역할
    • shutdown 등 명령어는 해당 DB에 대한 접근이 필요
  • local
    • replication에 필요한 oplog와 같은 컬렉션을 저장
    • instance 진단을 위한 startup_log와 같은 정보를 저장
    • 복제 대상에서 제외
  • config
    • sharded cluster에서 각 shard의 정보를 저장
profile
잠자면서 돈버는 그날까지

0개의 댓글