티스토리 뷰

프로그래밍/MongoDB

MongoDB 기초

국윤창 2021. 7. 24. 17:44

MongoDB는 NoSQL 중 하나로 MySQL 같은 관계형 데이터베이스에 비해 유연한 구조를 가지고 있다.

 

관계형 데이터베이스와 비교했을 때 아래의 구조를 가지고 있다.

 

  • Database: 동일하게 Database
  • Collection: Table
  • Document: Row

MongoDB는 Collection에 스키마가 없고, Document에 json 형태의 중첩된 데이터를 저장할 수 있다. 이 때문에 유연한 구조가 된 것이다. Document는 아래와 같이 저장된다.

{
    "name": "Kook",
    "address": "Seoul ...",
    "hobbies": [
    	{ "name": "game", "when": "after work" },
        { "name": "travel", "when": "vacation", "visits": ["Bangkok", "Boracay", ...] }
    ],
    
    ...
}

 

역정규화된 형태로 정보가 저장이 돼있어서 관계형 데이터베이스처럼 join으로 여러 테이블을 참조하며 조회하는 일이 적다. 조회하면 Document가 json 형태이지만 MongoDB는 bson으로 가지고 있다.

 

스키마가 없기 때문에 Document 마다 서로 다른 필드를 가질 수 있다. 이 때문에 영수증같은 정보를 저장할 때 더 유연하게 저장할 수 있다.

// receipt 1
{
    "placeName": "NoodleShop",
    "visitedTime": "2021-07-24T13:12:34",
    "menus": [
    	{ "name": "Noodle", "price": 6000 },
        { "name": "Coke", "price": 1500 }
    ],
    "reservation": {
    	"time": "2021-07-24T12:00:00",
        "menus": [ { "name": "Noodle" } ]
    }
}

// receipt 2
{
	"placeName": "ParkingLot",
    "visitedTime": "2021-07-20T17:00:00",
    "parkingTime": {
    	"begin": "2021-07-20T13:00:00",
        "end": "2021-07-20T17:00:00"
    },
    "price": 20000
}

 

MongoDB는 각종 드라이버와 통신하는 서버, 데이터를 읽고 쓰는 스토리지 엔진으로 구성된다. 각종 드라이버에 관한 내용은 아래 참조 링크를 확인하자.

 

참조

'프로그래밍 > MongoDB' 카테고리의 다른 글

MongoDB 시작하기  (0) 2021.08.19
MongoDB 기초  (0) 2021.07.24
댓글
댓글쓰기 폼