가장 큰 차이점은 데이터의 일관성과 확장성
RDBMS는 사전 정의 된 스키마를 통해 데이터를 구조화하여 저장해야하기 때문에 데이터의 일관성과 무결성을 유지 할 수 있고, 테이블과 테이블의 관계설정과 쿼리문을 이용해 다른테이블에 참조하거나 복잡한 데이터 조작이 가능하다는 장점이 있습니다. ACID를 지원하기 때문에 데이터의 안전성과 무결성을 보장할 수 있습니다. ACID는 데이터베이스 트랜잭션을 관리할 때 중요한 역할을 합니다.
ACID란?
원자성 (Atomicity): 트랜잭션 내의 모든 작업은 전체가 성공하거나 전체가 실패해야 합니다. 중간에 작업이 실패하면 이전 상태로 롤백됩니다.
일관성 (Consistency): 트랜잭션을 통해 데이터베이스가 일관된 상태를 유지해야 합니다. 트랜잭션 전후의 데이터베이스 상태는 일관되어야 합니다.
고립성 (Isolation): 여러 개의 트랜잭션이 동시에 실행되더라도, 각 트랜잭션은 다른 트랜잭션의 작업에 영향을 받지 않도록 고립되어야 합니다.
지속성 (Durability): 트랜잭션이 성공적으로 완료되면 해당 트랜잭션에 대한 변경 내용은 영구적으로 저장되어야 합니다.
noSQL의 경우에는 다양한 데이터 모델을 이용해 유연한 데이터 저장이 가능하고 수평적 확장을 통한 대용량 데이터 처리가 가능하다는 장점이 있습니다. RDBMS의 경우에는 유저의 정보와 같이 일관성이 필요한 데이터를 처리할때, noSQL의 경우에는 실시간 채팅 같은 데이터를 처리할 때 사용하기 적합합니다. 저장방식으로는 key-value, document 형식의 데이터 모델로 저장하며 일반적으로 RDBMS에 비하여 쓰기와 읽기 성능이 빠른 특징이 있습니다. CAP이론을 통해 noSQL DB를 선택하여 DB의 활용도를 높게 설정 할 수 있다.
CAP 이론에 따르면 네트워크로 연결된 공유 데이터 시스템 또는 분산 시스템에서는 데이터베이스에 대해 일관성(Consistency), 가용성(Availability) 및 파티션 허용 오차(Partition Tolerance) 라는 세 가지 보장 중 최대 두 가지만 달성할 수 있다.
일관성(Consistency):
분산 시스템에서 연결하는 nodes에 관계없이 모든 클라이언트가 동시에 동일한 데이터를 볼 수 있음을 의미한다. 일관성을 유지하려면 데이터가 한 node에 기록될 때마다 쓰기가 성공한 것으로 간주되기 전에 시스템의 다른 모든 node에 데이터를 즉시 전달하거나 복사해야 한다.
가용성(Availability):
오류가 없는 모든 nodes는 하나 이상의 node가 다운되더라도 합리적인 시간 내에 모든 읽기 및 쓰기 요청에 대한 응답을 반환함을 의미한다. 이를 다른 말로 표현하면 분산 시스템의 모든 작업 nodes는 실패나 예외 없이 모든 요청에 대해 유효한 응답을 반환한다고 말할 수 있다.
파티션 허용 오차(Partition Tolerance):
임의의 메시지 손실 또는 시스템의 일부 오류에도 불구하고 시스템이 계속 작동함을 의미한다. 즉, 데이터 센터에 네트워크 중단이 발생하고 일부 컴퓨터에 연결할 수 없는 경우에도 시스템은 계속 작동한다. 파티션 허용 오차를 보장하는 분산 시스템은 파티션이 복구되면 파티션에서 정상적으로 복구할 수 있다.
CP(Consistent and Partition Tolerant) 데이터베이스:
CP 데이터베이스는 가용성을 희생하면서 Consistency과 Partition Tolerance를 제공한다. 두 nodes 사이에 파티션이 발생하면 시스템은 파티션이 해결될 때까지 일관되지 않은 노드를 종료해야 한다(즉, 사용할 수 없게 만들어야 함).
(파티션은 분산 시스템 내의 node 간의 통신 중단을 의미함)
AP(Available and Partition Tolerant) 데이터베이스:
AP 데이터베이스는 일관성을 희생하면서 Availability와 Partition Tolerance를 제공한다. 파티션이 발생하면 모든 노드를 계속 사용할 수 있지만 파티션에 의해 특정 node는 이전 버전의 데이터를 반환할 수 있다. 파티션이 해결되면 AP 데이터베이스는 일반적으로 node를 다시 동기화하여 시스템의 모든 불일치를 복구한다.
CA(Consistent and Available) 데이터베이스:
CA는 네트워크 파티션이 없을 때 Consistency와 availability를 제공한다. 종종 single node의 DB 서버는 CA 시스템으로 분류된다. single node DB 서버는 Partition Tolerance를 처리할 필요가 없으므로 CA 시스템으로 간주된다.
좋은 정보 얻어갑니다, 감사합니다.