그런데,, NoSQL은 무결성이 보장되는 것인가? 트랙젝션 수행시 ACID 는 그럼 어떻게 되는건가? 에 대한 답변을 스스로 완벽하게 할 수 없어서 이 부분에 대해서 더 공부해보았다.
sql 사용시,
NoSQL은,
스키마도 없고 관계도 없음
다른 구조의 데이터를 같은 컬렉션에 추가 가능함
수평적 확장이 용이함
1) 관계형 데이터베이스는 어떠한 상황에서도 무결성(integrity)
을 보장해준다; (데이터의 정확성과 일관성을 유지하고 보증하는 것)
무결성(integrity)
은 데이터에 결함이 없는 상태, 즉 데이터를 정확하고 유효하게 유지하는 것이다. 데이트베이스가 삽입, 삭제, 수정, 연산으로 상태가 변하더라도 무결성 제약조건은 반드시 지켜져야 한다.
→ 관계형 데이터 모델의 주요 제약 조건
2) RDBMS에는 데이터베이스 트랜잭션이 정상적으로 처리되기 위한 4가지 필수 속성이 있다. (ACID)
트랜잭션이란 데이터베이스의 상태를 변화시키는 하나의 작업단위를 의미한다. DB의 상태는 딱 Rollback과 Commit으로 이루어져 있다.
트랜잭션이 필요한 이유에는 여러가지가 있지만 두가지 정도를 말해보자면,,
원자성(Atomicity)
: 트랜젝션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장함
방법 : Commit 과 Rollback
일관성(Consistency)
: 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말함
방법 : 데이터 모델의 모든 제약 조건(기본키,외래키,도메인 제약 조건 등)
격리성(Isolation)
: 트랜잭션 수행시 다른 트랜색션의 작업이 끼어들지 못하도록 보장함 (즉, 트랜젝션끼리는 서로 간섭 불가함)
방법 : lock 방식
지속성(Durability)
: 성공적으로 수행된 트랜잭션은 영원히 반영이 됨
3) BASE: 성능과 가용성 등을 위해서 ACID의 C와 I의 속성을 포기하고 분산 시스템에 더 적합하다고 생각되는 성질이다.
전체적인 RDMBS의 특징과 NoSQL의 간략한 차이를 이해하고 싶다면 아래 링크를 추천함
[Database] RDBMS/NoSQL
NoSQL의 BASE/CAP 이론이 궁금하다면 아래 링크를 추천함
NoSQL에 대해서 간단히 알아보자!
트랜젝션의 ACID 성질에 대해 알아보고싶다면 아래 링크를 추천함
[데이터베이스] 트랜잭션의 ACID 성질