Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

PostgreSQL vs CockroachDB, 나에게 맞는 데이터베이스 선택 가이드

원문은 2019년 8월 15일 ObjectRocket.com/blog에 게시되었습니다.

CockroachDB®와 PostgreSQL®이 관계형 데이터베이스 시장에서 입지를 굳혀가면서, 두 제품 중 무엇을 선택해야 할지 고민하는 개발자들이 많아졌습니다. CockroachDB는 분산 트랜잭션과 수평적 읽기/쓰기 확장을 기본 내장한 진정한 글로벌 스케일 SQL을 제공하며, SQL 워크로드에 전례 없는 규모의 확장성, 복원력, 성능을 선사합니다. 하지만 여전히 PostgreSQL이 더 적합한 상황도 존재합니다.

PostgreSQL vs CockroachDB, 나에게 맞는 데이터베이스 선택 가이드

CockroachDB와 PostgreSQL의 공통점

두 기술은 상당 부분 겹칩니다. 우선 두 데이터베이스 모두 다음과 같은 특징을 갖추고 있습니다.

  • SQL 준수
  • ACID 트랜잭션 지원
  • PostgreSQL 와이어 프로토콜 호환
  • 폭넓은 클라이언트 드라이버 및 ORM 지원

이러한 기능들이 대부분의 주요 요구 사항을 충족하기 때문에, 선택은 보다 세밀한 판단 기준에 달려 있습니다. 몇 가지 예외적인 경우를 제외하면, 어느 한 데이터베이스 위에서 애플리케이션을 개발한 뒤 나중에 앱을 재작성하지 않고도 다른 쪽으로 전환할 수 있습니다.

CockroachDB를 사용해 보다가 PostgreSQL이 더 적합하다고 판단하게 되더라도 큰 문제가 생길 가능성은 낮습니다. 반대로 PostgreSQL에서 운영 중인 애플리케이션이 있고 더 나은 확장성과 장애 조치(failover)를 찾고 있다면, CockroachDB가 더 나은 선택이 될 수 있습니다.

선택에 도움이 되는 핵심 차이점

호환성, 복잡한 쿼리 처리, 확장성, 유연성이라는 네 가지 기준이 두 제품 중 하나를 고르는 데 결정적인 도움을 줄 것입니다.

확장성(Scale)

가장 큰 차이는 확장, 복제, 고가용성(HA)을 처리하는 방식입니다. CockroachDB는 처음부터 분산 트랜잭션을 지원하는 글로벌 SQL 데이터 저장소를 목표로 설계되었습니다. 데이터를 여러 클라우드와 리전에 분산 배치하고, 어떤 데이터가 어느 리전이나 클라우드에 위치할 수 있는지 세밀하게 제어할 수 있습니다. PostgreSQL에도 유사한 기능을 제공하는 솔루션과 확장이 존재하지만, 그만큼 완전하지도 않고 구성과 관리도 그만큼 간단하지 않습니다.

CockroachDB의 글로벌 스케일 중심 설계 덕분에 클라우드 환경과 훨씬 잘 어울립니다. CockroachDB는 소규모의 교체 가능한 노드가 대량으로 존재하는 환경을 전제로 하므로, 확장과 고가용성이 백그라운드에서 자동으로 손쉽게 처리됩니다.

반면 PostgreSQL도 멀티 마스터, 확장, 고가용성을 위한 다양한 솔루션을 제공하지만, 대부분의 기능은 PostgreSQL 자체에 포함되어 있지 않아 서드파티 확장이 필요합니다. 또한 고가용성 PostgreSQL 배포 환경의 설정, 구성, 일상적인 관리는 상대적으로 더 복잡합니다.

유연성(Flexibility)

PostgreSQL의 진정한 강점은 오랜 세월 실전에서 검증된 안정성과 방대한 튜닝 옵션 및 확장 생태계입니다. PostgreSQL의 서버 구성 문서만 살펴봐도 클러스터를 위해 사용할 수 있는 수많은 옵션과 튜닝 파라미터를 확인할 수 있습니다. 격리 수준(Isolation Level)이 필요한가요? PostgreSQL은 네 가지 옵션을 제공하는 반면, CockroachDB는 하나만 지원합니다. 복제 기능이 필요한가요? PostgreSQL은 여덟 가지 대안을 제공하지만, CockroachDB는 이를 내부적으로 자동 처리합니다.

또한 PostgreSQL은 제품을 확장할 수 있는 거대한 확장 프로그램 생태계를 갖추고 있습니다. 수백 개의 확장이 공개되어 있으며 직접 작성할 수도 있습니다. 클러스터링 추가(Citus), 새로운 객체 타입 추가(PostGIS), 특정 용도에 맞는 최적화(Timescale) 등이 그 예입니다. 다만 이러한 유연성에는 대가가 따릅니다. 복잡성이 증가하고 인스턴스의 성능과 안정성에 영향을 미칠 수 있으며, 환경을 잘못 구성할 위험도 있습니다. CockroachDB의 접근 방식은 이런 부분을 단순화하여 클러스터 구축과 관리를 매우 straightforward하게 만들어 줍니다.

호환성(Compatibility)

완전한 PostgreSQL 호환성이나 더 폭넓은 SQL 표준 준수가 필요하다면 PostgreSQL이 더 나은 선택입니다. 레거시 애플리케이션이 있거나 표준 CMS나 웹 프레임워크의 백엔드 저장소가 필요한 경우, CockroachDB가 아직 지원하지 않는 PostgreSQL이나 SQL의 세부 기능에 크게 의존하고 있을 수 있습니다. Cockroach Labs가 지속적으로 새로운 기능을 추가하고 있지만, 아직 PostgreSQL과 100% 호환되지는 않습니다.

또 다른 차이 영역은 역할(role), 사용자(user), 그룹(group) 및 인증(authentication) 처리 방식입니다. PostgreSQL의 인증 옵션은 매우 강력하며, CockroachDB도 RBAC를 제공하지만 두 기술 사이에는 상당한 차이가 존재합니다.

호환성 문제는 극복할 수 있지만, 결국 애플리케이션의 특성과 잠재적 비호환성을 파악하고 해결하는 능력에 달려 있습니다.

복잡한 쿼리(Complex Queries)

Cockroach Labs가 많은 노력을 기울인 분야 중 하나는 조인(join) 성능 개선과 비용 기반(cost-based) SQL 쿼리 옵티마이저입니다. 하지만 매우 복잡한 쿼리와 다중 조인, 뷰, 집계, 표현식 평가가 포함된 비즈니스 인텔리전스(BI)나 분석 워크로드라면 PostgreSQL이 더 나은 선택일 수 있습니다.

이 부분은 평가판이나 개념 증명(PoC)으로 쉽게 테스트해 볼 수 있습니다. 사용 사례가 분석 쿼리와 OLAP에 가까울수록 PostgreSQL이 유리하고, 빠른 OLTP 스타일의 트랜잭션이 중심이라면 CockroachDB가 가장 큰 도움이 됩니다.

요약 비교표

CockroachDB PostgreSQL
최초 출시 연도 2015년 1996년
현재 안정 버전 20.1.0 13
라이선스 핵심 컴포넌트는 BSL(Business Source License), 엔터프라이즈 기능은 CCL(Cockroach Community License) PostgreSQL License
SQL 표준 준수* SQL:2011 기능 약 244개 부분 또는 전체 준수 SQL:2011 기능 약 385개 준수
주요 강점 기능 온라인 스키마 변경, 분산 트랜잭션 저장 프로시저, 커서, 트리거, 머터리얼라이즈드 뷰
와이어 프로토콜 PostgreSQL 와이어 프로토콜 PostgreSQL 와이어 프로토콜
클라이언트 드라이버 검증된 옵션 제공, PostgreSQL 와이어 프로토콜 덕분에 방대한 생태계 활용 가능 공식 및 커뮤니티 제공 드라이버의 방대한 생태계
CMS/프레임워크 호환성 PostgreSQL 와이어 호환성을 통한 부분 지원 주요 프레임워크에 대한 광범위한 지원과 호환성
플러그인/확장 엔터프라이즈 기능 팩 방대한 커뮤니티 확장 생태계
복제/HA 내장 지원 오픈소스 추가 기능/확장을 통해 지원
멀티 마스터/클러스터링 내장 지원 오픈소스 추가 기능/확장을 통해 지원
멀티 데이터센터/지역 분산 내장 지원 커스텀 구현 또는 오픈소스 확장을 통해 지원
인증 방식 비밀번호, 인증서 비밀번호, 인증서, GSSAPI, SSPI, Ident, LDAP, RADIUS, PAM, BSD
권한 관리 사용자 기반 권한 및 RBAC 행·열 수준 권한을 갖춘 RBAC, SQL:2011 전체 권한 지원
강점 클라우드 네이티브 확장, 고가용성, 지역 분산, 간편한 구성과 배포 유연성, 튜닝 가능성, 호환성, 생태계
약점 지연 시간, SQL 지원/기능의 풍부함 부족 대규모 환경에서의 복잡성, 읽기 성능
결론 높은 트랜잭션 처리량의 OLTP 스타일 워크로드를 구축하거나 로컬·글로벌 확장이 중요하다면 CockroachDB를 선택하세요. 무거운 분석 쿼리가 포함된 워크로드이거나 방대한 기능 세트, 생태계, 호환 앱이 필요하다면 PostgreSQL을 선택하세요.

* 알려진 어떤 데이터 저장소도 SQL:2011 사양을 100% 준수하지 않기 때문에, 각 제품이 사양을 얼마나 지원하는지 기준으로 비교했습니다.

두 가지 모두 훌륭한 선택지입니다. 두 데이터베이스를 함께 활용해 놀라운 데이터 저장소 포트폴리오를 구축할 수도 있습니다. 오늘 처음부터 새로 구축하면서 특별히 PostgreSQL 고유의 요구 사항이 없고 확장성이 중요하다면, CockroachDB를 진지하게 검토해 볼 가치가 충분합니다. 반대로 이미 필요한 것이 명확하고 PostgreSQL의 폭넓은 유연성에 집중하고 싶다면, 그 역시 훌륭한 선택입니다.

PostgreSQL과 CockroachDB 모두 지금 바로 이용할 수 있습니다. 자신에게 맞는 최적의 선택을 찾아보세요.

결론

궁금한 점이나 의견이 있다면 피드백 탭을 이용해 남겨주세요. Sales Chat 버튼을 클릭하면 지금 바로 상담을 시작할 수도 있습니다.