この記事は「RookだらけのAdvent Calender」10日目の記事です。
昨日、Japan Rook Meetupが行われましたが、そちらでも紹介したYugaByteDBについて、何回かに分けて解説をしていきます。
RookにおけるYugaByteDB対応とは
アドベントカレンダー1日目の「Rookの概要とRook-Ceph」にもあったように、Rook自体はマルチなストレージプロバイダをオーケストレーションできるツールです。
その中でCephなどのSDSと異なり、データベースに近いプロバイダとして、以下3つがあります。
- Cassandra (http://cassandra.apache.org/)
- CockroachDB (https://www.cockroachlabs.com/)
- YugaByteDB (https://www.yugabyte.com/)
これらは分散KVSまたはRDBですが、Rookによりオーケストレーションが可能となっています。
YugaByteDBにRookはどの程度本気なのか?
本日以降のアドベントカレンダーで各ストレージプロバイダを検証していく上で、これは重要な視点になるでしょう。
既にStableであるCephとEdgeFSと比較して、YugaByteDBやその他のプロバイダは明らかに違いが見られます。具体的にRookの公式ドキュメントを見てみましょう。
公式ドキュメントにあるYugaByteDBのCRDの箇所を見てみましょう。ここにはRookのCRDの仕様が書かれていますが、
- kind: YBCluster
が一つあるだけです。
一方、Cephはどうか。ここにあるRookにおけるCeph Storageの概要に始まり、以下のCRDの仕様を確認することが出来ます。
- kind: CephCluster
- kind: CephBlockPool
- kind: CephNFS
- kind: CephFilesystem
- kind: CephObjectStore
- Kind: ObjectBucketClaim
- kind: CephObjectStoreUser
もちろんCephの多機能さに起因する部分はありますが、データベースのOperatorは良くあるSnapshotやリカバリの機能などがRook-YugaByteDBでは提供されていません。
この辺りの開発が進むかどうかが、RookにおけるYugaByteDB利用が拡がるかの鍵になってくることは間違いありません。
Rookの競合は?
これは完全に私見ですが、Rookのストレージプロバイダ対応状況はAWS(に限らずクラウドプロバイダ)のサービスと比較すると少し見通しが立ってきます。
ストレージとしてはEBS/EFS/S3などをサポートし、Cassandraや分散型のデータベースサービスを提供しているAWSはクラウド上ではRookの上位互換です。
オンプレKubernetes上でのストレージプロバイダ管理でRookが優るようにも見えますが、これも今後次第かなという状況です。
YugaByteDBとは
特徴は先日の発表資料から以下をご覧下さい。
Google Cloud Spannerは非常に高性能なSQLサポートのデータベースですが、GCPでしか使えず、ロックインが発生します。
それに対し、オンプレミスや他のクラウドでSpannerと同等の機能と性能を実現しようとしているデータベースとして以下のようなものがあります。
- YugaByteDB
- CockroachDB
- TiDB
いずれのデータベースも膨大なノード数(100台から数百台規模)までスケールし、各種のコンポーネントをその上に展開することから、Kubernetesの力を借りてデプロイ・管理可能なことをうたっています。
DBMSとしての特徴
Kuberntetesで展開可能な大規模スケールのデータベースとしては、CNCFでGraduationとなったVitessがあります。
このVitessとYugaByteDBは構造として大きく異なります。
【Vitess】
- 1つ以上のコーディネータを持ち、その下にシャーディング・インスタンスがぶら下がる形。
- シャーディング・インスタンスは(ほぼ)シンプルなMySQL。
- 各インスタンスが持つデータは分かれており、それぞれへのクエリをコーディネータが振り分ける。
【YugaByteDB】
- SQLエンジンと分散ストレージの2つのコンポーネントからなる。
- 分散ストレージはKVSとして実装されている。
- データはストレージ内で3重に冗長化される
YugaByteDBの構造に関しては明日以降に詳しく解説していきます。
まとめ
さて、YugaByteDBとしての1日目となる本日はRookから見たYugaByteDB、そしてデータベースとしての構造の簡単な解説を行いました。
明日からは実際にRookを使ってYugaByteDBをインストールして、実際に使用感を試していきたいと思います。
よろしくお願いします。