1

VoltDBのベンチマークに利用できるYCSBクライアント/ドライバーの実装があることを誰かが知っていますか?または、参考文献/ブログ/記事/研究プロジェクトでさえありますか?

VoltDBベンチマークにTPCワークロードを使用できますか?

みなさん、ありがとうございました。

4

2 に答える 2

5

YCSBドライバーを実装するプロセスを終えたばかりの別のVoltDB開発者。このドライバーのソースは、GitHubのhttps://github.com/VoltDB/voltdb/tree/master/tests/test_apps/ycsbにあります。

実装に関する詳細:

YCSBはワイドカラム形式で動作し、文字列キーをいくつかの文字列バイナリk/vフィールドマッピングにマッピングします。これを柔軟に処理するドライバー、つまり任意のYCSB構成を処理するドライバーを作成することは、固定のリレーショナルスキーマを直接使用することを許可しません。これに対処するために、「スモールマップ」タイプのアプローチを採用しました。つまり、キーごとに、YCSB行全体がk / vペアで処理されるように、すべてのフィールドを単一のブロブに圧縮します。これにより、各行のフィールド数が比較的少なくなる(たとえば、<= 50)という暗黙の(ソフトな)推定が行われます。これは、既存の公開されたYCSBの結果を考えると妥当なようです。行ごとに多数のフィールドがある場合に対処するために、ストアドプロシージャレベルで追加のロジックを追加できます。

さらに、「スキャン」操作は、「このキーから開始して、決定論的な順序でデータをページングする」ことを意味すると解釈しました。現実の世界では、データは何かを意味し、意味のある順序を持っている場合と持っていない場合があります。YCSBの世界では、ある注文を別の注文よりも優先する特別な理由はありません。したがって、VoltDBパーティションに人為的な順序付けを課します。主キーインデックスによって課されるパーティション内の順序付けと組み合わせて、これはデータセットに全順序付けを課します。興味のある読者のために、この操作のクライアント側の実装では、いくつかの例で使用されている「どこでも実行」パターンのやや斬新な変形を使用しています。

公開されたテストの結果は、 https://voltdb.com/blog/voltdb-in-memory-database-achieves-best-in-class-results-running-in-the-cloud-on-the-で確認できます。 ycsb-benchmark-3/。私の同僚が上で示唆しているように、非常に強力ですが、このベンチマークの結果は、ストアドプロシージャの呼び出しでロジックをバンドルすることで利用できる最適化を利用していないため、実際にはVoltDBのパフォーマンスを過小評価します。

于 2014-05-07T21:37:46.077 に答える
3

VoltDB開発者はこちら。

公式のYCSBドライバーはありませんが、YCSBフレームワークを使用してベンチマークを行ったユーザーもいます。YCSBとVoltDBの間にはインピーダンスの不一致が少しあります。YCSBは、範囲シャーディングされた列ストアで動作するように設計されています。VoltDBは、サーバー側のロジックを豊富にサポートするハッシュシャーディングされたリレーショナルストアです。

これは、3つの方法で問題として現れます。

1つ目は、YCSBが範囲スキャンを必要とすることです。キーの分散についてある程度の知識があり、キーを正規化してバケットを有効に活用できる場合は、ハッシュシャーディングストアで効率的な範囲スキャンを実行できます。これは、 Cassandraでそれを行う方法の例です。

それは乗り越えられないわけではありませんが、それはいくつかの考えを必要とします。

2番目の問題は、列ストアモデルがリレーショナルデータモデルに適切にマッピングされないことです。小さなマップをblobを使用して単一の行にパックし、k / vペアが追加/更新されたときにそれを書き換えることで、かなりの速度とメモリ効率を得ることができます。これが、Redisが小さなマップを処理する方法です。

多くの/より大きなk/vペアを持つより大きなキーの場合、非正規化してデータベースがメモリを管理できるようにすることは理にかなっています。少しの作業で、これを透過的に行うストアドプロシージャAPIを作成できます。

繰り返しますが、乗り越えられないわけではありませんが、些細なことでもありません。

3番目の問題は、YCSBがすべてのロジックがクライアントに存在し、サーバーがクライアントのすべてのデータをマテリアライズする必要があるという前提で記述されていることです。これは、VoltDBに対して作成された実際のアプリケーションが、数倍高速でスペース効率が高い可能性があることを意味します。サーバー側のロジックにより、クライアントへの複数のラウンドトリップを排除でき、トランザクションのサポートにより、ログ構造化された方法でアプリケーションを作成することを回避できるため、スペース効率が向上します。

YCSBは、VoltDBのパフォーマンスとスケーリングの一般的な感覚を提供しますが、リレーショナルデータモデルとVoltがサーバー側のロジックに重点を置いているのに適した方法でアプリケーションを作成することで得られる重要なメリットがあります。

TPC-Cについて。VoltDBは、TPC-Cのようなベンチマーク用に特別に構築されました。公式ではなく、TPC-Cとはいくつかの点で異なるため、「いいね」と言います。最も重要な違いは、新規注文トランザクションは単一の倉庫のみを使用することです(新規注文の一部に必要な1〜10の倉庫は使用しません)。これは、分散トランザクションなしでベンチマークを完全にシャーディングできるため、重要です。

VoltDB TPC-Cのようなベンチマークはディストリビューションに付属していませんが、githubで入手できます。

于 2012-09-05T14:41:06.507 に答える