비디오: The SCP Foundation — Down the Rabbit Hole 2024
관계형 데이터베이스 시스템의 하나의 특징은 ACID 준수로 알려진 것입니다. 당신이 짐작 했겠지만, ACID는 머리 글자 어로, 개별 데이터베이스 트랜잭션의 특성을 설명하기위한 개별 문자는이 목록에 설명 된대로 확장 될 수 있습니다.
-
Atomicity: 데이터베이스 트랜잭션은 완전히 완료되어야합니다 성공하거나 완전히 실패합니다. 부분적인 성공은 허용되지 않습니다.
-
일관성: 데이터베이스 트랜잭션 중에 RDBMS는 하나의 유효한 상태에서 다른 상태로 진행합니다. 국가는 결코 무효가 아닙니다.
-
격리: 클라이언트의 데이터베이스 트랜잭션은 RDBMS와 트랜잭션을 시도하는 다른 클라이언트와 분리되어 수행되어야합니다.
-
내구성: 트랜잭션의 일부인 데이터 작업은 비 휘발성 저장소 (하드 디스크와 같이 전원이 공급되지 않아도 저장된 정보를 검색 할 수있는 컴퓨터 메모리)에 반영되어야하며 트랜잭션이 성공적으로 완료됩니다. 트랜잭션 오류로 인해 데이터가 부분적으로 커밋 된 상태가 될 수 없습니다.
온라인 트랜잭션 처리와 같이 RDBMS의 특정 사용 사례는 시스템이 제대로 작동하기 위해 클라이언트와 RDBMS 간의 ACID 호환 트랜잭션에 의존합니다. ACID를 준수하는 거래의 가장 좋은 예는 한 은행 계좌에서 다른 계좌로 자금을 이체하는 것입니다.
이것은 두 개의 데이터베이스 트랜잭션으로 나뉘어집니다. 여기에서는 원래 계정에 인출이 표시되고 대상 계정에 입금이 표시됩니다. 분명히,이 두 거래는 유효하기 위해 함께 묶여 져야한다. 그래서 어느 쪽이라도 실패하면, 양쪽 작업이 모두 유효하게 유지되도록 전체 작동이 실패해야한다.
반영하기 때문에 Hadoop 방식의 선례가 있습니다. NoSQL 데이터 저장소의 핵심 개념 중 하나는 모든 애플리케이션이 진정으로 ACID 준수 트랜잭션을 필요로하지 않는다는 것입니다. 특정 ACID 속성을 완화하고 관계형 모델에서 벗어나면 NoSQL 데이터 저장소의 일부가 틈새 애플리케이션에 대규모 확장 성과 성능을 구현할 수있는 가능성이 열렸습니다. ACID는 신뢰할 수있는 트랜잭션 처리에 필요한 주요 특성을 정의하지만 NoSQL 세계는 유연성과 확장 성을 위해 서로 다른 특성을 요구합니다.이러한 반대되는 특성은 BASE: Basically
A
-
vailable: 로 독창적으로 캡쳐됩니다. 시스템은 모든 사용자가 쿼리 할 수 있도록 보장됩니다. S 현재 상태: 다음 글 머리표에서 설명하는 것처럼 최종 일관성 모델로 인해 시스템에 저장된 값이 변경 될 수 있습니다. 일관되게:
-
데이터가 시스템에 추가됨에 따라 시스템의 상태는 점차 모든 노드에 복제됩니다. 예를 들어 Hadoop에서 HDFS에 파일을 쓰면 원본 데이터 블록이 기록 된 후 데이터 블록의 복제본이 다른 데이터 노드에 만들어집니다. 블록이 복제되기 전에 짧은 기간 동안 파일 시스템의 상태가 일관성이 없습니다. 대부분의 NoSQL 데이터 저장소가 ACID 특성을 완전히 포기하지는 않기 때문에 BASE라는 약어는 다소 인위적입니다. 이름에서 알 수있는 극 정반 개념은 아닙니다. 또한 Soft State와 Consistent 특성은 동일한 것으로 나타 났지만 일관성을 완화하여 시스템을 수평 적으로 확장 (많은 노드)하고 가용성을 보장 할 수 있다는 점이 중요합니다. 설계자가 시스템에서 제공하고자하는 세 가지 종류의 보증을 나타내는 CAP 정리를 언급하지 않고 NoSQL에 대한 논의는 완료되지 않습니다.
-
일관성: ACID의 C와 유사하게, 시스템은 언제든지 동일한 데이터보기를 갖게됩니다. 가용성:
시스템은 항상 요청에 응답합니다. 파티션 공차: 시스템 노드간에 네트워크 문제가 발생하면 시스템은 온라인 상태를 유지합니다.
CAP 이론에 따르면 분산 네트워크 시스템에서 건축가는이 세 가지 보증 중 두 가지를 선택해야합니다. 즉, 세 가지를 모두 약속 할 수는 없습니다. 그 결과 세 가지 가능성이 있습니다:
-
전통적인 관계 기술을 사용하는 시스템 은 일반적으로 파티션 내결함성이 아니므로 일관성과 가용성을 보장 할 수 있습니다. 즉, 이러한 전통적인 관계형 기술 시스템의 일부가 오프라인이면 전체 시스템이 오프라인입니다. 파티션 내구성과 가용성이 가장 중요한 시스템 인
-
는 파티션의 양쪽에서 업데이트 (일관성을 파괴하는)를 만들 수 있기 때문에 일관성을 보장 할 수 없습니다. 키 - 값 저장소 인 Dynamo 및 CouchDB와 열 패밀리 저장소 인 Cassandra는 Partial tolerant / availability (PA) 시스템의 보편적 인 예입니다. 파티션 내구성과 일관성이 가장 중요한 시스템 인 는 파티션 된 상태가 해결 될 때까지 시스템이 오류를 리턴하기 때문에 가용성을 보장 할 수 없습니다.
-
Hadoop 기반 데이터 저장소는 CP 시스템으로 간주됩니다 (일관성있는 및
P
-
관용도). 많은 슬레이브 노드에 중복 된 데이터가 저장되어 있기 때문에 Hadoop 클러스터의 많은 부분 (파티션)에 대한 장애를 용인 할 수 있습니다. Hadoop은 클러스터에 저장된 데이터의 일관된 단일보기를 유지 관리하는 중앙 메타 데이터 저장소 (NameNode)가 있으므로 일관성있는 것으로 간주됩니다.