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

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

tzkoba
December 09, 2019

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

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

tzkoba

December 09, 2019
Tweet

More Decks by tzkoba

Other Decks in Technology

Transcript

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

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

    DB、さわってみた 4. Spanner互換への果てしない道のり アジェンダ
  3. 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~
  4. 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の競合はクラウドベンダーに見える。
  5. 8 オンプレでRook? • Outpostsに蹴散らされそうな未来も少し見えたり。 対象サービス EC2 EBS ECS EKS EMR

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

    CephObjectStoreUser CephNFS CephFileSystem CRDの数がこれだけ違う。 本当はYugaByteDBのバック アップ/リストアとか、 toolboxも欲しい。
  7. 12 • Spannerにヒントを得た、Cloud Nativeな分散SQLデータベース。 【特徴】 • 2019/9に2.0がGA。 • 100%オープンソース。 •

    PostgreSQL互換。 • トランザクションサポート。 • 高性能、特にWriteヘビー に強い。 • Auroraより速い。 • 世界規模でスケール可能。 • 高い回復性。 話がうますぎるぞ?
  8. 15 YugaByte DBはRDB+分散KVSの形 • 下記のコンポーネントを各ノードに配置し、DBクラスタを形成。 クエリレイヤと分散ドキュメントストア に分かれている。 • クエリレイヤは2つのAPIを提供。 –

    PostgreSQL互換のSQLを介するAPI – Cassandra起源の独自API • DocDBにデータを格納。 – RocksDBを拡張したLSM(Log Structured Merged Tree)のストレージエンジン。 – ShardingやReplicationなどの機能を提供、 トランザクション機能を実装。
  9. 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するだけ!
  10. 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
  11. 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
  12. 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をハッシュ化 した後にパーティションキーとして データの分散に利用、格納されるタ ブレットが決まる。 • 他のやり方もあると思われるが、こ れがデフォルト。