제퍼넷 로고

완벽한 데이터베이스는 없습니다: 데이터베이스 선택에 CAP 정리 적용 – DATAVERSITY

시간

2000년에 시장에 소개된 이후 일관성, 가용성 및 파티션 정리(CAP 정리)는 데이터베이스 관리의 기본 원칙이 되었습니다. 컴퓨터 과학자 Eric Brewer는 웹 서비스를 제공하는 분산 시스템에 대한 강연에서 CAP 정리를 발표했습니다. 나중에 두 명의 MIT 교수가 이 정리를 증명했습니다. 이는 데이터베이스가 데이터베이스 일관성, 가용성, 파티션 허용성 등 세 가지 영역 중 하나 또는 두 가지 영역에서 강력할 수 있지만 동시에 세 영역 모두에서 강력할 수는 없음을 나타냅니다. 예를 들어 기존 SQL 데이터베이스는 강력한 일관성을 우선시하지만 네트워크 장애 시 가용성이 저하될 수 있습니다. 대조적으로, NoSQL 데이터베이스 가용성과 파티션 허용 범위를 우선시하지만 일관성이 결국 저하될 수 있습니다. CAP 정리는 분산 시스템의 본질적인 한계를 설명하고 다양한 데이터베이스에 적용됩니다. 설계자는 데이터베이스를 구현하기 전에 조직에 가장 중요한 두 가지 CAP 보장을 신중하게 고려하는 것이 중요합니다.

일관성, 가용성 및 파티션 허용 범위 정의 

분산 시스템은 여러 컴퓨터와 서버에 분산되어 있어 대량의 데이터를 처리하기 위한 솔루션을 제공합니다. 일관성 분산 시스템에서 데이터가 노드 전체에 정확하고 동일하게 나타나는 정도를 나타냅니다. 여러 사용자가 동시에 변경하는 것을 방지하는 잠금을 통해 이를 수행할 수 있습니다. 일관성을 우선시하는 시스템은 안정적이고 강력합니다. 일관된 시스템에서 각 서버는 지정된 요청에 적절한 응답을 전달합니다. 일관성의 의미는 요청된 서비스 유형에 따라 다릅니다. 사소하고 약하게 일관된 서비스서버 간 조정이 필요하지 않거나 서버 간 사소한 조정만 필요로 하는 는 각각 CAP 정리의 범위에 속하지 않으며 일반적으로 가용성 및 파티션 허용 범위의 희생을 피합니다. 그러나 서버 간에 상당한 조정이 필요한 모든 서비스에는 CAP 절충이 발생합니다.

유효성 일관되게 읽거나 쓸 수 있는 시스템의 모든 노드의 능력을 나타냅니다. 사용 가능한 시스템에서는 사용자의 모든 요청이 안정적으로 응답을 받습니다. 일부 노드가 오작동하더라도 사용 가능한 시스템은 계속해서 사용자 요청에 응답합니다. 그러나 가용성을 우선시하는 시스템은 반환된 데이터가 완전히 최신임을 보장할 수 없는 경우가 많습니다. 

In 파티션 허용 시스템에서는 데이터가 여러 서버에 분산되어 부분적인 오류 및 네트워크 분할이 발생하는 경우에도 견고성이 향상됩니다. 네트워크 파티션에서 노드는 서로 쉽게 통신할 수 없는 여러 개의 서브넷으로 구분됩니다. 파티션은 일반적으로 넓은 지역에 분산된 시스템에서 불가피한 것으로 간주됩니다. 파티션 허용 시스템은 이러한 분할이 발생하더라도 신속하게 복구하고 기능을 유지할 수 있는 능력을 갖추고 있습니다. 

올바른 데이터베이스 찾기

Oracle 및 MySQL을 포함하여 일관성과 가용성을 우선시하는 데이터베이스는 뱅킹 애플리케이션 및 트랜잭션 처리와 같은 사용 사례에 이상적입니다. 과거에는 시스템이 일관성과 가용성을 우선시했지만, 데이터 시스템과 스토리지가 발전함에 따라 일관성의 중요성이 줄어들기 시작했습니다. 최신 시스템에는 여러 사용자가 동시에 변경하는 것이 허용되는 사용 사례가 있는 경우가 많습니다. 이러한 경우에는 파티션 허용 오차가 우선순위입니다.

MongoDB, Redis, Google Spanner 등 일관되고 파티션을 허용하는 데이터베이스는 문서 저장에 이상적입니다. 예를 들어 Google 드라이브는 일관성 및 CP(파티션 허용 오차) 데이터베이스인 Google Spanner를 활용합니다. CP 데이터베이스의 단점은 네트워크 분할 중에 사용할 수 없게 될 수 있다는 것입니다. 예를 들어 Google 드라이브 사용자는 때때로 짧은 기간 동안 문서에 액세스할 수 없습니다. 

한편, 가용성과 파티션 허용성을 우선시하는 데이터베이스는 데이터 분석 작업과 같이 속도가 가장 중요한 사용 사례에 이상적입니다. Netflix는 Cassandra라는 가용성 및 AP(파티션 허용 오차) 데이터베이스를 사용하는 반면, Airbnb는 Riak이라는 데이터베이스를 사용합니다. AP 데이터베이스는 일관성을 어느 정도 희생합니다. 읽기 작업 시 데이터베이스가 분할된 경우 읽기 작업은 오래된 값을 반환할 수 있습니다.

각 데이터베이스에는 고유한 장점과 단점이 있으므로 가장 적합한 데이터베이스를 선택하려면 조직의 요구 사항과 특정 애플리케이션을 철저히 이해해야 합니다. 명확한 서비스 수준 목표(SLO)를 미리 설정하고 서비스 수준 지표(SLI)를 정기적으로 추적하는 것이 중요합니다. 구현 시점과 추가 성장 가능성 측면에서 데이터베이스 규모는 중요한 고려 사항입니다.

또 다른 고려 사항은 데이터를 세그먼트로 나누고 서버 간에 공유하는 데이터 샤딩입니다. 이는 가용성과 파티션 허용 범위를 높이고 재해 복구 및 백업을 더 쉽게 만들 수 있으므로 특정 데이터베이스에 유리할 수 있습니다. 샤딩에는 일관성 측면에서 일부 희생이 따릅니다. 데이터 분할이 적절한지 여부를 결정하는 것은 데이터베이스 설계 계획의 중요한 부분입니다. 

CAP 상충관계를 최소화하는 방법 

어떤 데이터베이스도 완벽한 일관성, 가용성 및 파티션 허용성을 제공할 수는 없지만 CAP 균형을 완화하는 방법에는 여러 가지가 있습니다. 데이터가 소스 데이터베이스에서 다른 데이터베이스로 지속적으로 복사되는 데이터베이스 복제는 일관성을 우선시하는 데이터베이스에서도 가용성과 파티션 허용성을 향상시킵니다. 하이브리드 아키텍처에는 두 가지 다른 데이터베이스(예: 관계형 데이터베이스와 NoSQL 데이터베이스)를 결합하여 두 설계의 장점을 활용하면서 단점을 최소화하는 작업이 포함됩니다. 

분산 시스템을 세그먼트로 분할하면 시스템이 특정 데이터 또는 작업에 가장 중요한 CAP 요소의 우선 순위를 지정할 수 있습니다. 일부 아키텍처는 다양한 사용 사례에 맞게 여러 개의 개별 데이터베이스를 통합합니다. 예를 들어 온라인 마켓플레이스인 Etsy는 강력한 일관성을 위해 MySQL 데이터베이스를 사용합니다. 인메모리 캐싱을 위한 고가용성 Redis; 스트리밍 데이터에 대해 파티션 허용치를 우선시하는 Apache Kafka가 있습니다.

많은 새로운 데이터베이스는 CAP 정리에 설명된 한계를 극복하려고 시도합니다. CockroachDB는 Raft 합의 알고리즘을 사용하여 데이터베이스의 모든 복제본이 쓰기 순서에 동의하도록 하여 일부 복제본이 실패하더라도 데이터베이스를 계속 사용할 수 있도록 하는 분산 SQL 데이터베이스입니다. 이를 통해 CockroachDB는 네트워크 파티션이 있는 경우에도 강력한 일관성과 가용성을 제공할 수 있습니다. 또 다른 최신 분산 SQL 데이터베이스인 TiDB는 Raft 합의 알고리즘을 활용하여 대규모 애플리케이션에 강력한 일관성과 가용성을 제공합니다.

데이터베이스 디자인의 미래

새로운 기술과 동향 CAP 정리의 장단점을 추가로 해결할 수 있는 잠재력이 있습니다. 많은 데이터베이스 설계자가 확장성, 탄력성, 내결함성 등 온프레미스 데이터베이스에 비해 여러 가지 이점을 제공하는 클라우드 기반 아키텍처로 전환하고 있습니다. 다중 클라우드 배포를 통해 하이브리드 데이터베이스 아키텍처를 더 쉽게 구현할 수 있습니다. 기계 학습(ML) 알고리즘을 사용하여 워크로드 패턴, 애플리케이션 요구 사항 및 데이터 액세스 패턴을 기반으로 일관성과 가용성 간의 균형을 동적으로 조정할 수 있습니다. 조정 가능한 가용성 및 일관성 절충(TACT) Haifeng Yu와 Amin Vahdat가 개발한 시스템을 사용하면 애플리케이션이 필요한 일관성 수준을 지속적으로 업데이트할 수 있습니다. 마지막으로, 양자 컴퓨팅이 성숙해짐에 따라 데이터베이스는 데이터 무결성, 기밀성 및 일관성을 보장하기 위해 양자 저항성 암호화 기술을 통합할 수 있습니다.

CAP 정리는 다양한 데이터베이스의 장점과 한계를 이해하는 데 유용한 프레임워크를 제공합니다. 완벽한 데이터베이스는 없지만 일부는 특정 애플리케이션에 더 적합합니다. 기업에서는 가용성이나 편의성을 기준으로 데이터베이스를 선택하는 경우가 너무 많습니다. 이로 인해 조직의 요구 사항을 충족하지 못한 채 불필요한 비용이 발생할 수 있습니다. 대신, 개발자가 데이터베이스 기본 사항과 특정 사용 사례의 세부 사항을 철저하게 이해하는 것이 중요합니다. 세 가지 데이터베이스 속성 중 어느 것이 애플리케이션에 가장 중요한지 결정하고 구현 전에 구체적인 서비스 수준 목표와 지표를 정의하는 것이 중요합니다. 단일 데이터베이스가 일관성, 파티션 허용성,  가용성, 하이브리드 및 다중 데이터베이스 아키텍처는 데이터베이스의 약점을 완화할 수 있습니다. 클라우드 컴퓨팅 및 ML과 같은 새로운 기술과 개발이 데이터베이스 설계 분야에 계속 영향을 미치면서 개발자가 CAP 절충안을 해결하는 방식도 계속 발전할 것입니다.

spot_img

최신 인텔리전스

spot_img