−즉 스칼라 논리 시계는 인과관계를 완전히 판별하지 못한다. 서로 인과관계가 없는 동시 사건도 서로 다른 시각값을 가질 수 있으며, 모든 사건에 전순서를 부여하려면 같은 시각값을 프로세스 ID 같은 추가 규칙으로 깨야 한다. 이는 모든 노드가 하나의 물리적 “현재”를 즉시 공유한다고 가정할 수 없음을 뜻한다. 분산 상태는 단일 메모리 스냅샷이 아니라, 메시지 전달·순서 규칙·복제 및 합의 프로토콜 아래에서 각 노드가 유지하고 조정하는 상태들의 관계가 된다.
데이터베이스 트랜잭션은 이 문제를 상태 전이의 경계로 다뤘다. Gray의 1981년 정리는 트랜잭션을 상태 변환으로 설명하며 원자성, 일관성, 지속성을 핵심 성질로 제시한다.[13] 이후 널리 쓰인 ACID라는 표현에는 격리성까지 포함되며, 이 약어는 Härder와 Reuter의 1983년 논문에서 정리되었다.[14] 즉 장애와 동시 접근이 있어도 유효한 상태만 관찰하게 하려면, 락·격리 수준·원자적 커밋·복구 같은 별도 계약이 필요하다.
이 계보에서 상태는 단순히 메모리에 기록된 값이 아니라, 소유자·전이 순서·관찰 가능성·장애 후 복구까지 함께 정의해야 하는 시스템 자원이 되었다. 이벤트 소싱과 최종 일관성은 이 문제의 해법 전체가 아니라, 사건 기록과 복제본 수렴을 다루는 서로 다른 설계 선택지다.
+이러한 논리로 알 수 있는 것은, 스칼라 논리 시계는 인과관계를 완전히 판별하지 못한다. 동시 사건은 같은 시각값을 가질 수도 있고 서로 다른 시각값을 가질 수도 있다. 모든 사건에 전순서를 부여하려면 논리 시각과 프로세스 ID 같은 임의의 동률 해소 규칙을 결합할 수 있지만, 이렇게 얻은 순서에서 동시 사건 사이의 선후관계는 인과적 사실이 아니라 시스템이 선택한 순서다.
이는 일반적인 비동기 분산 시스템에서 모든 노드가 동일한 전역 현재와 사건의 절대적 선후관계를 즉시 공유한다고 전제할 수 없다는 뜻이다.
분산 상태는 단일 메모리 스냅샷이 아니라, 메시지 전달·순서 규칙·복제 및 합의 프로토콜 아래에서 각 노드가 유지하고 조정하는 상태들의 관계가 된다는 것이다.(왜 분산 프로그래밍이 악명높은지 이론적인 배경이다)
데이터베이스 트랜잭션은 이 문제를 상태 전이의 경계로 다뤘다. Gray의 1981년 정리는 트랜잭션을 상태 변환으로 설명하며 원자성, 일관성, 지속성을 핵심 성질로 제시한다.[각주 15]이후 널리 쓰인 ACID라는 표현에는 격리성까지 포함되며, 이 약어는 Härder와 Reuter의 1983년 논문에서 정리되었다.[각주 16] 즉 장애와 동시 접근 아래에서 정의한 무결성 제약과 격리 수준에 맞는 상태 전이를 제공하려면, 락이나 MVCC 같은 동시성 제어, commit/abort 경계, 로그와 복구, 그리고 여러 참여자가 있는 경우 원자적 커밋 프로토콜 같은 별도의 계약이 필요하다는 점이다.
이 계보에서 상태는 단순히 메모리에 기록된 값이 아니라, 소유자·전이 순서·관찰 가능성·장애 후 복구까지 함께 정의해야 하는 시스템 자원이 되었다. 이후 분산 상태를 다루는 설계에서는 이벤트 소싱과 최종 일관성 같은 선택지도 널리 사용되었다.
이 각각의 해법 또한 문제 전체의 해법이 아니라, 사건 기록과 복제본 수렴을 다루는 서로 다른 설계 선택지일 뿐이다.