世界1位になったアリババの独自開発DB OceanBaseとは何者か?

さて、1週間くらい前のニュースですがAlibabaがOracleのデータベースを抜いて世界1位の座を獲得しました。 itnews.org

世界一位って何よ? って所なのですが TPC-C - All Results - Sorted by Performance の結果みたいです。 f:id:pascal256:20191021055634p:plain

まあ「Oracleのデータが10年前の11gなので今のExadata X8Mとは比べ物にならない程性能が低いであろうこと」「HPEとかも虎の子のNonStop SQL出してない」「レギュレーションの問題なのかやる気の問題なのかAWS AuroraもGCP Spannerも居ない」という事もあって、最速のRDBランキングとしての妥当性に疑問はありますが、これはランキングが悪いのであってAlibabaを貶めるものでは無いでしょう。誇大広告感は狙ったと思いますがw

ベンチマーク結果としては以下のように、2位のOracleと比較して性能がザックリと2倍。ただしコスパは10%ダウンです。とはいえ当時円高だった事もあって同等といっても差し支えは無いでしょう。

DB System Performance (tpmC) Price/tpmC
OceanBaseAlibaba Cloud Elastic Compute Service Cluster60,880,80095.6 円
OracleSPARC SuperCluster with T3-4 Servers30,249,68884.2 円(当時)

どんなデータベース?

Database of Databases - OceanBaseによると2013年から開発されていて以外と実績がある事がわかります。GithubソースコードGPLで公開されていますがほとんど更新されていません。現状の最新版の2.0とはかなり変わってるかもです。

我々が普通に使おうとするとAlibaba Cloudを利用するしか無いっぽいですね。

公式ページや中国語の解説サイトをGoogle翻訳しながら調べた感じだと以下のような特徴があります。

  • 伝統的なRDBのACIDやSQLとNoSQLの可用性やスケーラビリティを備えたデーターベース
  • SSDなどの最新のハードウェアを前提として設計
  • Shared Nothingな分散DB
  • マルチリージョンなどクラウド環境を想定したアーキテクチャ
  • MySQL互換
  • LSM treeのような階層的なストレージ構造により高速なDMLを実現

この点としては割と現代的な分散DBあるあるな特徴ですね。Auroraとか。

ストレージエンジンなんかは結構面白そうな特徴を持っていました。 f:id:pascal256:20191021064254p:plain ref: OceanBaseの概要 - ストレージエンジン

データをまずIncremental Data(増分データ)とHistorical data(ベースライン)に分けます。その上で、増分データはインメモリ(MemTable)、ベースラインはSSD(SSTable)に分けて保存します。

RDBで良く使われるB-Tree Indexは原理的にReadには強いけどWriteには弱いという特徴を持っています。これはリアルタイムにインデックス全体を再構築するためです。増分データとベースラインを分けることでWriteが発生した時の作業範囲を小さく出来ます。で、実際にデータを見るときにはSSTableにMemTableの差分を適用して見ることで対応してるかと思います。

また、SSTableは常にRead Onlyなのでロックは不要。増分が書き込まれるMemTableもRead時はロックフリーとの事なのでイベントログ自体を書き込んでると思われます。

LSM treeそのものを使ってるかはちょっと分からなかったですが、マージコストをLevelDBやRocksDBと比較してるので似たような考え方などだと予想。

結果として、DMLは全てメモリ操作になるのでインメモリDB並みに高速なようです。

Ali Payとかにも使ってるなら書き込み性能が参照性能以上に重要になって来るので、その辺りを重視した設計になってるのでしょうね。

まとめ

分散トランザクションとか色々書いてあって面白そうなのですが、良く分からないのでデーターベースに詳しい人が誰が解説してくれるのを期待!

あと、日本語はもちろん英語のドキュメントすらほぼ無いのが最大の欠点ですね。その気があれば上手く英語化したりグローバルにもオープンにしていく事で、ひとかどのポジションを気づくかもです。

しかしRDB自作できる会社は強いですよねぇ。日本だと今や日立くらい? KVSは結構各種Web企業も一時作ってましたが。

TPC-Cに関しては恐らくAmazonAWSに全面移行された記事とか合わせてイラっとしてるOracleさんが、大人気なくベンチマークを更新し他社もそれに乗ってきてそれなりに意味のあるランキングになるとちょっと面白いなぁ、と個人的には思います。

参考