Slide 1

Slide 1 text

@tzkb Rook v1.1で新登場! YugaByte DBをさわってみる Japan Rook Meetup #1 , 2019/12/9

Slide 2

Slide 2 text

2 最近やっていること • Cloud Native Days Tokyo 2019 “Cloud Native Storageが拓く Database on Kubernetesの未来” • PGConf.Asia 2019 “Building PostgreSQL as a Service with Kubernetes” + =∞

Slide 3

Slide 3 text

3 1. Rook v1.1のYugaByte DB対応とは 2. そもそもYugaByte DBって? 3. YugaByte DB、さわってみた 4. Spanner互換への果てしない道のり アジェンダ

Slide 4

Slide 4 text

4 知ってますか?

Slide 5

Slide 5 text

5 Rook v1.1のYugaByte DB対応とは 1

Slide 6

Slide 6 text

6 Rookが対応している様々なストレージ・プロバイダ • VerUPごとにストレージ・プロバイダは着々と増えている。 Storage Provider 種別 ステータス 対応Ver Ceph ストレージ Stable Cockroach DB DB Alpha v1.0~ Minio ストレージ Alpha EdgeFS ストレージ Stable v1.0~ Cassandra KVS Alpha NFS FS Alpha Yugabyte DB DB Alpha v1.1~

Slide 7

Slide 7 text

7 AWSと比べると良く分かるかも? Storage Provider AWSでは 説明 Ceph EBS/EFS/S3 • Unified SDS Cockroach DB DynamoDB? Aurora? • 分散KVS上のRDB(postgres) Minio S3 • オブジェクトストレージ EdgeFS ??? • 次回meetupで説明? Cassandra MCS • re;Invent2019で発表 NFS EFS • ファイルストレージ Yugabyte DB DynamoDB? Aurora? • 分散KVS上のRDB(postgres) • こうして見ると、Rookの競合はクラウドベンダーに見える。

Slide 8

Slide 8 text

8 オンプレでRook? • Outpostsに蹴散らされそうな未来も少し見えたり。 対象サービス EC2 EBS ECS EKS EMR RDS ※preview (postgres,MySQL) EFSやDynamoDB等も来たら、 オンプレで基盤構築する物好き はいるんだろうか? Cloud at Customer(by Oracle) は流行りませんでしたが、今回 はどうだろうか。

Slide 9

Slide 9 text

9 実際のところ、RookのYugaByte DBってどうですか? • Alphaなこともあり、まだ構築だけです。 YBCluster CephCluster CephBlockPool CephObjectStore ObjectBucketClaim CephObjectStoreUser CephNFS CephFileSystem CRDの数がこれだけ違う。 本当はYugaByteDBのバック アップ/リストアとか、 toolboxも欲しい。

Slide 10

Slide 10 text

10 ここで朗報?です。 の話は 殆どおしまい。 以降はデータベース談話をお楽しみください。

Slide 11

Slide 11 text

11 そもそもYugaByte DBとは 2

Slide 12

Slide 12 text

12 • Spannerにヒントを得た、Cloud Nativeな分散SQLデータベース。 【特徴】 • 2019/9に2.0がGA。 • 100%オープンソース。 • PostgreSQL互換。 • トランザクションサポート。 • 高性能、特にWriteヘビー に強い。 • Auroraより速い。 • 世界規模でスケール可能。 • 高い回復性。 話がうますぎるぞ?

Slide 13

Slide 13 text

13 (参考)分散SQLデータベース or Not? WAL M S S 【PostgreSQLのReplication】 SQL 分散 【Cassandra】 SQL 分散 SQL KVS

Slide 14

Slide 14 text

14 (参考)分散SQLデータベースの3つの類型 【例:Oracle RAC】 共有Disk型のマルチマスタDB 【例:Vitess】 Shardingによる分散DB

Slide 15

Slide 15 text

15 YugaByte DBはRDB+分散KVSの形 • 下記のコンポーネントを各ノードに配置し、DBクラスタを形成。 クエリレイヤと分散ドキュメントストア に分かれている。 • クエリレイヤは2つのAPIを提供。 – PostgreSQL互換のSQLを介するAPI – Cassandra起源の独自API • DocDBにデータを格納。 – RocksDBを拡張したLSM(Log Structured Merged Tree)のストレージエンジン。 – ShardingやReplicationなどの機能を提供、 トランザクション機能を実装。

Slide 16

Slide 16 text

16 YugaByte DB、さわってみた 3

Slide 17

Slide 17 text

17 YugaByte DB by Rookをインストールしてみる $ kubectl apply -f yugabytedb/operator.yaml $ kubectl apply -f yugabytedb/cluster.yaml $ kubectl get pod -n rook-yugabytedb-system NAME READY STATUS RESTARTS AGE rook-yugabytedb-operator-7f4b8c7dc5-prpk4 1/1 Running 0 1h $ kubectl get pod -n rook-yugabytedb NAME READY STATUS RESTARTS AGE yb-master-hello-ybdb-cluster-0 1/1 Running 0 1h yb-master-hello-ybdb-cluster-1 1/1 Running 0 1h yb-master-hello-ybdb-cluster-2 1/1 Running 0 1h yb-tserver-hello-ybdb-cluster-0 1/1 Running 0 1h yb-tserver-hello-ybdb-cluster-1 1/1 Running 0 1h yb-tserver-hello-ybdb-cluster-2 1/1 Running 0 1h • まずお手元に4Nodeほどある、K8sクラスタを準備します。 • あとはoperator.yamlとcluster.yamlをapplyするだけ!

Slide 18

Slide 18 text

18 こうなりました。 • OperatorとYugaByte DBコンポーネントがデプロイされる。 [yb-tserver] • Spanner Serverと同義と 考えて良さそう。 • データはtablet単位で冗長 化され、Raftでリーダ選出。 [yb-master] • メタデータの管理。 • 3重に冗長化、Raftでリー ダ選出。 yb-tserver yb-t-server yb-tserver rook yugabytedb operator yb-tserver yb-t-server yb-tserver

Slide 19

Slide 19 text

19 Web UIも付いてきます。

Slide 20

Slide 20 text

20 (デモ)YugaByte DBにクライアントツールで接続 • ysqlshというツールを使うが、psqlとほぼ一緒。

Slide 21

Slide 21 text

21 (デモ)PostgreSQL互換のSQLでOK • 文法はもちろん、組込みSQLもほぼ同じものが使える。

Slide 22

Slide 22 text

22 データの持ち方は? tablet3 tablet2 tablet1 tablet3 tablet2 tablet1 tablet3 tablet2 tablet1 Distrbuted Txn Mgr Distrbuted Txn Mgr Distrbuted Txn Mgr syscatalog syscatalog syscatalog • テーブルをtabletという単位 に分割。 • tabletはノードを跨いで3重 に冗長化、Raftアルゴリズ ムでどのtabletがLeaderか、 他はFollowerと決まる。 • がLeader • がFollower tablet1 tablet1

Slide 23

Slide 23 text

23 どんなテーブルが作られているか? $ cat ./schema.sql CREATE TABLE products( id bigserial PRIMARY KEY, created_at timestamp, category text, ean text, price float, quantity int default(5000), rating float, title text, vendor text ); • 各テーブルにはPKがサロゲートキー で設定されており、シーケンシャル なレコードをINSERTしている。 • YugaByte DB側でPKをハッシュ化 した後にパーティションキーとして データの分散に利用、格納されるタ ブレットが決まる。 • 他のやり方もあると思われるが、こ れがデフォルト。

Slide 24

Slide 24 text

24 (デモ)タブレットはRaftで3重化されている

Slide 25

Slide 25 text

29 Spanner互換への果てしない道のり 4

Slide 26

Slide 26 text

30 YugaByte DB by RookはSpannerを置き換えうるか?

Slide 27

Slide 27 text

31 なぜなら (出典:Cloud Spanner のハイレベルアーキテクチャ解説) https://medium.com/google-cloud-jp/cloud-spanner- %E3%81%AE%E3%83%8F%E3%82%A4%E3%83%AC%E3%83%99%E3%83%AB%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF% E3%83%81%E3%83%A3%E8%A7%A3%E8%AA%AC-fee62c17f7ed • NodeとStorageが別にスケールしないと多分ダメ。 • 以下はSpannerのアーキテクチャでColossusが肝。

Slide 28

Slide 28 text

32 Questions? @tzkb @tzkoba