[Database] SQL vs NoSQL

Steve·2021년 6월 17일
0

웹개발 코스

목록 보기
45/59

NoSQL 이란
SQL vs NoSQL


데이터베이스는 크게 relational database 와 non-relational database 로 양분된다.

Relational DB 는 SQL 로 데이터를 다룬다.
Non-relational DB 는 NoSQL 로 데이터를 다룬다.

NoSQL

Non-Structured Query Language

데이터가 고정되어 있지 않은 데이터베이스의 형태를 가리킨다.

NoSQL 기반의 non-relational DB 는 보통 다음과 같은 타입으로 구성된다.

Key - Value DB

데이터를 Key-Value pair 배열 형태로 저장한다.

Redis, Dynamo

Document DB

데이터를 테이블이 아닌 문서처럼 저장한다.

  • 보통 JSON 유사 형식으로 데이터를 문서화한다.
  • 각각의 문서는 하나의 속성에 대한 데이터를 가지고 있고, collection 이라고 하는 그룹으로 묶어서 관리한다.

MondgoDB

Wide - Column DB

DB 의 column 관리에 집중하는 DB 이다.

  • 각 column 에는 key-value 형식으로 데이터가 저장되고, column family 라고 하는 column 의 집합체 단위로 데이터를 처리할 수 있다.

  • 하나의 행에 많은 column 을 포함할 수 있어 유연성이 높다. 이 점에서 규모가 큰 데이터 분석에 주로 자주 사용된다.

Cassandra, HBase

Graph DB

Graph 와 비슷한 형식으로 데이터 간의 관계를 구성하는 DB 이다.

  • 데이터는 node 에 속성(entity) 별로 저장된다.
  • 각 노드간 관계는 edge 로 연결된다.

Neo4J, InifiniteGraph

SQL 과 NoSQL 의 차이점

분류SQLNoSQL
Storage테이블에 미리 작성된 schema 를 기반으로 정해진 형식에 맞게 데이터를 저장key-value, document, graph, wide-column 형식등의 방식으로 데이터를 저장
Schema- 고정된 schema 가 필요.
- Schema 를 변경하려면 DB 를 수정하거나 오프라인(down-time) 으로 전환
- 동적인 형태의 schema
- 모든 column 을 반드시 채우지 않아도 됨.
Querying테이블의 형식과 테이블간의 관계에 맞춰서 데이터를 요청데이터 그룹 자체를 조회하는것에 초점을 둠.
Scalability- 수직적 확장 (높은 메모리, CPU를 사용하는 확장)
- 고비용
- 복수의 서버에 만들 시 복잡하고 시간이 많이 소모됨
- 수평적 확장 (값싼 서버 증설, 클라우드 서비스를 이용하는 확장)
- 많은 트래픽 처리를 위한 서버 추가 구축이 쉬움
- 비용 효율성 높음
  • scalability - (컴퓨터) 확장성

어떤 것을 사용해야 하는가

상황에 맞게 선택한다.

SQL 기반의 Relatinoal DB 를 사용하는 경우

1) DB 의 ACID 특성을 준수해야 하는 경우

  • 전자 상거래, 금융 서비스 - ACID 를 준수하는 것이 필수

2) 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우

NoSQL 기반의 Non-Relatinoal DB 를 사용하는 경우

1) 데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장하는 경우

  • 대부분의 NoSQL DB 는 저장할 수 있는 데이터 유형을 제한하지 않음.

2) 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

  • 여러 데이터 센터에 걸쳐서 번거로움 없이 확장 가능

3) 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우

  • Schema 를 미리 준비할 필요가 없기 때문에 개발이 빨라짐.
  • 구조 업데이트시 다운타임(DB 서버 오프라인) 없이 수정가능
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글