Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CockroachDB Enterprise Features Overview

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

CockroachDB Enterprise Features Overview

Avatar for kota2and3kan

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ヶ月だ けだと思われる (涙目)。