SplunkのDatamodel Acceleration(高速化)について

はじめに
---
- これは個人の見解です。
- それでもsplunkさんのnative仕様の~~意味不~~英語マニュアルを読み重ねて、参考資料を読み重ねてたどり着いたまとめです。
- みなさんはここからdatamodelと仲良くなるスタートにしてください。


「よし、datamodelを使って高速検索だ！！って高速化サマリ？何それ？」
---
- Splunkを使い倒してくると、いずれぶち当たる壁。サーチの高速化。
- そこで出てくるdatamodelさん
- datamodelという言葉の意味と機能、そしてコマンドがわかっているようで分からない。
- 同時にtstatsコマンドとpivotコマンドも絡んできて、混乱の極みへ。
- 一度、丁寧にドキュメントを読み、answerを見て、サーチを試しながら**違い**について独自の見解をまとめてみました。


（結論から）整理した結果
---
Why思考の私にとって、**なぜ、その機能が生まれてきたのか?**を理解できるのが一番落ち着きます。機能が作られた歴史背景をたどってみて、一旦こんな感じで役割が整理できました。
***とりあえずこんなときにはこれ！***
<img width="1215" alt="スクリーンショット 2019-09-27 17.05.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/2ef26c36-6d98-44a4-8239-faa890b685b7.png">


datamodelとは
---
###まずdatamodelとは？
***検索しやすくするための、データセットの固まり。それがデータモデル。***
<img width="843" alt="スクリーンショット 2019-09-27 17.07.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/8c600687-b5d1-ba66-af3f-e11274f54a03.png">
***Yes, pivotコマンドはここで使われます***
<img width="1390" alt="スクリーンショット 2019-09-27 17.19.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/d115e49d-5e95-9bc7-81cc-aaf73552e805.png">

**でも、イベント件数が多くなるとサーチが遅くなる。。。。**
***そこで！データモデルアクセラレーションの誕生！***

###データモデルアクセラレーション=datamodelの高速化って何？
<img width="1367" alt="スクリーンショット 2019-09-27 17.23.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/f99d19a0-eee2-5123-ca74-a2f800d6f68e.png">

**爆速のポイントは.tsidxファイル**
<img width="1419" alt="スクリーンショット 2019-09-27 17.33.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/af18d580-c060-98fe-fb79-80da69a8344f.png">

**よし使ってみよう！[CIM app](https://splunkbase.splunk.com/app/1621/)をインストールして使いたいデータモデルを高速化！**
<img width="1421" alt="スクリーンショット 2019-09-27 17.40.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/7758fd56-9142-593e-be77-02fe6e5ff681.png">

***「ええい！連邦軍のモビルスーツは化け物か」***
<img width="1385" alt="スクリーンショット 2019-09-27 17.44.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/a343eabe-4f4a-860c-db52-00691bc159f2.png">

### |datamodelコマンドのSPLはいつ使うのか？
<img width="1368" alt="スクリーンショット 2019-09-27 17.48.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/abe34644-4d97-7505-4d63-1bac735eb933.png">

便利なtstatsコマンドとは
---
<img width="1353" alt="スクリーンショット 2019-09-27 17.48.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/99837d4c-da39-734b-02b6-b00e1847ab05.png">

### statsコマンドと比べてみよう
ここでもやはり。***「ええい！連邦軍のモビルスーツは化け物か」***
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3138353735392f30623761353264372d373131312d396135612d326131392d6431646462393538623234332e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/89026559-3a88-fbe1-88bb-f5deb6f14a07.png)




まとめ
---
1. スキーマオンザフライで取り込んだ生データから、相関分析のしやすいCIMにマッピングを行う
2. CIMマッピング済みのデータモデルを活用して、複数ログソースを横断的に検索する
3. 更に高速化データモデルを作成して高速集計、検索を行う



参考資料
---
- [PIVOT vs DATAMODEL vs TSTATS (by Splunk Answers)](https://answers.splunk.com/answers/330264/pivot-vs-datamodel-vs-tstats.html)
- [サーチはどのように動くか How Search Works - ブルームフィルタ、TSIDX、TERMによる匠の世界へ](https://www.slideshare.net/takashikomatsubara50/how-search-works-tsidxterm)