Splunkにおける最大の特徴として、Schema on the fly(スキーマ・オン・ザ・フライ)と呼ばれる仕組みがあります。 技術よりな内容とはなりますが、このSchema on the flyによって、Splunkは複雑で多種多様なフォーマットであるログの分析を可能にし、他製品とは一線を画すデータの取り扱いに関する柔軟性をもっています。 ぜひ名前だけでなく中身までしっかり理解していってください。
1. スキーマとは
スキーマ(schema)とは、ITの世界ではデータベースの用語です。 データベースの中でどのような項目や形式でデータを管理するかを定めた構造や定義のことを指します。 具体的には、リレーショナルデータベースでは、最初にテーブルの列について、それぞれ名前や型などを定義し、それに沿ってデータを格納します。 これがデータベーススキーマです。
データベースにおいては、スキーマはデータを入れる前、設計・実装時に確定する必要があります。 データを取り込んだ後に変更することは困難です。
このため、ログなどのテキストデータをデータベースに格納する場合は、単純に出力されたテキストをそのまま格納することはせず、ほとんどの場合ETL(Extract、Transform、Load)ツールなどを用いて、データを適切な形に変換して格納することを行う必要があります。 またデータを取り出す際も、データベーススキーマに合わせたSQLを用意する必要があります。 ログのように、フォーマットが複雑かつ多種多様なデータをデータベースに格納するためには、多くの手間がかかります。
2. Splunkにおけるスキーマの取り扱い
Splunkでは、テキストデータをインデックス化する際、スキーマ定義を最低限にした状態でデータを取り込み、インデックス化することができます。 Splunkは、インデックス内のデータがサーチされ、ユーザーに表示する際に初めてフィールドを抽出し、テキストデータにフィールドを付与した形で表示させます。
これがSplunkとデータベースの決定的な違いとなります。 データベースでは、事前にスキーマを設計・実装してからデータを格納する必要があったのに対し、Splunkでは、スキーマを厳密に定義しなくともデータをインデックス化することができます。 そして、サーチを実行して表示する段階になって初めて、動的にフィールドをテキストデータに付与して表示させることができるのです。 この後付けでスキーマを定義する仕組みがSchema on the flyです。
3. Schema on the flyのメリットとデメリット
Schema on the flyのメリットとデメリットをまとめると以下のようになります。
メリット
- 事前にスキーマを厳密に定義しなくても、多様なログをそのまま取り込めるため、すぐにデータ取り込みを開始できる
- サーチ実行時にスキーマを変更することができるため、スキーマの変更や修正が容易
- テキストデータをそのまま取り込んでおくことができ、コンプライアンスや監査目的の保管にも利用可能
デメリット
- スキーマの厳密な定義をする必要はないが、一切の定義が不要であるわけではない(文字コード、タイムスタンプ、改行区切りなど、一部項目については最初に決める必要あり)
- データベースと比較すると、不特定多数から短期間に大量のトランザクションを裁く用途には不向き
- データベースと比較すると、同じパフォーマンスを出すために消費するリソース量は大きい
メリット#1-3に記載された項目は、まさにSplunkの強みそのものと言えます。 ログは、複雑で多種多様なフォーマットを持つテキストデータです。 このログを分析するために、Schema on the flyの仕組みはうってつけだったために、Splunkはログ分析プラットフォームとして非常に高いシェアを持っていると考えられています。
4. まとめ
- スキーマとは、どのような項目や形式でデータを管理するかを定めた構造や定義のこと
- 一般的にデータベースでは、データ格納の前にスキーマを設計・定義する必要があり、データ格納時においてもログ毎のETLツールの用意などが必要で手間がかかる
- Splunkでは、データ取り込み時にスキーマ定義を最低限にしてインデックス化することができ、サーチ時に動的にスキーマを定義できる。この仕組みをSchema on the flyという
- Schema on the flyは、複雑で多種多様なフォーマットを持つログ分析の分野で特に有効