DB에 대해서 알아보다가

RDB와 NoSql은 각각 장단점이 명확해서

이거를 아우를 수 있는 NewSql이 있다는걸 알았다!

 

오늘은 이걸 알아보고자 한당 ㅎ_ㅎ


NewSql 이란?

 

2011년에 처음나온 개념이다 (얼마안되었네..!)

간단히 말하자면,

NewSql = RDB + NoSql

 

RDB처럼 ANSI SQL문법과 ACID(트랜잭션)을 지원하고,

NOSql처럼 Scale-out을 지원한다.

 

 

MIT 마이클 스톤 브레이커 교수는 NewSql에 대해서 5가지로 정의 내렸다.

 

정의

1.SQL 기반 상호작용

- SQL 문법을 사용한다

 

2. 트랜잭션을 위한 ACID 지원

- 트랜잭션 커밋(Commit)을 위한 필요속성인 ACID( 원자성, 일관성, 고립성, 지속성)을 지원

  • 원자성(Atomicity) : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
  • 일관성(Consistency): 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지
  • 고립성(Isolation): 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장
  • 지속성(Durability): 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함

 

3. 비잠금 동시성 제어

- 데이터 무결성 처리를 위해 지원하는 트랜잭션 동시제어 잠금처리와 관련해 기존 방식과는 다른 Non-locking 구조를 지원

- 락을 걸지않고 단일 스케줄을 통해 동시성 제어를 한다.

 

4. 노드 단위 고성능

- 각 단일 DBMS 서버 노드 단위로 확장해 고성능 보장

- 네트워크를 통한 처리가 없고 Node 단위로 확장하여 성능을 높일 수 있다.

 

5. 병렬, 비공유 아키텍쳐

- 병렬적으로 수행해서 데이터를 고성능으로 처리 할 수 있어야하고, 분산 처리 시 데이터가 각 서버에 중복되지 않고 독립적으로 존재해야 한다.

- CPU, RAM, DISK 같은 하드웨어 자원을 서로 공유하지 않고 개별적으로 사용한다.

 

 

이걸로만으론 그렇게 와닿지가 않는다..! 더 찾아보자

 

특성

1. Partitioning/Sharding

Sharding를 통해 Scale-out을 지원한다.

- Sharding : 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법

- ex) 전 세계의 고객 데이터를 저장하는 DB를 분산한다면, 아시아면 샤드A, 유럽이면 샤드B... 이런식으로 저장한다.

- 테이블을 컬럼 값을 기초로하여 나눈다.

 

 

2. Concurrency Control

MVCC(Multi Version Concorrencty Control) 기법 적용

- NewSql은 트랜잭션에 의해 데이터 갱신이 발생 할때, 생성된 사본에 데이터를 갱신하는 연산을 수행하므로

다른 트랜잭션에 영향을 끼치지 않으면서 빠른 성능을 구현 할 수 있다.

 

 

3. Crash Recovery 

시스템이 무너졌을때, 데이터를 복구하고 상태를 유지하는 기능이 있다.

 

 

4. In-Memory DB

실시간 저장 및 처리를 위해서 인메모리 DB 아키텍처이다.

- 모든 NewSql이 인메모리 DB는 아니지만, 대부분 지원한다.

- 비싼 메모리 가격과 메모리 용량으로 인해 실시간 데이터 처리가 필요한 특정업무에만 제한적으로 사용돼 왔다.

- 메인 메모리 속성인 휘발성 때문에 디스크 백업이 필요한 제약을 극복하기 위한 연구 진행중이다.

 

 

 

RDB, NoSql, NewSql 비교

특성 RDB NoSql NewSql
ACID특성 O X(BASE 제공) O
인메모리 DB X O O
빅데이터 X O O
스케일 아웃 X O O
H/A O O O
리플리케이션 * O O O
성능 X O O
SQL지원 O X O
Relational O X O
join O X O

 

 

*리플리케이션 (replication) : 두개이상의 DBMS시스템을 Master/ Slave로 나눠서 동일한 데이터를 저장하는 방식

 

 

 

 

 


참고사이트

http://www.itworld.co.kr/news/111071

https://www.predictiveanalyticstoday.com/newsql-databases/

https://bitnine.tistory.com/entry/NewSQL%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

'DEVELOP > DB' 카테고리의 다른 글

[MariaDB] general log 설정하기  (0) 2020.05.25
DB (mysql) 설정 변경  (0) 2020.03.13
NoSql DB 종류  (0) 2019.12.13
DB(database)의 종류  (0) 2019.12.11
Liquibase 사용법 및 개념  (0) 2019.06.12

+ Recent posts