CockroachDB 개념
아키텍처 문서는 너무 깊이 들어가서 그냥 메인화면의 DB특징만 좀 정리해 봄
탄력적이고 효율적인 확장
- 쓰기 병목 현상 제거
- 모든 노드는 읽기와 쓰기를 모두 처리할 수 있으므로 엔드포이느를 추가하기만 하면 쿼리 처리량과 데이터베이스 용량을 확장할 수 있다.
- 수동으로 샤딩하지 않아도 됨.
- 새 노드를 추가하면 자동으로 데이터를 재조정하여 수동샤딩을 안해도 된다고 한다.
- 샤딩은 데이터를 분산 저장하는 기술로, 데이터를 논리적 또는 물리적 파티션을 나누어 여러 대의 서버에 분산저장하여 처리 성능을 향상시키는 방법이라고 한다…
- 수요에 따라 성능 유지
- 한 클러스터에 요청이 몰려도 알아서 잘 분산시켜서 성능 유지하는듯.
- 지역 분산 쿼리 조정
난 서버리스 사용할거라 상관없지만 서버 인스턴스를 쓸 땐 오토스케일링이 되는건지 잘 모르겠음.
가용성이 높음
- 서버, 렉, 지역 장애 시 중단 없는 고성능 쿼리 보장
- 장애시 가용성 유지
- 데이터 가용성에 영향을 주지 않고 손실된 노드에서 살아남도록 설계됨.
- 데이터 손실 방지
- 백업 설정과 함께 제공되는 데이터 손실, 복잡성 및 비용 제거
- CockroachDB에서 쓰기는 데이터의 복제본 전체에서 동시에 발생하므로 복제본이 손실되더라도 데이터가 손실되지 않음.
- 사용자 지정 가용성 목표 설정
- 온라인 롤링 업그레이드
- 쿠버네티스 무중단 배포처럼 한 노드씩 업데이트
다중 지역, 다중 클라우드 배포
- 단일 및 다중 지역 데이터베이스
- 단일 클라우드 지역에서 시작하여 필요에 따라 여러 클라우드 지역으로 확장할 수 있다.
- 맞춤형 읽기/쓰기 대기 시간
- 선언적 sql 명령을 사용해 테이블 및 행에 대한 읽기/쓰기 대기시간 요구사항을 정의하면 CockroachDB가 내부적으로 데이터를 배포함.
- 무슨의미인지 잘 모르겠다.
- 모든 클라우드 또는 클라우드 간 배포
간단하고 일관된 SQL
- PostgreSQL과 호환됨
- 문제가 있는 쿼리를 쉽게 찾고 수정
- 일관된 트랜잭션 보장
- 높은 동시성 및 경쟁 분산 트랜잭션이 있는 경우에도 ACID 준수 보장 및 직렬화 가능
- 다운타임 없이 스키마 업데이트
- 프로덕션 환경에서도 다운타임 없이 데이터를 계속 읽고 쓸 수 있는 동안 스키마를 변경할 수 있다.
CockroachDB FAQ
- CockroachDB란?
- 강력하게 일관된 트랜잭션 키-값 저장소에 구축된 분산 sql 데이터베이스
- 수평으로 확장됨
- 대기시간 중단을 최소화하고 수동 개입 없이 디스크, 시스템, 랙 및 데이터 센터 장애를 견딤
- 강력하고 일관된 ACID 트랜잭션을 지원
- 언제 좋은 선택인가?
- 규모에 관계없이 신뢰할 수 있고 사용 가능하며 정확한 데이터와 밀리초 응답 시간이 필요한 애플리케이션에 매우 적합
- 어떻게 확장되는가?
- 최소한의 운영자 오버헤드로 수평으로 확장됨.
- 키-값 수준에서 하나의 빈 범위로 시작해 데이터가 임계값 크기(기본 512mb)에 도달하면 두개의 범위로 분할됨. 이런 프로세스가 무한정 반복됨.
- 트랜잭션이 ACID 시맨틱을 보장합니까? 네
디비는 어렵다…