- こんにちは
- Amazon Timestreamとは??
- Amazon Timestreamのストレージ
- Amazon Timestreamのデータ
- Amazon Timestreamのクエリ
- 他のサービスとの連携
- 料金
- 参考
こんにちは
さて、前回SORACOM GPSマルチユニットからAmazon TImestreamへデータを送信してみたわけですが、そもそもTimestreamのことをよくわかっていなかったので今回はドキュメントやQ&Aを読んでいろいろ調べてみました。
Amazon Timestreamとは??
Amazon Timestreamとはフルマネージドな時系列データベースです、しかもスケーラブルでサーバーレスなサービス。いままでAWSでInflxDBのような時系列データベースを利用しようと思うとEC2でたてる、もしくはAuroraやDyanamoDBで代用するしかありませんでした。
そもそも時系列データとは??
時系列データとは、その名の通りある時間間隔で記録される一連のデータです。わかりやすいものだと気温や株価です。時系列データベースであるAmazon Timestreamはこのようなデータを保存しておくことができます。
Amazon Timestreamのストレージ
Amazon Timestreamのストレージにはいくつか種類があります(下記の2種類以外にもSSDストアというのがあるようですがまだ利用できません)。
- メモリストア
- マグネティックストア
テーブル作成時にそれぞれの retension
の期間を設定します。データはまずメモリストアへ保存され、 retension
期間を過ぎるとマグネティックストアへ移行します。マグネティックストアの retension
期間を過ぎるとデータは削除されます。
では、それぞれのストアの違いは何でしょうか?
メモリストア
Amazon Timestreamへデータが送信された時、メモリストアがそれを受け取ります。デバイスやアプリによっては、Amazon Timestreamが現在時刻よりも前の時刻のデータを受け取ることがあるとおもいます。メモリストアではそれらのデータを並び替えてくれます。また、比較的少量のデータに対する高速なクエリに最適化されています(Q&Aによると 数十ギガバイトの時系列データをミリ秒以内
)。つまり、どれくらい遅れて送信されるか、どれくらい前までのどれくらいのデータを高速にクエリをするかを考慮して、 retension
期間を設定する必要があります。
マグネティックストア
メモリストアの retension
期間を過ぎたデータはマグネティックストアへ移ります。マグネティックストアは読み取りに最適化されています。メモリストアよりも大きなデータに対してクエリを投げ高速に分析することができます(Q&Aによると テラバイトの時系列データを数秒以内
)。
Amazon Timestreamのデータ
Amazon Timestreamへ保存されるデータは タイム
と ディメンション
と measure_name
, measure_value
からなっています。
例
time | id | measure_name | measure_value::double |
---|---|---|---|
2020-11-10 06:35:11.929000000 | hogehoge | 25.1 | temperature |
タイム
読んで字のごとくタイムです。時刻です。
ディメンション
送信されたデータのメタデータのようなものです。例えばIoTであればデバイスの識別するIDを入れておくことが考えられるでしょう。
measure_name
measure_name
は measure_value
がなんの値であるかを指しています。
measure_value
データです。実際に計測された温湿度のような値が入ります。1レコードにつき measure_value
は1つのようで、温度と湿度があると別々のレコードで保存されます。
Amazon Timestreamのクエリ
SQLライクにクエリを投げられます。リファレンスが用意されているのでこれを参考にしましょう。マネコンの Query editor
からもクエリが試せます。
クエリのデータモデルはフラットモデルと時系列モデルの2種類あります。『Amazon Timestreamのデータ』で前述したモデルがフラットモデルと呼ばれています。これがAmazon Timestreamのデフォルトとなっています。Amazon Timestreamはデータを補間するような関数をサポートしているそうで、このような関数を使用するためには時系列モデルに変換する必要があるようです。
時系列モデルの例
id | temperature |
---|---|
hogehoge | [{time:2020-11-10 06:27:33.446000000, value: 24.8}, {time:2020-11-10 06:33:15.925000000, value: 24.9}, {time:2020-11-10 06:35:11.929000000, value: 25.1}] |
他のサービスとの連携
Amazon Timestreamはあくまでも時系列データベースなのでデータを保管しておくだけです。収集や分析は別のサービスから実行する必要があります。やさしいことにドキュメントに収集と分析を行うそれぞのAWSサービスとツールのことが記載されています。こちらを参考にしましょう。
料金
さて、料金です。Amazon Timestreamの料金はデータの書き込み、保管されているデータの量、クエリでスキャンされたバイト数によって計算されます。保管されているデータに対する課金額はメモリストアとマグネティックストアによって違うので注意しましょう。
参考
Yusuke Mine(書いた記事を見る)
I get drunk but it's not enough 'Cause the morning comes and you're not my baby.