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

Rook v1.1で新登場!YugaByte DBをさわってみる

Cd891a89dfec6ca7bd278b5f5bd87c90?s=47 tzkoba
December 09, 2019

Rook v1.1で新登場!YugaByte DBをさわってみる

2019/12/9のJapan Rook Meetup #1向けの登壇資料です。
RookでKubernetes上に構築できる、Spannerクローンの分散SQLデータベースであるYugaByte DBを紹介しています。

Cd891a89dfec6ca7bd278b5f5bd87c90?s=128

tzkoba

December 09, 2019
Tweet

Transcript

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

    2019/12/9
  2. 2 最近やっていること • Cloud Native Days Tokyo 2019 “Cloud Native

    Storageが拓く Database on Kubernetesの未来” • PGConf.Asia 2019 “Building PostgreSQL as a Service with Kubernetes” + =∞
  3. 3 1. Rook v1.1のYugaByte DB対応とは 2. そもそもYugaByte DBって? 3. YugaByte

    DB、さわってみた 4. Spanner互換への果てしない道のり アジェンダ
  4. 4 知ってますか?

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

  6. 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~
  7. 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の競合はクラウドベンダーに見える。
  8. 8 オンプレでRook? • Outpostsに蹴散らされそうな未来も少し見えたり。 対象サービス EC2 EBS ECS EKS EMR

    RDS ※preview (postgres,MySQL) EFSやDynamoDB等も来たら、 オンプレで基盤構築する物好き はいるんだろうか? Cloud at Customer(by Oracle) は流行りませんでしたが、今回 はどうだろうか。
  9. 9 実際のところ、RookのYugaByte DBってどうですか? • Alphaなこともあり、まだ構築だけです。 YBCluster CephCluster CephBlockPool CephObjectStore ObjectBucketClaim

    CephObjectStoreUser CephNFS CephFileSystem CRDの数がこれだけ違う。 本当はYugaByteDBのバック アップ/リストアとか、 toolboxも欲しい。
  10. 10 ここで朗報?です。 の話は 殆どおしまい。 以降はデータベース談話をお楽しみください。

  11. 11 そもそもYugaByte DBとは 2

  12. 12 • Spannerにヒントを得た、Cloud Nativeな分散SQLデータベース。 【特徴】 • 2019/9に2.0がGA。 • 100%オープンソース。 •

    PostgreSQL互換。 • トランザクションサポート。 • 高性能、特にWriteヘビー に強い。 • Auroraより速い。 • 世界規模でスケール可能。 • 高い回復性。 話がうますぎるぞ?
  13. 13 (参考)分散SQLデータベース or Not? WAL M S S 【PostgreSQLのReplication】 SQL

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

  15. 15 YugaByte DBはRDB+分散KVSの形 • 下記のコンポーネントを各ノードに配置し、DBクラスタを形成。 クエリレイヤと分散ドキュメントストア に分かれている。 • クエリレイヤは2つのAPIを提供。 –

    PostgreSQL互換のSQLを介するAPI – Cassandra起源の独自API • DocDBにデータを格納。 – RocksDBを拡張したLSM(Log Structured Merged Tree)のストレージエンジン。 – ShardingやReplicationなどの機能を提供、 トランザクション機能を実装。
  16. 16 YugaByte DB、さわってみた 3

  17. 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するだけ!
  18. 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
  19. 19 Web UIも付いてきます。

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

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

  22. 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
  23. 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をハッシュ化 した後にパーティションキーとして データの分散に利用、格納されるタ ブレットが決まる。 • 他のやり方もあると思われるが、こ れがデフォルト。
  24. 24 (デモ)タブレットはRaftで3重化されている

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

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

  27. 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が肝。
  28. 32 Questions? @tzkb @tzkoba