Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

CockroachDB Enterprise Features Overview

CockroachDB Enterprise Features Overview

kota2and3kan

October 02, 2024
Tweet

More Decks by kota2and3kan

Other Decks in Technology

Transcript

  1. Name: こたつ&&みかん Account: @kota2and3kan Company: Name: Scalar, Inc. Product: -

    ScalarDB (Distributed Transaction Manager) - ScalarDL (Byzantine Fault Detection Middleware) Job: [Technical Support, Infra Engineer] Like: DB: [PostgreSQL, CockroachDB] Bouldering: 5Q Dislike: Real Cockroach Who am I.
  2. License overview • CockroachDB には、いわゆる「OSS 版 / Free 版」と「商用版」の 2つの

    License 形態がある。 • 過去に License 形態が変更されたこともあり、来月 (2024/11/08 に) 新たに License 形態を変更することがアナウンスされている。 https://www.cockroachlabs.com/enterprise-license-update/ いわゆる「OSS or Free」版 いわゆる「商用版」 ~ v19.2 Apache License 2.0 CCL (Cockroach Community License) v20.1 ~ 2024/11/08 BSL (Business Source License) CCL (Cockroach Community License) 2024/11/08 ~ Enterprise Free Enterprise
  3. License overview (~ v19.2) • v19.2 (2019/11/12 release) までの CockroachDB

    では、Apache License 2.0 で 提供される OSS 版が存在している。 いわゆる「OSS or Free」版 いわゆる「商用版」 ~ v19.2 Apache License 2.0 CCL (Cockroach Community License) v20.1 ~ 2024/11/08 BSL (Business Source License) CCL (Cockroach Community License) 2024/11/08 ~ Enterprise Free Enterprise
  4. License overview (v20.1 ~ 2024/11/08) • v20.1 (2020/05/12 release) からの

    CockroachDB では、Apache License 2.0 で の提供が廃止され、BSL (Business Source License) という License で Free 版 が提供されている。 • ただし、この Free 版には「Release から 3年経つと Apache License 2.0 に変更さ れる」という条件が付いている。 いわゆる「OSS or Free」版 いわゆる「商用版」 ~ v19.2 Apache License 2.0 CCL (Cockroach Community License) v20.1 ~ 2024/11/08 BSL (Business Source License) CCL (Cockroach Community License) 2024/11/08 ~ Enterprise Free Enterprise
  5. License overview (2024/11/08 ~) • 2024/11/08 以降に提供される各 major / patch

    version からは、BSL での提供が 廃止され、新たに「Enterprise Free」「Enterprise」という名称の Lincese で Free 版および商用版が提供される予定になっている。 いわゆる「OSS or Free」版 いわゆる「商用版」 ~ v19.2 Apache License 2.0 CCL (Cockroach Community License) v20.1 ~ 2024/11/08 BSL (Business Source License) CCL (Cockroach Community License) 2024/11/08 ~ Enterprise Free Enterprise
  6. License overview (2024/11/08 ~) • 2024/11/08 以降に提供される Enterprise License でも、引き続き

    GitHub 上で ソースコードは公開され、ソースコードの参照や contribution (issue や PR の作 成?) は可能らしい。 https://github.com/cockroachdb/cockroach https://www.cockroachlabs.com/cockroachdb-software-license いわゆる「OSS or Free」版 いわゆる「商用版」 ~ v19.2 Apache License 2.0 CCL (Cockroach Community License) v20.1 ~ 2024/11/08 BSL (Business Source License) CCL (Cockroach Community License) 2024/11/08 ~ Enterprise Free Enterprise
  7. License overview (2024/11/08 ~) • Enterprise Free は、「年間売上 1,000万ドル未満の個人および企業」が Free

    で 利用できる、という License になっている。 いわゆる「OSS or Free」版 いわゆる「商用版」 ~ v19.2 Apache License 2.0 CCL (Cockroach Community License) v20.1 ~ 2024/11/08 BSL (Business Source License) CCL (Cockroach Community License) 2024/11/08 ~ Enterprise Free Enterprise
  8. License overview (2024/11/08 ~) • 2024/11/08 までの Apache License 2.0

    版および BSL 版では「Enterprise Features」が利用できなかった。 • しかし、2024/11/08 に提供が予定されている Enterprise Free では「Enterprise Features も利用できる」ようになる。 • 要するに Free 版でも「全ての機能」が使えるようになる。 いわゆる「OSS or Free」版 いわゆる「商用版」 ~ v19.2 Apache License 2.0 CCL (Cockroach Community License) v20.1 ~ 2024/11/08 BSL (Business Source License) CCL (Cockroach Community License) 2024/11/08 ~ Enterprise Free Enterprise
  9. Enterprise Features Overview https://www.cockroachlabs.com/docs/v24.2/enterprise-licensing.html • Read Committed Transactions • Follower

    Reads • Multi-Region Capabilities • PL/pgSQL • Node Map • Generic Query Plans • VECTOR type • Enterprise Backup and Restore Capabilities • Changefeeds into a Configurable Sink • Change Data Capture Queries • Physical Cluster Replication • Encryption at Rest • Column Level Encryption • GSSAPI with Kerberos Authentication • Cluster Single Sign-on (SSO) • Single Sign-on (SSO) for DB Console • Role-based SQL Audit Logging • Certificate-based authentication using multiple values from the X.509 Subject field • Table Partitioning (何故か一覧に 載ってない)
  10. Read Committed Transactions • CockroachDB の Tx 分離レベルはデフォルトで「SERIALIZABLE」になっている が、「READ COMMITTED」を選択することができる。

    • 公式ドキュメントでは、「READ COMMITTED」を選択できるユースケースとして以 下のようなものがあると記載されている。 ◦ Tx の retry 回数を減らしつつ競合が多いワークロードを捌きたい、かつ READ COMMITTED で発生する Anomaly を許容できる場合。 ◦ もともと READ COMMITTED 前提で構築されている App / DB を CockroachDB 上に移行する場合。 • https://www.cockroachlabs.com/docs/v24.2/read-committed
  11. Follower Reads • Raft の Leader (厳密には CockroachDB における Leaseholder)

    以外からの Read (つまり Raft の Follower からの Read) を可能にする。 • Client / App から見て「物理的に近い位置にある Node」から Read を実行するの で、Read の性能向上が期待できる。 ◦ 特に、Multi-region 構成では「Region 跨ぎの通信」を減らすことができるた め、Read の性能向上が期待できる。 • 主に以下の 2つの type の Follower Reads がある。 ◦ Strong Follower Read: 常に最新のデータを Read できる。Global Tables と いう機能を利用する。 ◦ Stale Follow Read: まだ Replica に反映されていない古いデータを Read す る可能性がある。 • https://www.cockroachlabs.com/docs/v24.2/follower-reads
  12. Multi-Region Capabilities (1/4) • Multi-region で CockroachDB を構築する際に便利な複数の機能が提供されてい る。 ◦

    Database Regions ◦ Primary Region ◦ Secondary Region ◦ Super Region ◦ Survival Goals ◦ Table Localities • https://www.cockroachlabs.com/docs/v24.2/multiregion-overview
  13. Multi-Region Capabilities (2/4) • Database Regions ◦ DB (CREATE DATABASE

    で作成される DB) 毎に、1つ以上の Region を設 定できる。 • Primary Region ◦ DB に設定された Region のうち 1つを Primary Region として設定する。 ◦ DB 内のデータは、全て Primary Region に格納される。 • Secondary Region ◦ Primary Region で障害が発生した際に Failover する Region (新しく Primary Region に昇格する Region) を指定できる。
  14. Multi-Region Capabilities (3/4) • Super Region ◦ 複数の Region を束ねて、論理的な

    1つの Region として利用できる。 ◦ 例えば、us-east / us-central / us-west を束ねて usa という Region を定義で きる。 ◦ eu-north / eu-central / eu-south を束ねて europe という Region を定義する ことで、データの保管場所を EU 圏内に限定する、という使い方 (GDPR 対応) 等が考えられる。
  15. Multi-Region Capabilities (4/4) • Survival Goals ◦ 「どの範囲の障害まで耐えられるか」を設定する。 ◦ 「Zone

    Failure」と「Region Failure」のどちらかを設定できる。 ◦ 設定に従って、自動でいい感じに Cluster 内での DB や TABLE の配置を決 めてくれる。 • Table Localities ◦ 設定に応じて、TABLE や ROW への Read / Write が最適化されるように、い い感じにデータを配置してくれる。 ◦ 「Regional Tables」「Regional by Row Tables」「Global Tables」の 3種類が ある。
  16. PL/pgSQL • PostgreSQL 用の手続き言語である PL/pgSQL を利用して、User-Defined Functions や Stored Procedures

    を作成できる。 • 一部、本家 PostgreSQL の PL/pgSQL とは異なる動作をする場合もあるようなの で、注意が必要。 ◦ https://github.com/cockroachdb/cockroach/issues/115680 • https://www.cockroachlabs.com/docs/v24.2/plpgsql
  17. Node Map • DB Console (いい感じの Web UI) 上で、各 Node

    の情報が地図上に表示され、 Region や Metrics がいい感じに参照できるようになる。 • https://www.cockroachlabs.com/docs/v24.2/enable-node-map
  18. Generic Query Plans • Prepared Statements にて、placeholder の値 (バインド変数の値) を考慮せずに

    query plan を作成して cache する。 • Prepared Statements における planning 処理を削減できるため、性能改善が期 待できる。 • PostgreSQL の PREPARE 文における generic plan に類似するものだと思われ る。 • https://www.cockroachlabs.com/docs/v24.2/cost-based-optimizer#query-plan- type
  19. Enterprise Backup and Restore Capabilities • いわゆる OSS 版 /

    Free 版では、Full Backup のみが実行可能。 • Enterprise License では、以下の種類の Backup が実行可能。 ◦ Incremental Backups ▪ いわゆる増分バックアップ。 ◦ Backups with Revision History ▪ 一定期間内の「更新履歴」も含めて Backup する。PITR (point in time restore) が可能になる。 ◦ Locality-aware Backups ▪ 物理的に近い位置にある Storage に Backup を保存する。 ◦ Encrypted Backups ▪ Backup のデータを暗号化する。 • https://www.cockroachlabs.com/docs/v24.2/backup
  20. Changefeeds into a Configurable Sink • CDC (Change Data Capture)

    によって取得される「行単位の更新情報」を Apache Kafka, Google Cloud Pub/Sub, Cloud Storage (Amazon S3, Azure Blob Storage, Google Cloud Storage, etc…) に送信できる。 • https://www.cockroachlabs.com/docs/v24.2/create-changefeed
  21. Change Data Capture Queries • CDC (Change Data Capture) にて送信される更新情報を、選択

    (Filtering) したり 加工したりすることができる。 • SELECT 文および複数の関数を使って、送信するデータの選択や加工ができる。 • https://www.cockroachlabs.com/docs/v24.2/cdc-queries
  22. Physical Cluster Replication • CockroachDB Cluster (Primary Cluster) のデータを、別の CockroachDB

    Cluster (Standby Cluster) に、Byte レベルでレプリケーションできる。 • いわゆる「非同期レプリケーション」。 • Known Limitations もいろいろあるので、注意が必要。 • https://www.cockroachlabs.com/docs/v24.2/physical-cluster-replication-overvi ew
  23. Encryption at Rest • いわゆる TDE (Transparent Data Encryption)。 •

    Disk に保存されるデータを自動的に暗号化してくれる。 • KEK (Key Encryption Key) や DEK (Data Encryption Key) のローテーションにも 対応している。 • https://www.cockroachlabs.com/docs/v24.2/security-reference/encryption#enc ryption-at-rest
  24. Column Level Encryption • 特定の Column に格納するデータを暗号化する。 • TDE (Transparent

    Data Encryption) ではなく、「Column に暗号化されたデータ が格納」される。 ◦ つまり、SELECT 文で TABLE の中身を参照すると「暗号化された状態のデー タ (バイト列) が見える」という動作になる。 ◦ 暗号鍵を知らないユーザーは復号されたデータを参照できない。 • encrypt() や decrypt() 等の関数が提供されており、Client / App 側でそれらを使っ てデータの暗号化 / 復号を行なう。 • PostgreSQL の pgcrypto 的な感じのもの。 • https://www.cockroachlabs.com/docs/v24.2/column-level-encryption
  25. GSSAPI with Kerberos Authentication • Kerberos 認証 (GSSAPI) を利用して、CockroachDB Cluster

    に接続する Client の認証を実施できる。 • 例えば、Active Directory を利用したユーザー認証が実施できる。 • https://www.cockroachlabs.com/docs/v24.2/gssapi_authentication
  26. Cluster Single Sign-on (SSO) using JWT • SSO (Single Sign-on)

    にて、CockroachDB の SQL interface にアクセスできるよ うにする機能。 • Client から CockroachDB Cluster に接続する際の認証には、JWT (JSON Web Token) を利用する。 • 後述する Single Sign-on (SSO) for DB Console と組み合わせることで、DB Console から JWT を取得することができるようになる。 • https://www.cockroachlabs.com/docs/v24.2/sso-sql
  27. Single Sign-on (SSO) for DB Console • SSO (Single Sign-on)

    にて、CockroachDB の DB Console (管理用の Web UI) にアクセスできるようにする機能。 • OIDC (OpenID Connect) を利用し、複数の IdP (Identity Provider) を使った SSO (Single Sign-on) が実施できる。 • DB Console から、前述した Cluster Single Sign-on (SSO) using JWT 用の JWT を取得することができ、この JWT を使って SQL interface にアクセスすること ができる。 • https://www.cockroachlabs.com/docs/v24.2/sso-db-console
  28. Role-based SQL Audit Logging • いわゆる監査ログを出力する機能。 • User もしくは Role

    単位で Audit Log を出力するか否かを制御 (設定) できる。 • 出力される Audit Log には以下のような情報が含まれる。 ◦ Application Name ◦ 実行された SQL 文 ◦ SQL を実行した User ◦ SELECT によって読み取られた行数 ◦ INSERT / UPDATE によって更新された行数 • https://www.cockroachlabs.com/docs/v24.2/role-based-audit-logging
  29. Certificate-based authentication using multiple (ry • CockroachDB では Client 認証に「証明書認証」を利用することができるが、通常

    の証明書認証に加えて、X.509 証明書に設定されている Subject Field の値を基 にした User 認証を実施することができる。 • 例えば、User「foo」作成時に以下のような設定をした場合、User「foo」で接続する 際に指定する証明書の Subject Field には 「CN=foo,OU=fooOrgUnit,O=fooOrg」が設定されている必要がある。 ◦ CREATE ROLE foo WITH SUBJECT 'CN=foo,OU=fooOrgUnit,O=fooOrg' LOGIN ; • https://www.cockroachlabs.com/docs/v24.2/certificate-based-authentication-u sing-the-x509-subject-field
  30. Table Partitioning • 名前の通り、Table Partitioning が実施できる。 • List Partitioning と

    Range Partitioning の 2つのパターンが選択可能。 • List Partitioning の場合、Partition を更に Partitioning する Subpartition も作成 可能。 • CockroachDB は Mult-region Deployment / Geo Replication をサポートしている ので、Partition 毎にデータの格納場所を設定する Geo Partitioning も実施でき る。 • https://www.cockroachlabs.com/docs/v24.2/partitioning.html
  31. まとめ • CockroachDB では、Enterprise Features として様々な機能が提供されている。 • 2024/11/08 に CockroachDB

    の License 形態が変更される予定。 • 新しい License 形態では、Free 版 (Enterprise Free) でも「Enterprise Features を含む全ての機能」が利用できるようになる。 • そのため、今後は Enterprise Features という分類は無くなるのではないかと思わ れる (推測)。 • つまり、この資料が「Enterprise Features の一覧」として有用な期間は約 1ヶ月だ けだと思われる (涙目)。