マイクロソフト社はこのほど、分散PostgreSQLベンチマークの結果について説明し、Azure Cosmos DB for PostgreSQL、CockroachDB、Yugabyteの処理性能と、価格の効率を比較した。実行の際のトレードオフが異なるため、結果としてはAzure Cosmos DBの方が高い処理能力を示したものの、分散データベースのベンチマークの課題が浮き彫りになった。
GigaOmのベンチマークによると、Citus分散テーブルを用いたAzure Cosmos DB for PostgreSQLは、代替となる2つの分散データベースである、CockroachDB Dedicated とYugabyte Managedを上回る、優れた処理性能とコストパフォーマンスを提供している。
以前InfoQで紹介したように、PostgreSQLは、クラウド分散データベースの新しい標準になりつつあり、さまざまな提供者がこの人気のあるオープンソースの類似データベースを拡張、再実装、分岐させている。マイクロソフト社が提供したベンチマークは、Transaction Performance Council(TPC)が管理するオープンソースの類似データベースのベンチマークツールである、HammerDBを使って稼働してきた。マイクロソフト社の ソフトウェアエンジニア主任の、マルコ・スロット氏は次のように記述している。
GigaOM は、Azure Cosmos DB for PostgreSQLの他、これらに匹敵する2つの管理サービス提供のベンチマークのために、HammerDB TPROC-Cを使用した。GigaOM は当初、それらベンチマークに 1,000 のウェアハウスを使用した。その結果、最大 100 GBものデータが必要となった。とはいえ、CockroachDBもYugabyteも、処理能力は驚くほどに低かった。これらは、接続数を変更することなしに、両方のウェアハウスの数を増やすことによって、よりよい性能を発揮することが可能ではあった。
出典:https://devblogs.microsoft.com/cosmosdb/distributed-postgresql-benchmarks-using-hammerdb-by-gigaom/
批判や議論に繋がる違いというのは、PostgreSQLでテーブルを分散させるためのオープンソースの拡張機能である、Citusの使い方である。この拡張機能は、分散カラムとなるシャドウキーを、開発者によって指定する必要がある。
Citus の中核理念は、分散 PostgreSQLが、いつも大規模な性能を持ち続けてきたということだ。PostgreSQLは、他のすべての機能に対しても、十分に有用なものなのだから。
テストされた他の分散データベースは、分散カラムの定義に依存していない。Reddit上でも、スロットはその違いを認めている。
パフォーマンスの差は少々厄介だ。Citusを使用するには、分散カラムとコロケーションを定義するための、追加ステップ(create_distributed_tableなど)が必要だ(そうでなければ、単一ノードを使用しているに過ぎない)。我々の経験では、関連するデータをコロケーションしなければ、典型的な処理をする PostgreSQLの作業量は、シングルサーバよりもはるかにパフォーマンスが悪くなる。
このベンチマークについて、YugabyteDBの開発者支援者であるFranck Pachot氏は、自身のX(旧Twitter)のポストにて次のように語った。
これはCitus(2段階のコミットプロトコルを持つSQLデータベース上の分割)とYugabyteDBおよびCockroachDB(グローバルACIDトランザクションを持つ分散ストレージ上のSQL)を比較しているのだろうか? 強靭性、グローバル一貫性、弾力性、自動分割ないしバランスの取り直しのレベルは同じではない。両者の使用例は異なる。
この報告書は、異なる分散データベースが、レスポンスタイム、同時実行性、耐障害性、機能性、一貫性、耐久性などの異なる特性において優れている可能性があり、異なる展開をターゲットにしていることを認めている。スロット氏はこう結論付けている。
分散システム、そして特に分散データベースは、あらゆるレベルでトレードオフが重要である。CockroachDBとYugabyteは異なるトレードオフを行い、分散カラムを必要としない(...)Postgresを拡張するか(Citusが行ったように)、Postgresを分岐させるか(Yugabyteが行ったように)Postgresを再実装するか(CockroachDBが行ったように)といった決定も、エンドユーザーの経験に、に大きな影響を与えるトレードオフであり、良いものもあれば悪いものもある。
顧客が作業量に合ったベンチマークを実行することを奨励するために、マイクロソフト社は、Azure Cosmos DB上でHammerDBベンチマークを実行するためのヘルパースクリプトを共有した。マイクロソフト社の熟練ソフトウェアエンジニアであるJelte Fennema氏は、クラスタのセットアップと取り壊しを含む、ベンチマークの自動実行方法を紹介している。
GigaOmによると、Google Spanner Postgres Interfaceは、ベンチマークを実行するのに必要なレベルのPostgres互換性を提供していないため、比較には含まれていない。