데이터베이스 약한 격리 모델의 복잡성: 거짓말을 추적하는 비용과 강한 일관성의 가치

The Problem with Lying Is Keeping Track of All the Lies

작성자
HackerNews
발행일
2024년 06월 05일

핵심 요약

  • 1 데이터베이스의 약한 격리 모델은 개발자에게 모든 잠재적 불일치(이상 현상)를 추적해야 하는 복잡한 전역 추론을 요구하며, 이는 개발 속도를 현저히 저하시킵니다.
  • 2 직렬화 가능성(serializability)과 같은 강한 격리 수준은 개발자가 개별 쿼리에 집중할 수 있는 로컬 추론을 가능하게 하여, 데이터 일관성을 보장하고 개발 효율성을 극대화합니다.
  • 3 특히 스트림 처리 환경에서 약한 격리 모델은 영구적이고 예측 불가능한 불일치를 초래할 수 있으므로, 엄격한 직렬화 가능성(strict serializability)과 같은 강력한 일관성 보장이 필수적입니다.

도입

“거짓말을 하면 모든 거짓말과 그 대상들을 기억해야 한다”는 말처럼, 데이터베이스의 약한 격리 모델은 개발자에게 유사한 부담을 안겨줍니다. 시스템이 데이터 일관성에 대한 강력한 보장을 제공하지 않을 때, 개발자는 잠재적인 오류 상태나 사용자에게 보이는 불일치를 방지하기 위해 모든 상호작용을 면밀히 고려해야 합니다. 이는 마치 시스템이 '거짓말'을 하고 개발자가 이를 '추적'하는 것과 같으며, 결과적으로 개발자의 사고와 민첩성을 저하시키고 개발 속도를 늦추는 주된 원인이 됩니다.

데이터 플랫폼에서 약한 격리 모델을 사용할 경우, 개발자는 잠재적인 오류 상태나 최종 사용자에게 보이는 불일치를 방지하기 위해 끊임없이 아키텍처 다이어그램을 분석하고 서비스 간의 데이터 흐름을 추적해야 합니다. 이는 “전역 추론(global reasoning)”을 요구하며, 모든 쿼리 변경이 시스템 전체의 다른 쿼리들과 어떻게 상호작용할지 고려해야 하는 막대한 인지 부하를 발생시킵니다.

이상 현상(Anomalies)과 전역 추론의 비용

  • 이상 현상의 발생: 약한 격리 수준은 쓰기 스큐(write skew), 팬텀 읽기(phantom reads), 손실된 업데이트(lost updates), 반복 불가능한 읽기(unrepeatable reads) 등 다양한 이상 현상을 유발합니다. 스냅샷 격리는 쓰기 스큐를 방지하지 못하며, read committed 모드에서는 더 많은 이상 현상이 발생합니다. 심지어 PostgreSQL의 repeatable read 모드조차 g2-item이라는 미묘한 이상 현상을 허용합니다.

  • 수동 검증의 어려움: 이론적으로 선행 그래프를 통해 이상 현상을 방지할 수 있으나, 실제로는 이 복잡한 검증 과정을 성공적으로 수행하는 개발자는 드뭅니다.

  • 막대한 비용: 약한 격리 모델은 개발자에게 모든 가능한 트랜잭션 집합 검토, 다른 프로그래머의 제안 검토 등 막대한 작업을 요구하며, 이는 회의 시간, 분석 시간, 직원 급여 등 엄청난 비용으로 이어집니다. 이는 성능을 위한 최후의 수단으로 간주되어야 합니다.

스트림 처리에서의 일관성 도전

스트림 처리 시스템은 입력이 무한하고 계산이 지속되는 환경에서 주로 배포됩니다. 이러한 환경에서 “최종 일관성(eventual consistency)”과 같은 약한 격리 보장은 입력이 확정되지 않을 경우 출력 또한 결코 확정되지 않는 결과를 초래할 수 있습니다. 이는 사용자 기대와 크게 어긋나므로, 스트림 처리에서는 명확한 정확성 보장을 위해 엄격한 직렬화 가능성(strict serializability)과 같은 강력한 일관성 보장이 필수적입니다.

결론

결론적으로, 약한 격리 모델 위에서 시스템을 구축하는 것은 개발자에게 엄청난 부담과 비용을 지웁니다. 모든 잠재적 불일치를 추적하고 전역적인 상호작용을 고려하는 것은 개발 속도를 저해하고 버그 발생 가능성을 높입니다. 반면, 강한 격리 모델은 "진실을 말하면 아무것도 기억할 필요가 없다"는 말처럼, 개발자가 개별 쿼리에 대해 로컬 추론을 할 수 있도록 하여 생산성을 높이고 시스템의 신뢰성을 확보합니다. Materialize는 이러한 문제에 대한 해답으로 엄격한 직렬화 가능성을 제공하여, 개발자들이 일관성 전문가가 될 필요 없이 신뢰할 수 있는 시스템을 구축할 수 있도록 돕습니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!