Mysql

SQL vs NoSQL DB

김모우 2021. 3. 24. 21:45
728x90
반응형

 

회사에서 Redis 관련 아이템들에 대한 모니터링 방법을 고민하다. SQL DB, NoSQL DB의 차이점은 뭐가 있고, 대표적인 DB에는 어떤 것들이 있고, 주로 어떤 곳에 쓰이고 있는 지 궁금해서 해당 내용에 대해서 공부하고 내용을 정리해보았습니다.

 

 

1. SQL DB

 

- SQL DB는 주로 관계형 데이터베이스라고 불리며 SQL(Structure Query Language)를 사용해 데이터를 정의하고 처리하는 DB를 뜻합니다. 그러므로 SQL = RDBMS(관계형 데이터베이스)라고도 부르기도합니다. SQL의 경우에는 구조화된 데이터 구조 즉, 스키마를 통해 데이터가 정의되므로 같은 테이블에 저장된 데이터들은 지정된 동일한 구조를 가지게되며 관계를 통해서 연결되어 있는 여러 테이블에 분산되어 저장되게 됩니다.

 

- 특징

: 정확한 스키마를 가진 레코드만 저장 가능(데이터 무결성 보장)

: 각각 테이블들은 다른 테이블에 저장되지 않은 데이터만을 가짐(데이터 중복 X)

: 중복이 없으므로 다른 테이블에서 부정확한 데이터를 다른 위험이 없음

 

- 스키마(Schema): 데이터베이스의 구조와 제약조건을 정의한 것으로, 쉽게는 폴더에 해당하며 스키마도 폴더처럼 사용자가 자유롭게 만들수 있고, 사용자에 따라 접근을 제한하는 등의 권한 관리가 가능합니다. 폴더이기 때문에 여러 파일을 넣을 수 있는 것처럼 여러 테이블을 담을 수 있습니다. 

 

- Table은 아래와 같이 정해진 스키마를 가지고 있습니다.

 

# 스키마 종류

- 데이터 타입
- 길이
- 기타 

 

 

 

- 관계(Relation): 데이터의 중복을 피하기 위해, 데이터들을 여러 테이블에 나누어 저장하게 되믄데, 예를 들어 users, usergroup, hosts 등의 여러 테이블이 존재할 때 각각의 테이블들은 서로 다른 테이블에 저장되지 않은 데이터만을 가지게됩니다.

 

- 아래의 두 테이블에 저장된 데이터를 보게되면, 아래와 같은 관계를 통해 userid 키를 공유하고 있습니다. 그러므로 users table에서 userid를 변경하게 되면, 관계를 맺고 있는 테이블이 모두 영향을 받게 되며, 데이터의 일관성을 유지할 수 있습니다.

 

user_groups, users Table 구조

 

데이터 쿼리

 

- 주요 사용처

: 관계를 맺고 있는 데이터가 자주 변경되는 경우(Query문을 통해 데이터 일괄 변경 지원)

: 변경될 여지가 많고, 명확한 스키마가 사용자 데이터에 중요한 경우

 

* 컨텐츠 데이터, 유저 정보 등

 

 

2. NoSQL DB

 

- NoSQL DB는 구조화 되지 않는 데이터를 다양한 방식으로 저장을 합니다. SQL에서 저장된 데이터를 Record(기록)이라 부르는데 NoSQL DB에서는 데이터를 Document(문서)라고 부릅니다. 저장된 데이터는 그래프 기반으로 Key - Value 형태로 정의되어지며, 아래와 같은 특징을 가집니다.

 

- 특징

: 구조를 정의하지 않고도 Document 작성이 가능합니다.

: 각 Document는 고유한 구조를 가질 수 있습니다.

: 구문은 데이터베이스마다 다를 수 있습니다.

: 프로젝트를 진행하며 필드 추가 확장이 가능합니다. (수직, 수평적인 확장 모두 가능)

 

- 수직, 수평적 확장

A. 수직적 확장
: 단순히 DB 서버의 성능을 향상 시키는 일

B. 수평적 확장
: 보다 많은 서버를 추가(노드 증가), 데이터베이스를 전체적으로 분산 / 하나의 데이터베이스 - 여러 호스트 동작

 

- 주요 사용처 

: 다루어야 하는 데이터의 양이 많을 경우

: 데이터 변경을 자주하지 않을 때, 데이터 업데이트 X

: 저장 및 조회만 주로 사용 하는 경우

 

* 접속 계정 상태, 대기열 정보, Session 등

 

 

 

3. SQL vs NOSQL 비교

 

- 주요 특징 비교

SQL NoSQL
RDBMS(관계형 데이터에비스 관리 시스템) 비 관계형 또는 분산 데이터베이스 시스템
고정 또는 정적 사전 정의된 스키마 동적 스키마
계층적 데이터 저장소 X 계층적 데이터 저장소 O
복잡한 쿼리 단순한 쿼리, 주로 저장 및 조회만 사용
수직 확장 가능 수직, 수평 확장 모두 가능
ACID 속성 CAP(일관성, 가용성, 파티션 허용 오차)

 

- 주요 DB

SQL NoSQL
MySQL, Oracle, MsSQL MongoDB, Cassandra, Redis

 

728x90
반응형

'Mysql' 카테고리의 다른 글

MySQL 저장 위치 변경  (0) 2021.04.28
MySQL 계정 암호 변경  (0) 2021.04.03
주요 성능 카운터  (0) 2020.10.25
Mysql 8.0 설정 변경 사항  (0) 2020.10.15
Mysql 데이터 타입  (0) 2020.10.15