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 |