データベースの性能検証に利用されるTPC-HとTPC-DSに関するざっくりとした整理

## 概要
データベースの性能検証によく利用されるTPC-HとTPC-DSをざっくり整理する。

## TPCとは
TPCとは、Transaction Processing Performance Councilの略であり、トランザクション処理性能評議会である。データベースのトランザクション性能検証を作成・検証を目的とした団体である。複数の性能検証ベンチマークがあり、TPC-E、TPC-H等が有名である。



## TPCのテスト一覧
TPCのActive Benchmarksには下記のものがあり、TPC-HとTPC-DSはそのうちの１つのベンチマークである。

|        Benchmark/Document         | Current Version |                        Specification                         |                         Source Code                          |
| :-------------------------------: | :-------------: | :----------------------------------------------------------: | :----------------------------------------------------------: |
|               TPC-C               |     5.11.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/tpc-c_v5.11.0.pdf) |                             n/a                              |
|              TPC-DI               |      1.1.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPC-DI_v1.1.0.pdf) | [Download TPC-DI_Tools_v1.1.0.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPC-DI&bm_vers=1.1.0&mode=CURRENT-ONLY) |
|              TPC-DS               |      3.2.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPC-DS_v3.2.0.pdf) | [Download TPC-DS_Tools_v3.2.0.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPC-DS&bm_vers=3.2.0&mode=CURRENT-ONLY) |
|               TPC-E               |     1.14.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPC-E_v1.14.0.pdf) | [Download TPC-E_Tools_v1.14.0.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPC-E&bm_vers=1.14.0&mode=CURRENT-ONLY) |
|               TPC-H               |      3.0.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/tpc-h_v3.0.0.pdf) | [Download TPC-H_Tools_v3.0.0.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPC-H&bm_vers=3.0.0&mode=CURRENT-ONLY) |
|              TPCX-AI              |      1.0.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPCX-AI_v1.0.0.pdf) | [Download TPCX-AI_Tools_v1.0.0.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPCX-AI&bm_vers=1.0.0&mode=CURRENT-ONLY) |
|              TPCX-BB              |      1.5.1      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPCX-BB_v1.5.1.pdf) | [Download TPCX-BB_Tools_v1.5.1.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPCX-BB&bm_vers=1.5.1&mode=CURRENT-ONLY) |
| TPCX-BB  (valid until 2021-11-02) |      1.5.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPCX-BB_v1.5.0.pdf) | [Download TPCX-BB_Tools_v1.5.0.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPCX-BB&bm_vers=1.5.0&mode=CURRENT-ONLY) |
|             TPCX-HCI              |      1.1.8      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPCX-HCI_v1.1.8.pdf) | [Download TPCx-HCI_Benchmarking_Kit_v1.1.8.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPCX-HCI&bm_vers=1.1.8&mode=CURRENT-ONLY) |
|              TPCX-HS              |      2.0.3      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPCX-HS_v2.0.3.pdf) | [Download TPCX-HS_Tools_v2.0.3.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPCX-HS&bm_vers=2.0.3&mode=CURRENT-ONLY) |
|             TPCX-IOT              |      2.0.0      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPCX-IoT_v2.0.0.pdf) | [Download TPCx-iot_Tools_v2.0.0.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPCX-IOT&bm_vers=2.0.0&mode=CURRENT-ONLY) |
|              TPCX-V               |      2.1.8      | [pdf](http://tpc.org/TPC_Documents_Current_Versions/pdf/TPCx-V_v2.1.8.pdf) | [Download TPCx-V_Benchmarking_Kit_v2.1.8.zip](http://tpc.org/TPC_Documents_Current_Versions/download_programs/tools-download-request5.asp?bm_type=TPCX-V&bm_vers=2.1.8&mode=CURRENT-ONLY) |

引用: TPC - Current Specifications - Active Specifications Only（[リンク](http://www.tpc.org/tpc_documents_current_versions/current_specifications5.asp?print=true&resulttype=CURRENT&mode=CURRENT-ONLY)）　2021年9月21日時点



個人的な解釈による目的を記載する。

| Benchmark/Document | ベンチマークの目的                                           |
| ------------------ | ------------------------------------------------------------ |
| TPC-C              | 一般的なデータベースのトランザクション性能検証。少し古いベンチマーク。 |
| TPC-DI             | ETLの性能検証                                                |
| TPC-DS             | ビックデータ基盤の性能検証                                   |
| TPC-E              | 一般的なデータベースのトランザクション性能検証。こちらの方がTPC-Cより新しい。 |
| TPC-H              | DWHの性能検証                                                |
| TPC-VMS            | 仮想化データベースの性能検証                                 |
| TPCX-BB            | ビックデータ基盤における機械学習・非構造化データを含めた性能検証 |
| TPCX-HCI           | ハイパーコンバージドインフラストラクチャの性能検証           |
| TPCX-HS            | ビックデータ基盤の可用性検証                                 |
| TPCX-IOT           | IoTゲートウェイの性能検証                                    |
| TPCX-V             | 仮想マシンにおけるデータベースの性能検証                     |

参考: TPC Benchmarks Overview（[リンク](http://www.tpc.org/information/benchmarks5.asp)）



## TPC-HとTPC-DSについて

### TPC-Hの概要

下記のER図のデータに対するクエリの性能を検証。

![image-20200411084341818.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d306f10a-5c3c-3c65-ba52-c456b40099d5.png)
引用：TPC BENCHMARKTM H（[リンク](http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v2.18.0.pdf))



上記図におけるSFはScale Factorの略であり、1Scale Factor当たり約1GBのデータ量を増減できることを示している。データ生成時には、データサイズと指定ファイル分割数（dbgenにおける-Cパラメーター）に応じたファイルが作成される。

| テーブル名 | 1SF当たりのデータ量 | 1SF当たりのサイズ目安(KB) | データサイズ割合 |
| ---------- | ------------------: | ------------------------: | ---------------: |
| lineitem   |           6,000,000 |                   747,915 |            69.0% |
| orders     |           1,500,000 |                   169,387 |            15.6% |
| partsupp   |             800,000 |                   116,978 |            10.8% |
| part       |             200,000 |                    23,765 |             2.2% |
| customer   |             150,000 |                    23,923 |             2.2% |
| supplier   |              10,000 |                     1,286 |             0.1% |
| nation     |                  25 |                         3 |                - |
| region     |                   5 |                         1 |                - |



### TCP-DSの概要について

下記のような7個のスタースキーマ型モデル、もしくは、スノーフレーク型モデルに対するクエリの性能を検証。

![image-20200411092932913.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e8eebefc-00db-a6fa-6026-9db4252fc9f5.png)

引用：TPC BENCHMARKTM DS（[リンク](http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-ds_v2.11.0.pdf))


TCP-DSにおいても、1Scale Factor当たり1GBのデータ量を増大できますが、下記表の通り、線形的に増加するわけではない。

![image-20200514101640542.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/019621bc-4116-d721-7217-e83f786449b7.png)
引用：TPC BENCHMARKTM DS（[リンク](http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-ds_v2.11.0.pdf))



## 参考リンク

- [TPCのサイト](http://www.tpc.org/information/who/whoweare5.asp)
- [サンプルデータ：TPC-H（snowflake社のドキュメント）](https://docs.snowflake.com/ja/user-guide/sample-data-tpch.html)
- [サンプルデータ：TPC-DS（snowflake社のドキュメント）](https://docs.snowflake.com/ja/user-guide/sample-data-tpcds.html)