이번 글에서는 NoSQL 에 대해서 살펴볼 것이다.
NoSQL 중에서도 MongoDB 에 대해서 살펴볼 것이다.
NoSQL 개요
1. 일단 No SQL 이라는 뜻이 아니다.
Not Only SQL 을 줄인 말이다.
NoSQL 과 다른 개념으로는 RDMS 가 있다.
이 글을 읽는 사람 중에는 RDMS 를 알고 있는 사람이 많을 것 같다.
RDMS 는 관계형 DB 이다.
관계형 DB 는 2차원 표 형태로 데이터를 저장하고 관리한다 .
NoSQL 은 기존의 RDBMS 의 한계를 극복하기 위해서 만들어진 새로운 데이터 저장소이다.
MySQL 같은 관계형 DB 가 아니므로, 고정된 스키마 , Join 이 존재하지 않는다.
그러면 이제 NoSQL 의 한 종류인 MongoDB 에 대해서 알아본다.
MongoDB는 Document-Oriented DB이다.
현존하는 NoSQL 중에서 가장 인지도가 있다.
확장성과 성능도 좋다.
Document - Oriented 가 무슨 뜻인지 살펴보자.
여기서는 Document 를 문서로 직역하면 안된다.
여기서의 Document 는 json 의 형태이다.
아래와 같은 형태이다. key 와 value 로 구성되어 있다.
1 2 3 4 5 6 | { "_id": ObjectId("2099801dg3a4948bd2f98391"), "password": "123456", "name": "john" } | cs |
여기서 id , password , name은 key 다.
key 의 오른쪽에 있는 값들은 value 이다.
id 는 12bytes 의 hexdecimal 값이다. 해당 document 의 고유 값이다.
firebase 를 사용해본 사람이라면 이해가 빠를 것이다.
2. NoSQL DB 설계 예시
이번에는 DB 설계 예제를 살펴보자.
RDMS 에서는 이런 구조로 데이터베이스를 설계한다.
그렇다면 NoSQL 에서는 어떨까
NoSQL 에서는 아래와 같다.
이 document 는 예시일 뿐이며, 위의 데이터 모델과는 상관 없다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { _id: POST_ID, title: POST_TITLE, content: POST_CONTENT, username: POST_WRITER, tags: [ TAG1, TAG2, TAG3 ], time: POST_TIME comments: [ { username: COMMENT_WRITER, mesage: COMMENT_MESSAGE, time: COMMENT_TIME }, { username: COMMENT_WRITER, mesage: COMMENT_MESSAGE, time: COMMENT_TIME } ] } | cs |
'Database | 데이터베이스 > NoSQL' 카테고리의 다른 글
Mongo DB의 index (0) | 2019.09.30 |
---|---|
Mongo DB Compass select 문 (0) | 2019.03.28 |
NoSQL 정리 - 구조 , 연결 (0) | 2018.10.11 |
댓글