@Hadev
하댑의 개발 기록
@Hadev
전체 방문자
오늘
어제
  • All categories (65)
    • 📒 Tech Note (56)
      • Flutter (0)
      • Unity C# (1)
      • 웹 프로그래밍 (12)
      • CS 기본기 뚝딱 (3)
      • 알고리즘 & 자료구조 (10)
      • DB (6)
      • Cloud (10)
      • DevOps (14)
    • 🔖 Story (9)
      • 💻 개발 언저리 공부 (4)
      • ⛵️ 취미 & 팁 (5)
      • 💸 재테크 (0)

인기 글

티스토리

hELLO · Designed By 정상우.
@Hadev
🚀 Hadev Tech Blog
ABOUT
TAG
GUESTBOOK
NOSQL이랑 친해지기 - SQL과 NoSQL를 비교해보자 (2/5)
📒 Tech Note/DB

NOSQL이랑 친해지기 - SQL과 NoSQL를 비교해보자 (2/5)

2020. 7. 14. 14:21

SQL vs NoSQL : MySQL vs MongoDB

Introduction

SQL?

Structured Query Language

*출처: Academind

 

SQL은 데이터베이스가 아닌 쿼리언어를 지칭하는 용어입니다. 데이터베이스에서 데이터를 입력하고 삭제하고 수정하는 등 일련의 명령을 수행하는데 사용하는 언어인 것이죠.

Database Structure는 주로 Tables을 의미하는데, 보통 각 필드가 Columns으로 정의되고, 내용들을 Rows에 저장합니다. Products는 주로 Schema를 바탕으로 Nomalization 되어 있습니다. SQL 데이터베이스에서 정말 중요한 포인트는 바로 하나의 테이블이 아닌 여러 테이블들이 서로 Relation을 가진다는 점에 있습니다. Relation의 종류에는 1:1, 1:N, M:N 등 다양하게 존재합니다.

NoSQL?

대표적인 NoSQL 데이터베이스인 MongoDB는 Humongous라는 언어에서 기원하죠. 굉장히 많은 데이터를 좀 더 효율적으로 쌓고 싶어! 라는 의미라고 하네요.

MongoDB는 Document-Oriented NoSQL 데이터베이스입니다. 오픈 소스이고, 엔진은 C++로 작성되었습니다. Document는 JSON objects 형태의 key-value 쌍으로 이뤄진 데이터 구조로 구성됩니다.

value로는 다른 document, array, document array가 포함될 수 있습니다.

# Document 예시 { name: "ha", dept: "klab", role: "software developer", groups: ["CTO", "Korea"] }{ _id: ObjectId("2346613df3f4948bd2f75456"), name: { first: "ha", last: "lee" }, created: new Date('Jun 23, 2020'), deleted: new Date('Jun 07, 2021'), contribs: [ "guild master", "wizard"], views : NumberLong(1250000) }

Database > Collections > Documents

*출처: poiemaweb.com

Collections은 RDMS의 table과 유사한 개념으로 Document들의 집합으로 구성됩니다.

Database는 위 Collection들의 집합입니다.

대표적인 특징으로 다음 두가지를 들 수 있어요.

No Schema! 새로운 데이터를 포맷에 상관없이 추가할 수 있습니다. 형태가 달라도 같은 collections 안에 입력할 수 있는 것이죠.

No/Few Relations! 데이터들 끼리 관계는 거의 없다고 생각하면 됩니다. 그냥 같은 공간에 여러 데이터를 모아두는 셈이죠. 여기서 단점이 될 수 있는 점은 비슷한 데이터가 여러개 존재할 수 있다다는 것이죠.

예를 들어, 온라인 쇼핑몰에서 주문 데이터와 유저 데이터를 생각해봅시다. 주문 데이터에는 당연히 주문한 유저에 대한 데이터가 포함되어 있기 때문에 기존에 가지고 있는 유저 데이터의 내용과 겹치겠죠. 이런 것들이 계속 쌓이면 데이터 양이 쓸데없이 많아질 수도 있겠죠.

Scalability! 하나의 document에 많은 데이터를 포함하면서 여러개의 sub document를 가질 수 있는 구조는 확장성을 우수하게 해줘요. 직접 써보면서 이해하는게 더 빠르긴 한데요, 여러개의 데이터베이스에 데이터를 분할하는 기술인 Sharding 클러스터 구축에 유리한 점이 있다고 합니다.

*출처:   Madura Dissanayake

 

RDMS와 MongoDB 비교

*출처: pluralsight

Reference

  • Academind, SQL vs NoSQL or MySQL vs MongoDB

  • Poiemaweb, https://poiemaweb.com/mongdb-basics

저작자표시 비영리 변경금지 (새창열림)

'📒 Tech Note > DB' 카테고리의 다른 글

[SQL] 문자열 합치기 (CONCAT 함수)  (0) 2020.08.02
NOSQL이랑 친해지기 - MongoDB Compass 실습 (5/5)  (0) 2020.07.14
NOSQL이랑 친해지기 - MongoDB 설치 및 환경설정 (4/5)  (0) 2020.07.14
NOSQL이랑 친해지기 - 퍼블릭 클라우드와 NoSQL (3/5)  (0) 2020.07.14
NoSQL이랑 친해지기 - 개념 이해하기 (1/5)  (0) 2020.07.14
    '📒 Tech Note/DB' 카테고리의 다른 글
    • NOSQL이랑 친해지기 - MongoDB Compass 실습 (5/5)
    • NOSQL이랑 친해지기 - MongoDB 설치 및 환경설정 (4/5)
    • NOSQL이랑 친해지기 - 퍼블릭 클라우드와 NoSQL (3/5)
    • NoSQL이랑 친해지기 - 개념 이해하기 (1/5)
    @Hadev
    @Hadev

    티스토리툴바