2019년 8월 15일 ObjectRocket.com/blog에 처음 게시됨
CockroachDB®와 PostgreSQL®이 관계형 워크로드와 관련하여 시장에서 한 자리를 차지하게 되면서 많은 사람들이 어떤 제품을 선택해야 하는지 묻기 시작했습니다. CockroachDB는 분산 트랜잭션 및 수평 읽기/쓰기 확장 기능이 내장된 진정한 글로벌 규모 SQL을 제공하여 SQL 워크로드에 대한 전례 없는 확장성, 탄력성 및 성능을 제공합니다. 그러나 여전히 PostgreSQL이 더 적합할 수 있는 몇 가지 시나리오가 있습니다.
CockroachDB와 PostgreSQL의 유사점
이 두 기술은 상당히 겹칩니다. 무엇보다도 둘 다 다음을 자랑합니다.
- SQL 규정 준수
- ACID 거래
- PostgreSQL 유선 프로토콜 호환성
- 광범위한 클라이언트 드라이버 및 ORM 지원
이 기능은 대부분의 주요 요점을 다룹니다. 즉, 선택이 더 미묘한 결정 지점으로 귀결됩니다. 몇 가지 예외를 제외하고 두 데이터베이스 중 하나에서 앱을 시도하고 나중에 앱을 다시 작성할 필요 없이 다른 데이터베이스로 전환할 수 있습니다.
CockroachDB를 확인하고 싶지만 PostgreSQL이 더 적합하다고 결정하셨습니까? 문제가 발생하지 않을 가능성이 매우 높습니다. PostgreSQL에서 실행되는 앱이 있지만 더 나은 확장 및 장애 조치를 찾고 계십니까?CockroachDB가 더 적합할 수 있습니다.
결정에 도움이 되는 차별화 요소
호환성, 복잡한 쿼리, 규모 및 유연성은 다른 옵션보다 한 옵션을 선택하는 데 도움이 될 수 있습니다.
규모
가장 큰 차이점은 제품이 확장, 복제 및 고가용성(HA)을 처리하는 방식입니다. CockroachDB는 분산 트랜잭션이 포함된 글로벌 SQL 데이터 저장소를 제공하기 위해 처음부터 구축되었습니다. 각 지역 또는 클라우드에 상주할 수 있는 데이터를 세밀하게 제어하여 클라우드 및 지역 전체에 데이터를 분산할 수 있습니다. PostgreSQL과 동일한 기능 중 일부를 제공하기 위한 솔루션과 확장이 있지만 구성이 완전하지도 않고 간단하지도 않습니다. 관리합니다.
CockroachDB는 글로벌 규모에 중점을 두어 클라우드 친화적이 될 수 있습니다. CockroachDB는 많은 수의 더 작은 일회용 노드를 기대하므로 배후에서 확장 및 HA를 손쉽게 처리할 수 있습니다.
반면 PostgreSQL은 다중 마스터, 확장 및 HA를 위한 여러 솔루션을 제공하지만 해당 기능의 대부분은 PostgreSQL에 포함되어 있지 않으며 타사 확장이 필요합니다. 또한 HA PostgreSQL 배포의 경우 설정, 구성 및 일상적인 관리가 조금 더 복잡합니다.
유연성
PostgreSQL의 진정한 이점은 수년 간의 전투 강화와 조정 가능 및 확장의 범위입니다. PostgreSQL의 서버 구성에 대한 문서를 비교하기만 하면 클러스터에 대한 광범위한 옵션과 조정 매개변수를 볼 수 있습니다. 격리 수준을 원하십니까? 네 가지 옵션이 있지만 CockroachDB는 하나만 제공합니다. 복제를 원하십니까? PostgreSQL은 8가지 대안을 제공하며 CockroachDB는 뒤에서 처리합니다.
PostgreSQL은 또한 제품 확장을 위한 거대한 확장 에코시스템을 제공합니다. 수백 개의 확장이 공개적으로 사용 가능하며 직접 작성할 수도 있습니다. 여기에는 클러스터링(Citus와 같은)을 새 개체(postGIS)에 추가하는 것부터 특정 사용 사례(Timescale)에 대한 PostgreSQL 최적화에 이르기까지 다양합니다. 그러나 이러한 유연성에는 확실히 비용이 따릅니다. 이는 복잡성을 유발하고 인스턴스의 성능과 안정성에 영향을 줄 수 있습니다. 환경을 잘못 구성할 수도 있습니다. CockroachDB 접근 방식은 작업을 단순화하므로 클러스터 구축 및 관리가 간단합니다.
호환성
완전한 PostgreSQL 또는 보다 완전한 SQL 적합성이 필요한 경우 PostgreSQL이 더 나은 선택입니다. 레거시 앱이 있든 표준 CMS 또는 웹 프레임워크를 위한 백엔드 저장소가 필요하든 상관없이 Cockroach가 아직 지원하지 않을 수 있는 PostgreSQL 또는 SQL의 모서리에 크게 의존할 수 있습니다. Cockroach Labs는 계속해서 제품에 더 많은 기능을 추가하고 있지만 아직 PostgreSQL과 100% 호환되지는 않습니다. 차이점을 볼 수 있는 또 다른 영역은 CockroachDB가 역할, 사용자, 그룹 및 인증을 처리하는 방식입니다. PostgreSQL 인증 옵션은 매우 강력하며 CockroachDB는 RBAC를 제공하지만 두 기술 간에는 몇 가지 중요한 차이점이 있습니다.
호환성 문제를 극복할 수 있지만 궁극적으로 앱과 잠재적인 비호환성을 식별하고 해결할 수 있는 능력에 달려 있습니다.
복잡한 쿼리
Cockroach Labs가 엄청난 노력을 투자한 영역은 비용 기반 SQL 쿼리 최적화 프로그램을 사용하여 조인을 수행하고 성능을 개선하는 기능이었습니다. 그러나 매우 복잡한 쿼리와 다중 조인, 보기, 집계 및 표현식 평가가 포함된 비즈니스 인텔리전스 또는 분석 워크로드가 있는 경우 PostgreSQL이 더 나은 옵션일 수 있습니다.
평가나 개념 증명으로 쉽게 테스트할 수 있는 영역입니다. 사용 사례가 분석 쿼리 및 OLAP에 가까울수록 PostgreSQL이 더 나은 선택일 수 있습니다. 빠른 OLTP 스타일의 트랜잭션으로 CockroachDB가 가장 도움이 됩니다.
요약 비교
바퀴벌레DB | PostgreSQL | |
---|---|---|
최초 출시 연도 | 2015년 | 1996년 |
현재 안정 버전 | 20.1.0 | 13 |
라이선스 | 비즈니스 소스 라이선스 BSL 핵심 구성 요소. 바퀴벌레 커뮤니티 라이선스 CCLenterprise 기능 PostgreSQL 라이선스 | PostgreSQL 라이선스 |
SQ:적합성* | ~244개의 SQL:2011 기능에 대한 전체 또는 부분 준수 | ~385개의 SQL:2011 기능 준수 |
보너스 포인트 | 온라인 스키마 변경, 분산 트랜잭션 | 저장 프로시저, 커서, 트리거, 구체화된 뷰 |
유선 프로토콜 | PostgreSQL 유선 프로토콜 | PostgreSQL 유선 프로토콜 |
클라이언트 드라이버 | 테스트된 옵션과 PostgreSQL 유선 프로토콜로 인한 대규모 에코시스템 | 공식 및 커뮤니티 제공 드라이버의 대규모 생태계 |
CMS/프레임워크 호환성 | PostgreSQL 유선 호환성을 통한 부분적 | 주요 프레임워크에 대한 광범위한 지원 및 호환성 |
플러그인/확장 프로그램 | 엔터프라이즈 기능 팩 | 커뮤니티 확장의 대규모 생태계 |
복제/HA | 예, 내장 | 오픈 소스 추가/확장을 통해 |
멀티 마스터/클러스터링 | 예, 내장 | 오픈 소스 추가/확장을 통해 |
다중 데이터 센터/지역 | 예, 내장 | 사용자 지정 또는 오픈 소스 추가/확장을 통해 |
인증 | 비밀번호, 인증서 | 비밀번호, 인증서, GSSAPI, SSPI, ID, LDAP, RADIUS, PAM, BSD |
권한 | 사용자 기반 권한 및 RBAC | 행 및 열 수준 권한이 있는 RBAC, 전체 SQL:2011 권한 지원 |
강점 | 클라우드 네이티브 확장, 고가용성, 지리적 분포, 간단한 구성 및 배포 | 유연성, 조정 가능성, 호환성 및 생태계 |
약점 | SQL 지원/기능의 지연 시간 및 풍부함 | 규모에 따른 복잡성, 읽기 성능 |
결론 | 높은 트랜잭션의 OLTP 스타일 워크로드를 구축하거나 확장 기능(로컬 또는 글로벌)이 중요한 경우 CockroachDB를 선택하십시오. | 워크로드에 더 많은 분석 쿼리가 포함되거나 방대한 기능 세트, 에코시스템 및 호환되는 앱에 액세스해야 하는 경우 PostgreSQL을 선택하십시오. |
* 내가 아는 데이터 저장소가 전체 SQL:2011 사양을 100% 준수하지 않기 때문에 각 제품이 지원하는 사양을 살펴보았습니다.
당신 앞에는 두 가지 훌륭한 옵션이 있습니다. 두 가지를 함께 사용하여 놀라운 데이터 저장소 포트폴리오를 만들 수 있습니다. 오늘 처음부터 시작하고 매우 독특하거나 PostgreSQL과 관련된 요구 사항 및 확장 문제가 없다면 CockroachDBas를 놀라운 기회로 진지하게 살펴보십시오. 그러나 필요한 것이 무엇인지 이미 알고 있고 PostgreSQL의 광범위한 유연성에 초점을 맞추고 싶다면 저희도 도움을 드릴 수 있습니다.
현재 PostgreSQL과 CockroachDB를 모두 사용할 수 있습니다. 귀하에게 적합한 것을 찾으십시오.
결론
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 영업 채팅을 클릭할 수도 있습니다. 지금 채팅하고 대화를 시작하세요.