1 minute read

분산 시스템의 작업은 순서가 존재 한다. 이 때, 전체 순서와 부분 순서의 차이는 데이터 베이스 일관성 모델에서도 적용된다.

선형화 가능성

선형화 가능한 시스템에서는 전체 작업 순서가 있다. 시스템이 데이터의 복사본이 하나만 있고 모든 작업이 원자적인 것처럼 작동하는 경우, 이는 두 작업 중 어느 작업이 먼저 발생했는지 항상 말할 수 있다는 것을 의미한다.

인과 관계

한 이벤트가 다른 이벤트보다 먼저 발생한 경우에는 순서가 정해지지만, 동시성이 있는 경우에는 비교할 수 없다. 즉, 인과관계는 전체 순서가 아니라 부분 순서를 정의하며, 일부 작업은 서로에 대해 순서가 정해져 있지만 일부는 비교할 수 없다.

선형 분석이 가능한 데이터 저장소에는 동시 작업이 존재하지 않으며, 모든 작업이 완전히 정렬된 단일 타임라인이 존재해야 한다. 처리되기를 기다리는 여러 요청이 있더라도, 데이터 저장소는 모든 요청이 단일한 타임라인을 따라 단일 데이터 사본에 대해 작동하면서 단일 시점에 원자적으로 처리되도록 보장하며, 동시성 없이 처리된다.

Git과 같은 분산 버전 관리 시스템의 버전 히스토리가 인과 관계 그래프와 매우 유사하다. 하나의 커밋이 일직선상에서 연속적으로 발생하는 경우가 많지만, 때로는 여러 사람이 동시에 프로젝트를 작업하는 경우에 의해 브랜치가 발생하고, 현재 생성된 커밋이 합쳐질 때 병합이 된다.

선형화 가능성은 인과적 일관성보다 더 강력하다

선형화 가능성은 인과성을 의미하며, 선형화 가능한 모든 시스템은 인과성을 올바르게 보존한다는 것이다. 특히 시스템에 여러 통신 채널이 있는 경우(메시지 큐와 파일 저장 서비스), 선형화 가능성은 시스템이 특별한 작업(예를 들어, 서로 다른 컴포넌트 간에 타임스탬프 전달)을 하지 않아도 인과성이 자동으로 보존되도록 보장한다. 선형화 기능이 인과관계를 보장한다는 사실은 선형화 가능 시스템을 이해하기 쉽고 매력적으로 만드는 요소다. 그러나, 시스템을 선형화할 수 있게 만들면 특히 시스템이 지리적으로 분산되어 있는 등 네트워크 지연이 심각한 경우 성능과 가용성이 저하될 수 있다. 이러한 이유로 일부 분산 데이터 시스템에서는 선형화 기능을 포기하여 더 나은 성능을 달성할 수 있다.

좋은 소식은 양자택일을 할 필요가 없다는 것이다. 선형화 가능성만이 인과관계를 보존하는 유일한 방법은 아니며, 다른 방법도 있다. 시스템을 선형화할 때 발생하는 성능 저하 없이도 인과적 일관성을 유지할 수 있다. 실제로 인과적 일관성은 네트워크 지연으로 인해 속도가 느려지지 않고 네트워크 장애가 발생해도 계속 사용할 수 있는 가장 강력한 일관성 모델이다.

많은 경우, 선형성이 필요한 것처럼 보이는 시스템도 실제로는 인과적 일관성만 있으면 더 효율적으로 구현할 수 있다. 이러한 관찰을 바탕으로 일관된 시스템과 유사한 성능 및 가용성 특성을 가진 인과성을 보존하는 새로운 종류의 데이터베이스에 대한 연구는 아주 최근에 이루어졌고, 여전히 극복해야 할 과제가 남아 있다.