Slide 1

Slide 1 text

Let’s try CockroachDB \ コンニチハ / #CloudNativeDB 2022/12/13 Cloud Native Database Meetup #5

Slide 2

Slide 2 text

Who am I. Name: こたつ&&みかん Account: @kota2and3kan WorkAt: Scalar, Inc Job: [Technical Support, SRE] Like: DB: [PostgreSQL, CockroachDB, ScalarDB, ScalarDL] Bouldering: 5Q Dislike: Real Cockroach

Slide 3

Slide 3 text

今日は CockroachDB の話をします \ ナマエ ガ ヤバイ /

Slide 4

Slide 4 text

名前は聞いたことあるけど触ったことは ない人、挙手! \ ハイ! /

Slide 5

Slide 5 text

CockroachDB を試す方法をいろいろ 紹介します \ トライ /

Slide 6

Slide 6 text

CockroachDB を試す方法 ● Managed な環境で試す ○ Learn CockroachDB SQL (ブラウザ) ○ CockroachDB Serverless Cluster ○ CockroachDB Dedicated Cluster ● 自分で構築した環境で試す ○ cockroach demo コマンド ○ Kubernetes Operator を使う ○ サーバー上でバイナリを使って直接起動 ○ コンテナ (Docker) を使う

Slide 7

Slide 7 text

Managed な環境で試す \ マネージド /

Slide 8

Slide 8 text

Learn CockroachDB SQL (ブラウザ) ● ブラウザ上で CockroachDB を試すことができる。 ○ https://www.cockroachlabs.com/docs/tutorials/sql-playground.html ○ CockroachDB の Built-in SQL shell を使ってクエリを実行できる。 ○ 裏では 1匹構成のクラスタ (?) が動作している。 ○ とりあえず実行できる SQL を確認したい時はこれが便利。

Slide 9

Slide 9 text

CockroachDB Serverless Cluster ● CockroachDB の Serverless サービス。 ○ https://www.cockroachlabs.com/docs/cockroachcloud/create-a-se rverless-cluster.html ○ 無料枠があり、毎月一定の RU が無料で使える。 ○ 無料枠の範囲で使う場合、クレジットカードの登録は不要。 ○ マルチテナントであり、リソースは専有ではない。 ○ アプリケーションから接続して検証したい場合はこれば便利だと思わ れる。

Slide 10

Slide 10 text

CockroachDB Dedicated Cluster ● CockroachDB の DBaaS (Database as a Service)。 ○ https://www.cockroachlabs.com/docs/cockroachcloud/create-your -cluster ○ いわゆる Managed サービスで、クラスタの管理等は全て Cockroach Labs 側で実施される。 ○ 30日間の無料枠がある。 ○ 「ちょっと試してみる」場合は CockroachDB Serverless Cluster の方 がお手軽だと思われる。

Slide 11

Slide 11 text

お手軽に検証する場合 Managed な環 境はとても便利です... \ ベンリ /

Slide 12

Slide 12 text

が \ ヌルポ /

Slide 13

Slide 13 text

できないこともあります \ デキナイ /

Slide 14

Slide 14 text

Managed な環境でできないこと ● 起動しているプロセスを観察する。 ● プロセスにデバッガでアタッチする。 ● ファイルシステム上にある DB の実データを探す。 ● DB の実データ (バイナリデータ) を hexdump で覗いてみる。 ● データが格納されている KVS (Pebble) から key - value 形 式のデータを直接引っこ抜く。 ● ノード障害を発生させて遊ぶ。

Slide 15

Slide 15 text

自分で構築した環境で試す \ ユアセルフ /

Slide 16

Slide 16 text

cockroach demo コマンド ● メモリ上に一時的なクラスタを構築する。 ○ https://www.cockroachlabs.com/docs/stable/cockroach-demo.html ○ 24時間だけ有効なエンタープライズライセンスが付与されるため、有 償版限定の機能も試すことができる。 ○ とりあえず実行できる SQL を確認したい時はこれが便利。 ○ かなりお手軽だが、データはメモリ上に格納されるので、実データを覗 くのは難しい。

Slide 17

Slide 17 text

Kubernetes Operator を使う ● Operator を使って Kubernetes 上にデプロイする。 ○ https://www.cockroachlabs.com/docs/stable/orchestrate-a-local-cl uster-with-kubernetes.html ○ Operator がいい感じにいろいろやってくれる。Helm もある。 ○ 障害発生時には Kubernetes / Operator がいい感じに対処してしまう ので、ノード障害を発生させて遊ぶのが難しい。

Slide 18

Slide 18 text

サーバー上でバイナリを使って直接起動 ● cockroach start コマンドでプロセスを起動する。 ○ https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html ○ 遊び倒すならこれが一番良いと思われる。 ○ クラスタを作るためには、ノード数分コマンドを実行 (プロセスを起動) する必要がある。 ○ ドキュメントからコマンドをコピペすればクラスタが構築できるが、ちょっ とだけ手間がかかる。

Slide 19

Slide 19 text

コンテナ (Docker) を使う ● docker run コマンドでコンテナを起動する。 ○ https://www.cockroachlabs.com/docs/v22.1/start-a-local-cluster-in -docker-linux ○ 公式の Docker Image (cockroachdb/cockroach) を使ってコンテナを 起動する。 ○ 端末上でも環境を汚さずにクラスタを作って検証できる。 ○ ドキュメントからコマンドをコピペすればクラスタが構築できるが、ちょっ とだけ手間がかかる。

Slide 20

Slide 20 text

遊び倒すならやはり自前で環境を構築 するのが良いです... \ タノシイ /

Slide 21

Slide 21 text

が \ ヌルポ /

Slide 22

Slide 22 text

環境構築がちょっとめんどくさい \ メンドクサイ /

Slide 23

Slide 23 text

ということで... \ ナノデ /

Slide 24

Slide 24 text

Docker を使ってシュッとクラスタを作っ てくれる CLI を作りました \ シュッ /

Slide 25

Slide 25 text

_人人人人_ > Goki <  ̄Y^Y^Y^Y^ ̄ https://github.com/kota2and3kan/goki \ ゴキ /

Slide 26

Slide 26 text

Goki ● $ goki create ○ クラスタを構築。 ● $ goki sql ○ 構築したクラスタに Built-in SQL shell で接続。 ● $ goki jet ○ ノード障害を発生させる (コンテナを kill する)。 ● $ goki revive ○ ノード障害を復旧させる (コンテナを start する)。 ● $ goki delete ○ クラスタを削除。

Slide 27

Slide 27 text

Demo \ デモ /

Slide 28

Slide 28 text

まとめ ● CockroachDB はいろんな方法でお試しできる。 ○ 名前はヤバイ DB ですが、中身は真面目な分散 SQL データベースな ので、興味がある人は是非試してみてください。 ● Goki の今後。 ○ Scale in/out ができるようにしたい。 ○ クラスタのメタデータ等を参照できるようにしたい。 ○ Pebble (KVS) のデータを取れるようにしたい。 ○ CI やテストがほぼ未実装なので、まずはそれをやりたい。

Slide 29

Slide 29 text

Thank you!