時系列データストア用
ストレージ最適化戦術

Storage Magazine 2020年8月号より
Dan Sullivan

時系列データの保存は、データの使用形態とデータの年齢によって決められるべきだ。比較分析、機械学習、その他の目的のためのデータ保存のコツを見つけよう。

データの使用方法は、時とともに変化し、用途によっても変化する。時系列データを例にとって考えてみよう。このタイプのデータには、パフォーマンス監視情報、IoTセンサーからの観測データ、モバイル機器からの位置情報データ、その他時間を唯一の識別特性とするデータが含まれる。

最近、時系列に生成されるデータは特に、異常をデータストリームから解析する場合や、営業支援ツールとしてクーポンをモバイル機器に送る場合に役立っている。このようなデータは、少なくとも短期間においては、極めて貴重なものになる。エンジニアにディスクの空き領域がなくなりそうだ、というアラートを送って役に立つのは、事態が切迫する前にそのメッセージが届いたときだけだ。同様に、潜在的な顧客をお店に呼び寄せるクーポンは、その顧客が家に帰ってしまった後では、一気にその価値を失ってしまうだろう。

時系列データストアは、異常を検知する統計モデルや機械学習モデルを作成する際、必要不可欠なものになることがある。十分なデータがあれば、通常重大なイベントが起こる前に、アルゴリズムがパターンを検出してくれる。ディスクの空き領域不足の予測は簡単だ。しかし、全体の動きや季節変動に左右されるデータからインターフェースをつくるには、さらに微妙な違いを分析してモデリングする必要がある。モデリング方法が複雑になるほど、付加情報の価値も上がることが多い。

機械学習が企業のITツールの定番になる以前でも、古い時系列データは分析の役に立っていた。例えば、ある店の当月の売上と前年同月の売上を比較するのは、業績評価として一般的な方法だ。全体の動向(例えば過去6か月として)を見る時は、一日単位で累積したデータを見られるように視覚化したものと、1分単位のデータを累積したものとは見分けがつかない。

管理者は、時系列データの様々な使われ方を利用して、ストレージのコストと時系列データを使うアプリケーションのパフォーマンスの両方を最適化できる。

最近生成された時系列データ

最近生成されたデータは、最も使われる可能性が高く、低レイテンシでアクセスされるべきものだ。ストリームデータ処理などいくつかのケースでは、永続ストレージにデータを書き込む前にインメモリ・キャッシュを使ってデータを保存する必要がある。この手法は、異常検知アプリケーションや、検知・応答処理に割り当てられる時間が短いその他のアプリケーションに用いられる。

時系列データを永続ストレージに保存した時、それがどのようにクエリされるかを考える必要がある。例えば、あなたは通常時系列データストアを、顧客、センサー、ロケーション識別子、などの何か他の値と関連付けてクエリをしているだろうか?同時にアクセスされる可能性のあるデータは、同じパーティションや同じデータベース・シャードに保存するのが望ましい。

しかし同時に、単一のパーティションやシャードにあまりにも多くのデータを書き込むのも避けたいところだ。その場合は、ホット・スポッティング、すなわち、多数の異なるストレージ・コンポーネントを横断する並列処理の代わりに、時系列のI/O処理を少数のストレージ・コンポーネントに限定する方法に行き着くかも知れない。

これは、Google Cloud BigtableやApache Cassandraなどのワイドカラムストア型NOSQLデータベースに共通する懸念事項だ。しかしこの問題は、あらゆる分散型データストア、例えば水平拡張型リレーショナル・データベースGoogle Cloud Spannerでも起こりうる。

古い時系列データ

古くなったデータに、今後きめ細かい時間単位ではアクセスしそうにないとなったら、それらを集計して保存することを考えたほうがよい。

例えば、前期の時系列データをどの程度使うのかを考えてみよう。1年前の日次データの量や率を最新のデータと比較することがあるかも知れないが、1年前のデータを分単位で比較することは、あったとしても極めてまれだ。この場合、日毎の時系列データの集計は、クエリ用として低レイテンシのストレージで計算し保存すればよい。

多くの場合、単純な集計と計算だけで事足りる。しかし、集計しているデータの詳細が必要な場合は、オリジナル・データの分散を記述するために、平均値や標準偏差などの記述統計情報を保存すればよい。

機械学習

データの集計は、きめ細かい情報を必要としないクエリに対応するのには便利だが、機械学習モデルのトレーニングは、大量の詳細データが不可欠だ。このユースケースのために、モデル・トレーニングが必要とする間、詳細データを安価なストレージに保存しておくのは理に適っている。モデル・トレーニングはGPUやその他のアクセラレーターを利用できるため、それらの機器が処理する速度に合わせてデータを供給することが課題となる。

このようなケースの例として、GoogleはGoogle Cloudにおいて1ヶ月に1度以上の読み込みがほぼなかったデータ用にNearline Storageを設計し、大容量、長期保存に適合したストレージの選択肢とした。データが機械学習のタスクで必要になった時、低レイテンシの永続ディスクにコピーすれば、トレーニングのプログラムで直接アクセス可能になる。

データの使い方は時とともに変化し、ユースケースによっても変化する。このことは、我々にストレージ製品のコストを低減するための調整を行いつつ、データの使用用途に対する最適化を行う機会を与えてくれる。これは、他の業務データと同様、時系列データにも当てはまることだ。

著者略歴:Dan Sullivan(理学修士)は、IT業界で20年以上の経験を持つ著者、システムアーキテクト、コンサルタント。先進解析、システムアーキテクチャー、データベース設計、エンタープライズ・セキュリティ、ビジネス・インテリジェンスに造詣が深い。

Copyright 2000 - 2022, TechTarget. All Rights Reserved, *この翻訳記事の翻訳著作権は JDSF が所有しています。
このページに掲載されている記事・写真・図表などの無断転載を禁じます。