TableauでPostgreSQLとDr.Sumの速度比較をしてみた


#最初に
日本で20年以上も愛されている、国産の超高速集計データベースであるDr.Sum
世界でも日本でも大人気のセルフサービスBIツールの代表格であるTableau

2021年9月22日のDr.Sumのバージョンアップにより、この２つのツールの接続が可能になりました。

さっそく動きを見てみたくて、実際につないでみました❗️


###Dr.Sum とは

https://www.wingarc.com/product/dr_sum/

https://www.wingarc.com/product/dr_sum/ds20th-anniversary/index.html

<details><summary>【詳細はこちら】**Dr.Sum**は10億件のデータを1秒台で集計できる超高速データベースツールです。</summary><div>
高速のディスク集計と、ハイブリッドで使える超高速のメモリ集計をつかいながら、最適な運用コストでのパフォーマンスを実現します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/e8924330-f537-38f2-e276-ecdd0d96341d.png)

また、Dr.Sumは集計速度だけでなく、データベース構築経験の少ない方でもGUI操作でDBをつくったり、データを取り込んだりできます。
データベース周りにそこまで強くないぼくのような人間でも、気軽にデータハンドリングができるところが素敵です。

さて、Dr.Sumという製品は単純にデータベースがあるだけではなく、様々なオプション製品を加えることで、多様な使い方が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/12be6f13-7354-f58a-773c-b43934d30666.png)

詳しくは公式ホームページをご参照いただきたいのですが、
✅ データを抜いて
✅ データを加工して
✅ データを貯めて
✅ データを高速集計する
ことが可能となります。

[製品の一覧はこちら](https://www.wingarc.com/product/dr_sum/lineup/index.html)

</div></details>


###Tableau とは
https://www.tableau.com/ja-jp?_fsi=B8ciS5wl

https://datasaber.world/

<details><summary>【詳細はこちら】**Tableau**は世界で愛される、直感的操作でデータ分析が実現できるBIツールです</summary><div>

ぼくが思う、Tableauの素晴らしい点は２つ。
ひとつは、個人がデータを武器に価値を創造していくときの最強のツールであるという点
もうひとつは、コミュニティーという共通の目標を持つ企業をまたいだ社会の実現の両者を兼ね備えている点です。
個のスキルを高め、集団で収斂するという考えです。

ツールだけで見ても、「データを分析する」という視点に立ち、データの準備が簡単にできたり、
直感的に操作で、思考を止めずにデータの分析ができるという優れものです。

DataSaberという資格制度が特徴的で、師匠が弟子を育てる形で企業を超えたTableau文化が根付いております。
ツールの性能やそのコミュニティー、どれも世界クラスの製品です。
</div></details>

　　　

:::note warn
2021年9月22日の段階では、Dr.Sum接続はTableau PrepとTableau Onlineには対応していません。
本記事もTableau Serverとの接続を記載します。
:::


さて、今回はDr.Sumって集計速度が早いと言われていますが、それは実際に他と比較してどれくらい早いのかを試してみたという内容です。
ゴリゴリの他社比較や精密に同条件での比較などはおこないません。
フリーのPostgreSQLにDr.Sumと同等のデータを入れて、Tableauでそれぞれスピードを比較してみようと思います。

「あーDr.Sumってデータ集計専門ツールだけに、他と比べても早いんだぁ」ってことがわかれば幸いです。

早速やってみましょう。　　　

##まずはデータを確認する
今回使用するデータはWING_MALLというデータで、2000万件あります。
2000万件、まぁまぁのデータ量ですね。
（余談ですが10年前くらいは2000万件はまぁまぁとは言えず、大きなデータだなぁと思ったものです。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/094e0770-69b8-ce73-c506-2174af3ac746.png)

Dr.Sumは通常のディスク集計と、インメモリ集計ができるハイブリッド構造です。インメモリにすると爆速になります。
2000万件のテーブルはディスク集計です。1億件以下であればディスク集計で十分に対応できます。

中に入っているデータはこのような感じです。
名称だけを持ってきているような、わかりやすいデータ構造です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/94aa4717-7069-e1da-df85-ed2eca2d3865.png)

TableauでDr.SumとPostgreSQLのそれぞれにつないで、下記のような形にしておきます。

| 置く場所 | 置くもの |
|:-|:-|
|  列 | なし  |
|  行 |  大分類名称、中分類名称、小分類名称 |
|  合計 |  売上金額 |


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/9755912d-6dd8-81f6-04a5-bf3ad93dc522.png)

これで準備完了です。
この状態から、月度の項目を列に入れてみましたので、そこでスピードをチェックしましょう。


##Dr.Sumの速度
[クエリ実行中]的な待ち時間が一切発生せず、集計が終了しました。
![testDS2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/e20ed4d2-5db5-b78a-8c5b-c24996b12c45.gif)

物足りないので、[年度]＋[月度]としてみましたが、それでも待ち時間は発生しませんでした。
![testDS3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/c6267f42-242a-5cce-0abb-2e90978a5d7d.gif)


##PostgreSQLの速度
すみません、静止画です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/a65ca59a-6782-4b32-30be-760becf9bf30.png)

月度を置いて、4:14秒かけて、画面が表示されました。
怖くてとても年度は置けませんでした。
それほどに集計時間に差がありますね。

###ちょっと弁解
これは何もPostgreSQLが悪いということではありません。
そもそもPostgreSQL、Oracle、SQLServerなどのリレーショナルデータベースはテーブルとテーブルを結合して、いろいろなテーブルから取得した１行のレコードをとることに長けた仕組みです。
そのRDBに何千万件のレコードを集計させるのは、そもそもアーキテクチャーとして不利なのです。
Dr.Sumはカラム型DBという集計に特化したデータベースです。集計を高速化するために生まれました。
裏を返すと、キーで結合する作業は得意ではありません。UPDATEの処理などはRDBより遅いです。

##これでは終われん
比較があっさり終わってしまったので、もうちょっとDr.Sumで遊んでみます。

1億件のディスク集計をやってみました。
さすがにキツそうです。すべての項目を置くのに1分近くかかりました。
![testDS4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/697ba672-053b-42de-a1d0-f005671a3326.gif)

Dr.Sumでもディスク集計だと1億件は結構キツイです。
では、同じデータをインメモリ化したテーブルではどうでしょう。

まったくストレスなく操作ができますね。
![testDS5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/267b2cd9-80f5-a239-d6b0-0a4170b97b84.gif)


この通り、1億件くらいですとノンストレスでデータ分析を行うことができます。
ちなみに10億件のデータでも試してみました。
その詳細は下記の記事でございます。

https://qiita.com/Ryo---san/items/9461f19aea9f2badd444



#最後に
いかがだったでしょうか。
Dr.Sumの速度が体感できたのではないかと思います。

上述しましたが、データベースには得意技があります。よって向き不向きが発生します。
UI側も同じです。Tableauで得意なところ、MotionBoardで得意なところのそれぞれが存在します。

TableauとDr.Sumが組み合わさると、データガバナンスの効いた、高速集計ができるセルフサービスBIが実現できます。
いろいろな企業がBIツールの利点を引き出しながらつかっていただけると、BIマニアとして嬉しいなと思います。

その他の関連記事を下記に載せておりますので、ご興味がありましたらご参照ください。


https://qiita.com/Ryo---san/items/f9693757d117bdd30f1c

https://qiita.com/Ryo---san/items/4e41ed16675f4bbdbe21

https://qiita.com/Ryo---san/items/0fc608c476c3f5a42e0e