(번역) 카크로치디비(CockroachDB) 블로그 / CockroachDB 19.1 소개

원문: https://www.cockroachlabs.com/blog/cockroachdb-19dot1-release/

Written by The Cockroach Labs Team on Apr 30, 2019


우리가 엔터프라이즈급 분산 SQL 데이터베이스를 만들기 시작한지 4년이 넘게 지났습니다.

오늘 우리는 CockroachDB 19.1을 출시하게 되어 기쁩니다. 이 릴리즈에서는 분산 SQL 기능을 향상시키고, 보안 및 데이터 통합을 포함한 엔터프라이즈 기능을 추가했습니다. 19.1은 데이터베이스에서 요구되는 “엔터프라이즈” 요구사항을 충족하면서 분산 SQL의 복잡한 문제를 지속해서 해결하고 있습니다.

제품담당 부사장인 네이트 스튜어트의 CockroachDB 19.1에 대한 간략한 소개를 아래에서 볼 수 있습니다. 더 자세한 내용은 CockroachDB 19.1 웨비나 에서 확인하시기 바랍니다.

전체 기능을 보려면 아래목록 또는 릴리즈 노트를 확인하십시오.

19.1: 분산 SQL 기능

19.1 버전의 많은 작업들은 분산 SQL 데이터베이스 구축이라는 사명 수행으로 애플리케이션의 요구사항을 쉽게 확장하면서도 까다로운 요구사항을 충족할 수 있게 합니다.

여기에는 일반적인 성능 개선과 함께 작년 가을에 소개한 새 비용 기반 옵티마이저가 포함됩니다.

  • 조인 힌트: 이제 옵티마이저는 조인을 제어하는 힌트 구문을 지원합니다. 대부분의 경우 최적화 알고리즘은 카디널리티와 같은 비용을 기반으로 올바른 조인 알고리즘을 선택합니다. 하지만 때로는 효율이 떨어지는 옵션을 선택할 수도 있습니다. 힌트는 옵티마이저가 최고 효율을 선택하지 못 할 경우 사용자가 특정 조인 알고리즘을 강제 할 수 있도록 사용자가 오버라이드해서 제어할 수 있게 합니다.

  • 역방향 인덱스 스캔: 인덱스 스캔에서 방향을 지정하면 동작은 특이해집니다. 이것은 자주 사용되지 않지만 다른 방법을 사용할 수 없을 때 유용합니다. 예를 들어 성능 튜닝에서 역방향 실행이 도움이 될 수 있습니다.

  • 옵티마이저 인덱스 로컬리티 제약조건: CBO + 인덱스 지역화는 지리적으로 분산된 클러스터에 대한 읽기 전용 쿼리에서(예: 우편번호) 마법과 같은 속도를 보여줍니다. 지역적으로 분산된 클러스터에서는, 데이터 로컬리티가 개선되고 네트워크 트래픽이 감소하므로 지연시간이 크게 감소합니다.

  • 자동 통계: 테이블 통계는 사용가능했지만, 우리는 그것을 실행하는 불편을 없애고 싶었습니다. 그것이 자동 통계입니다. 자동 통계를 사용하면 옵티마이저는 최적화된 쿼리를 더 잘 선택할 수 있습니다.

이 릴리즈에서 두 가지 주요 SQL 기능이 추가됩니다.

  • 웹 UI 쿼리 계획: 사용자가 UI에서 쿼리에 대한 샘플 실행계획을 볼 수 있으므로, 실행 방법에 대한 가시성을 높이고 병목을 식별하기 용이합니다.

  • 팔로워 읽기: 지리적으로 분산된 클러스터에서 지연시간을 극적으로 감소시키기 위해 리스홀더가 아닌 인접 레플리카의 기록을 이용해 쿼리하는 기능을 추가했습니다. 충분히 오래된 AS OF SYSTEM TIME을 사용하는 쿼리는 자동으로 리스홀더가 아닌 가까운 레플리카로 연결됩니다. 레플리카에서 최신 데이터를 원하는 사용자를 위해 내장함수(experimental_follower_read_timestamp)를 추가했습니다.

19.1: 엔터프라이즈 기능

우리의 엔터프라이즈 고객은 우리가 19.1에서 추진한 보안 및 통합에 관한 기능을 필요로 했습니다. 이 릴리즈는 이런 핵심기능을 제공합니다.

다운스트림 처리를 위한 변경 데이터 캡처

CockroachDB는 우수한 시스템이지만 다른 시스템과 공존해야합니다. 예를 들어, 풀텍스트 인덱스, 분석 엔진 또는 큰 데이터 파이프 라인에 데이터를 미러링 할 수 있습니다. 이를 위해 변경 데이터 캡처(CDC) 기능을 개선하여 웨어하우스, 이벤트 기반 마이크로 서비스, 스트리밍 분석, 검색 인덱싱 및 “빅 데이터” 애플리케이션에 데이터를 쉽게 전달할 수 있게 되었습니다.

CDC를 통해 CockroachDB 19.1은 테이블에 쓰기 정보를 효율적이고 일관적으로 방출하게 설정가능합니다. CDC는 create, update 또는 delete 결과로 원본 데이터베이스에서 변경된 데이터를 캡처합니다. 변경 데이터 캡처 기능 리포팅, 캐싱, 다운스트림 프로세싱을 위해 효율적이고 분산된 저수준 변경을 아파치 카프카(컨플루언스 스택 호완)에 제공합니다.

엔터프라이즈급 보안

이제 CockroachDB는 조직 내의 기존 디렉토리 서비스와 통합되어 단일 로그인을 통해 사용자 계정 관리를 단순화하고 회사 표준에 맞춰 관리 할 수 있습니다.

또한 CockroachDB 19.1을 사용하면 조직에서 데이터를 암호화하는 정책을 정의 할 수 있으며, 트랜잭션에서 중요한 정보에 대한 종단 간 보호를 제공합니다.

19.1에 대해 배우고 사용해보십시오!

이 릴리즈의 전체 기능 목록을 확인하는 데 관심이있는 경우 아래 요약을 추가했으며 릴리즈 노트를 참조 할 수도 있습니다. 또한 5월 9일에 할 19.1 웨비나를 통해 더 많은 기능을 소개합니다. 궁금한 점이 있으시면 forum.cockroachlabs.com에 남겨주십시오.

마지막으로, 19.1을 바로 다운로드 받을 수 있습니다!

감사합니다! (모든 Cockroach 연구소 사람들이)


부록: CockroachDB 19.1의 새로운 기능 전체 목록

CockroachDB 코어 기능

  • 부하 기반 분할 부하 기반으로 레인지를 자동 분할하여 사용자는 적은 핫스팟을 경험하고 리소스 사용을 극대화합니다.

  • 타임스탬프를 사용한 팔로워 읽기 지리적으로 분산 된 클러스터에서 지연시간을 크게 줄이기 위해 리스홀더가 아닌 인근 레플리카에 쿼리를 실행하는 기능을 추가했습니다. 충분히 오래된 타임 스탬프가있는 AS OF SYSTEM TIME을 사용하는 쿼리는 자동으로 리스홀더가 아닌 가장 가까운 레플리카로 연결됩니다. 복제본에서 쿼리를 읽을 수있는 최신 타임스탬프를 사용하려는 사용자를 위해 수용 가능한 타임 스탬프를 자동으로 생성하는 내장함수(experimental_follower_read_timestamp)가 추가되었습니다.

  • TPC-C 10k 달성(15개 노드 파티셔닝 이용) 성능을 향상시키고 벤치마크를 성공적으로 달성했습니다!

CockroachDB SQL 기능

  • 스키마 변경 성능 향상 스키마 변경 구현을 일괄처리하는 방식으로 수정하여 속도를 10배 향상했습니다.

  • 스키마 변경 잡 웹 UI에서 스키마 변경을 으로 볼 수 있어 스키마 변경이 언제 완료되는지 더 잘 확인할 수 있습니다.

  • 트랜잭션에서 스키마 변경 트랜잭션 내에서 컬럼과 인덱스, 테이블의 생성에 대한 스키마를 변경할 수 있게 했습니다.

  • 인벤토리 SQL 에러 오류 메시지가 보다 자세하게 설명되었으며, 필요한 경우 우리의 문서 또는 Github 링크가 포함됩니다.

  • 병렬 레인지 스캔 레인지 스캔을 병렬로 수행하여 성능을 향상했습니다.

  • 개선된 벡터 실행(프로토타입) 벡터화된 실행의 프로토타입이 읽기 쿼리의 성능을 향상(최대 3배)시킬 수 있음을 입증했습니다.

  • 향상된 마이그레이션 및 통합 지원 전반적인 통합(Hibernate, Spring ORM 등) 및 Postgres에서 마이그레이션을 개선하기 위해 호환성 문제를 수정했습니다. 예:

    • SERIAL, INTEGER 32-bit 구현 마이그레이션 경험을 향상기키기 위해 SERIAL 및 INTEGER를 32비트 정수로 실행하는 플래그를 지원합니다. 이제 Postgres 사용자는 자료구조를 변경하지 않아도 됩니다.

    • 사용자 지정 세이브포인트 이름 사용자가 트랜잭션 재시도 세이브포인트의 이름을 지정할 수 있는 연결 설정을 제공합니다. 이를 통해 Spring 등의 ORM과의 통합을 향상시키고 사용자가 클라이언트 측 재시도를 이용할 수 있게 합니다.

  • 비용 기반 옵티마이저

    • 상관 서브쿼리(파트 2) 마지막 릴리즈에서 옵티마이저는 대부분의 상관 서브쿼리를 지원합니다. 상관 서브쿼리는 내부 쿼리가 외부 쿼리의 값에 의존하는 중첩 쿼리로, 종종 비효율적인 구조가 됩니다. 2.1에서는 이런 비효율적인 서브쿼리에서 상관 관계를 제거하여 최적화하였고, 이제 19.1에서는 입력으로 들어오는 모든 로우에 대해 서브플랜을 실행하여 상관 관계를 제거할 수 없는 경우에 대한 처리를 추가했습니다.

    • 쿼리 계획 캐시 옵티마이저가 최적화 된 쿼리 계획을 캐시합니다. 동일한 쿼리에 대해 최적화 된 계획을 반복하여 계산하지 않으므로 기존 계획을 활용하여 모든 쿼리에 대해 최적화 된 계획을 빠르게 만들 수 있으므로 성능이 향상됩니다.

    • 조인 재정렬 이 기능을 사용하면 옵티마이저가 자동으로 조인 순서를 재정렬하여 기능적으로 동일한 여러 계획 중 최상의 성능계획을 선택합니다. 설정으로 값을 조정할 수 있으며(기본값은 4) 0은 재정렬을 사용하지 않는 것을 의미합니다.

    • 지역 우선권 비용 기반 옵티마이저는 지리적으로 분산된 클러스터 전반의 성능을 향상시키기 위해 동일 지역을 고려합니다. 이 기능은 엔터프라이즈 기능인 인덱스 별 역역을 필요로 하지만 엔터프라이즈 기능은 아닙니다.

    • 쿼리 옵티마이저 힌트 비용 기반 옵티마이저의 개선과 함께 특정 작업부하에 대해 효율적이지 못한 경우를 위해 수동으로 쿼리계획을 편집할 수 있는 기능을 제공합니다.

    • 자동 통계 수집 비용 기반 옵티마이저에 대한 통계를 자동으로 수집하여 쿼리 성능을 향상시킵니다. 이전에는 모든 테이블에 1,000개의 행이 있고 10%의 별개 값이 있다고 가정지만, 실제 통계를 사용하면 CBO가 실제 특화된 시나리오에 맞게 최적화됩니다.

    • 휴리스틱 옵티마이저 디플리케이티드 비용 기반 옵티마이저의 기능 개선으로 고객의 기대를 충족할 수 있었고, 대부분의 쿼리를 처리할 수 있었습니다.

CockroachDB 가시성 & 문제 해결

  • 웹 UI 쿼리 계획 사용자는 UI에서 쿼리 실행계획을 볼고, 이것은 이것이 어떻게 실행에 대한 큰 제어권을 주고 병목을 확인하는데 도움이 됩니다.

CockroachDB 운영 & 도구

  • GSSAPI (Kerberos) 인증을 통한 LDAP/Active Directory 지원 일반적인 엔터프라이즈 수준 인증 프로토콜인 Kerberos와의 통합을 지원합니다. 사용자는 회사 자격증명을 이용하여 미리 구성된 접근 수준에 따라 CockroachDB에 접근할 수 있습니다.

  • 저장공간 암호화 엔터프라이즈 사용자의 클라이언트 애플리케이션을 변경하지 않고 디스크에 저장되는 데이터를 암호화하는 기능을 완벽하게 지원합니다.

  • 변경 데이터 캡처

    • 엔터프라이즈 구현(반복 2) 이 릴리즈에서 CDC를 엔터프라이즈 고객이 즉시 사용할 수 있게 확장했습니다. 여기에 새로운 출력 형식에 대한 지원 추가 및 푸시 지연시간 개선이 포함되었습니다.

    • 코어 구현 실험적인 Postgres 프로토콜 기반의 변경 데이터 캡처 구현이 코어 및 엔터프라이즈 사용자 모두에게 제공됩니다. 이를 통해 사용자는 Kafka 또는 클라우드 스토리지 데이터 싱크를 사용할 필요없이 테이블에 대한 insert, update, delete 이벤트를 사용할 수 있습니다.

    • 클라우드 스토리지 싱크 변경 데이터 캡처를 제공하는 클라우드 스토리지 싱크에 전달하는 CDC 기능이 내장되어 Kafka 없이 OLAP 또는 대형 데이터 시스템에 전송할 수 있습니다.