分析DBMS ExasolとOracle In-Memory Optionのパフォーマンスの比較

以前の記事では、インメモリオプションを接続することにより、Oracle DBMSでの分析(OLAP / BIシステムに一般的)クエリを高速化する方法と量について説明しました。 このトピックを続けるために、分析用のいくつかの代替データベース管理システムについて説明し、パフォーマンスを比較したいと思います。 そして、インメモリRDBMS Exasolから始めることにしました

私が公開するテストの場合、 TPC-Hベンチマークが選択され、必要に応じて、読者はテストを繰り返すことができます。



Exasol DBMSに関する簡単な情報



Exasolは、次の主要機能を備えたリレーショナル分析インメモリデータベースです。





Exasolの機能の詳細については、Habréの優れた記事をご覧ください。 私たちの地域での人気が低いにもかかわらず、これは2012年以降、データウェアハウスのGartner Magic QuadrantおよびAnalyticsのData Management Solutionsに存在している成熟した製品です。











TPC-Hベンチマーク



パフォーマンステストでは、分析システムとデータウェアハウスのパフォーマンスを比較するために使用されるtpc-hベンチマークを使用しました。 このベンチマークは、DBMSとサーバーハードウェアの多くのメーカーで使用されています。 tpc-hページには多くの結果があります。公開するには、136ページのすべての仕様要件を満たす必要があります。 私は自分のテストを公式に公開するつもりはなかったので、すべての規則を厳密には守っていませんでした。 TPC-H評価-トップ10のパフォーマンス結果 Exasolはパフォーマンスのリーダー(100 GB〜100 TBのボリューム)であり、これがこのDBMSに興味を持つ理由です。



TPC-Hでは、指定されたスケールファクターパラメーターを使用して8つのテーブルのデータを生成できます。これにより、ギガバイト単位のデータのおおよその量が決まります。 このボリュームでOracle In-Memoryをテストしたため、2 GBに制限しました。









ベンチマークには、さまざまな複雑さの22のSQLクエリが含まれます。 qgenユーティリティによって生成されたクエリは、特定のDBMSの特定の機能に調整する必要があることに注意してください。ただし、 Exasolの場合、変更は最小限でした。 テストでは、2種類の負荷が生成されました。





その結果、どちらの場合も、528個のSQLクエリの実行時間が推定されました。 テーブルとSQLクエリのDDLスクリプトに興味がある人は、コメントに書いてください。



データベースまたは分析機器(ビッグデータを含む)を比較する目的で、別のより最近のベンチマークであるTPC-DSに注意することもお勧めします。 より多くのテーブルと大幅に多くのクエリがあります-99。



テストサイト



次の機能を備えたラップトップ:

Intel Core i5-4210 CPU 1.70GHz-4仮想 プロセッサー; DDR3 16 Gb; SSDディスク。

OS:

MS Windows 8.1 x64

VMware Workstation 12 Player

仮想OS:CentOS 6.8(メモリ:8 Gb、プロセッサ:4)

DBMS:

EXASOL V6 Free Small Business Edition rc1( シングルノード


Exasolデータベースへのデータのロード



EXAplusユーティリティを使用してテキストファイルからデータをダウンロードしました。 ダウンロードスクリプト:



IMPORT INTO TPH.LINEITEM FROM LOCAL CSV FILE 'D:\lineitem.dsv' ENCODING = 'UTF-8' ROW SEPARATOR = 'CRLF' COLUMN SEPARATOR = '|' SKIP = 1 REJECT LIMIT 0;
      
      





すべてのファイルのダウンロード時間は3分でした。 37秒 また、多くの例のあるドキュメントは非常に良い印象を残したことにも注意してください。 そのため、さまざまなDBMSから直接、ETLツールなどを使用して、データをロードするさまざまな代替方法について説明します。



次の表に、ExasolおよびOracle In-Memoryでのデータの編成方法に関する情報を示します。

エクサソル Oracle IM
テーブル 行数 生データの量(Mb) メモリ内のテーブルの量(Mb) コック。 圧縮 インデックスの数 メモリ内のインデックスの量(Mb) メモリ内のテーブルの量(Mb) コック。 圧縮
LINEITEM 11,996,782 1,562.89 432.5 3.61 4 109.32 474.63 3.29
ご注文 3,000,000 307.25 97.98 3.14 2 20.15 264.38 1.16
パルツップ 1,600,000 118.06 40.46 2.92 2 5.24 72.75 1.62
カスタママー 300,000 39.57 20.99 1.89 2 1.42 32.5 1.22
パート 400,000 51.72 10.06 5.14 1 1.48 20.5 2.52
サプライヤー 20,000 2.55 2.37 1.08 4.5 0.57
国家 25 0 0.01 0.00 1.13 0.00
地域 5 0 0.01 0.00 1.13 0.00
合計 17,316,812 2,082.04 604.38 3.44 11 137.61 871.52 2.39


この情報は、 SYS.EXA_ALL_OBJECT_SIZESおよびSYS.EXA_ALL_INDICESシステム表のExasolで確認できます。



試験結果



Oracle IM エクサソル
8セッション(最初の起動)、秒 386 165
8セッション(2回目の起動)、秒 〜386 30
2セッション(最初の起動)、秒 787 87
2セッション(2回目の起動)、秒 〜787 29日


したがって、このExasolテストは、最初の起動ではOracle IMよりも速く、2回目の起動でははるかに高速であることがわかります。 Exasolは、インデックスを自動的に作成することにより、SQLクエリの繰り返し実行を高速化します。 11個のインデックスは、テーブル自体のサイズに関連してRAMで約23%を占めました。これは、私の意見では、このような加速に値します。 Exasolにはインデックスを管理する機能はありません。 最適化のトピックに関するドキュメントのフレーズの翻訳は次のとおりです。

EXASolutionは、たとえば、さまざまなタイプのインデックスの作成、テーブルの統計の計算など、クライアントの複雑なパフォーマンスチューニングメカニズムを意図的に隠します。 EXASolutionのクエリはオプティマイザーを使用して分析され、最適化に必要なアクションは完全自動モードで実行されます。


結果は、私の場合、Oracleはクエリをよりよく並列化したことを示しています(2と比較して8セッション)。 私はまだこの理由を詳細に扱っていません。



クラウド内のExasol



仮想OSをインストールしてデータをダウンロードすることなく、Exasolのパフォーマンスを独立して評価したい人のために、クラウドデモにExasolがあります。 登録後、5台のサーバーのクラスターへの2週間のアクセスが許可されました。 スケールファクター= 50(50 Gb、約4億3,300万レコード)のTPCHスキームが利用できます。 このデータで2つのセッションを使用した2回目のテストでは、約2分かかりました。



結論として



私自身にとって、Exasol DBMSはデータウェアハウスとその上に分析システムを構築するための優れたオプションであると結論付けました。 ユニバーサルOracle DBとは異なり、Exasolは分析用に設計されています。 車との類推ができます。釣り旅行にはSUVを、街中をコンパクトな乗用車に乗せて旅行するのは良いことです。



前の記事のように、特定のケースでテストを行った後にのみ、真剣な結論を出すよう全員にお願いします。



これですべてです。次のステップはHPE Verticaのテストです。



PS: Tinkoff Bank(@Kapustor)のメンバーが最終選択についての情報を共有し、Badoo(@wildraid)がプロジェクトのニュースを共有してくれたらとても感謝しています



All Articles