Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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!