Slide 1

Slide 1 text

2024/10/02 Database Engineering Meetup #4 CockroachDB Enterprise Features Overview #DBEM \ コンニチハ /

Slide 2

Slide 2 text

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.

Slide 3

Slide 3 text

Who am I. ※Note※ \ ブガイシャ / Cockroach Labs の中の人では ありません。

Slide 4

Slide 4 text

Enterprise Features Overview \ エンタープライズ /

Slide 5

Slide 5 text

の、前に... \ マエオキ /

Slide 6

Slide 6 text

License Overview \ ライセンス /

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Enterprise Features Overview \ アラタメテ /

Slide 15

Slide 15 text

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 (何故か一覧に 載ってない)

Slide 16

Slide 16 text

Read Committed Transactions \ リードコミッティド /

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Follower Reads \ フォロワーリード /

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Multi-Region Capabilities \ マルチリージョン /

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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) を指定できる。

Slide 23

Slide 23 text

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 対応) 等が考えられる。

Slide 24

Slide 24 text

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種類が ある。

Slide 25

Slide 25 text

PL/pgSQL \ プロシージャラングリッジ /

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Node Map \ ノードマップ /

Slide 28

Slide 28 text

Node Map ● DB Console (いい感じの Web UI) 上で、各 Node の情報が地図上に表示され、 Region や Metrics がいい感じに参照できるようになる。 ● https://www.cockroachlabs.com/docs/v24.2/enable-node-map

Slide 29

Slide 29 text

Generic Query Plans \ ハンヨウプラン /

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

VECTOR type \ ベクター /

Slide 32

Slide 32 text

VECTOR type 最近流行りの例のアレ https://www.cockroachlabs.com/docs/v24.2/vector \ アレ /

Slide 33

Slide 33 text

Enterprise Backup and Restore Capabilities \ バックアップ /

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Changefeeds into a Configurable Sink \ CDC /

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Change Data Capture Queries \ CDC Part 2 /

Slide 38

Slide 38 text

Change Data Capture Queries ● CDC (Change Data Capture) にて送信される更新情報を、選択 (Filtering) したり 加工したりすることができる。 ● SELECT 文および複数の関数を使って、送信するデータの選択や加工ができる。 ● https://www.cockroachlabs.com/docs/v24.2/cdc-queries

Slide 39

Slide 39 text

Physical Cluster Replication \ レプリケーション /

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

Encryption at Rest \ TDE /

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

Column Level Encryption \ アンゴウカ /

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

GSSAPI with Kerberos Authentication \ ケルベロス /

Slide 46

Slide 46 text

GSSAPI with Kerberos Authentication ● Kerberos 認証 (GSSAPI) を利用して、CockroachDB Cluster に接続する Client の認証を実施できる。 ● 例えば、Active Directory を利用したユーザー認証が実施できる。 ● https://www.cockroachlabs.com/docs/v24.2/gssapi_authentication

Slide 47

Slide 47 text

Cluster Single Sign-on (SSO) \ SSO /

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

Single Sign-on (SSO) for DB Console \ SSO Part 2 /

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

Role-based SQL Audit Logging \ カンサ /

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

Certificate-based authentication using multiple values from the X.509 Subject field \ ショウメイショ /

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

Table Partitioning \ パーティショニング /

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

まとめ \ マトメ /

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

Thank you!