
時系列特化データベースの Amazon Timestream が一般公開(GA)しました!! 時系列データの保存・検索・分析にピッタリ!
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
約2年を経て、ついに、ついに、ついに、Amazon Timestreamが一般公開になりました!!
Amazon Timestreamを使えば、IoT機器などから収集した時系列データの保存や分析が簡単にできるようになります。 一言で言えば、時系列データに特化したデータベースです!
Amazon Timestreamとは
Amazon Timestream は、IoT および運用アプリケーションに適した、高速でスケーラブルな完全マネージド型の時系列データベースサービスです。1 日あたり数兆規模のイベントを、リレーショナルデータベースの 1/10 のコストで簡単に保存および分析できます。IoT デバイスや IT システムの普及や、産業機器のスマート化により、時系列データ (時間の経過に伴うモノの変化を記録したデータ) は、急速に増加しているデータ型の 1 つです。
Timestream は、時系列専用データベースであるため、データを時間間隔で効率的に保存および処理できます。Timestream を使用すれば、DevOps のログデータ、IoT アプリケーションのセンサーデータ、設備保全の産業用テレメトリデータを簡単に保存および分析できます。
https://aws.amazon.com/jp/timestream/
Amazon Timestreamの特徴
サーバーレス
なんとサーバーの管理は不要です。Amazon Timestreamは自動的にスケーリングしてデータベース容量やパフォーマンスをチューニングします。
データライフサイクル管理
例えば下記のような管理ができます。
- 最近のデータ:メモリストアに保存
- 履歴データ:磁気ストアに保存
それぞれに指定できる最短・最長期間は下記となっています。
| ストア種類 | 最短 | 最長 |
|---|---|---|
| メモリストア | 1時間 | 12ヶ月 |
| 磁気ストア | 1日 | 200年 |
簡単なデータアクセス
「直近のデータはデータベース(たとえばDynamoDB)にあるが一定期間後にS3に移す」といった事はあると思います。 このような場合に全データを検索しようとすると、DynamoDBとS3に対する検索を行うため、異なる手段・仕組みが必要になります。 しかし、Amazon Timestreamでは、メモリストアと磁気ストアを意識することなく、データ検索が行えるのです。
時系列専用データベース
Amazon Timestreamは時系列専用データベースであるため、データ保存や検索などの最適化が行われています。 また、平準化・近似・補完といった組み込み分析関数をクエリで使うことができます。
たとえば、interpolate_linear(timeseries, array[timestamp])を使えば、線形補間を使用して欠落データを埋めることができます。
データの暗号化をサポート
すべてのデータはKMSによる暗号化をサポートしています。
Amazon Timestreamの料金
3種類に対して課金されます。 自前で仕組みを組むよりもお得になっていると思います。
下記はオハイオの金額です。
書き込みに対する課金
- 1KBのサイズが100万件:0.50 USD
ストレージに対する課金
1GBあたりの格納時間で課金されます。
| ストア種類 | 1GB/時あたりの料金 |
|---|---|
| メモリストア | 0.036 USD (1GB/日で約0.86 USD) |
| SSDストア | 0.0004167 USD (1GB/日で約0.01 USD) |
| 磁気ストア | 0.0000411 USD(1GB/月で約0.03 USD) |
※SSDストアは近日公開予定
クエリに対する課金
スキャンされたデータ量に対して課金されます。
- 1GBあたりのスキャン量:0.01 USD
さっそく使ってみる
リージョン選択
GA時点では下記のリージョンがサポートされています。
- 米国東部 (バージニア北部)
- 米国東部 (オハイオ)
- 欧州 (アイルランド)
- 米国西部 (オレゴン)
データベースを作成する
データベースを作成します。
ここではSample Databaseを選択します。
また、サンプルデータセットにはIoTを選択しています。このサンプルデータには、トラックの速度・場所といった時系列データが含まれています。
さくっと作れました。
テーブルもできています。
クエリを実行して、テーブルに保存されているサンプルデータを眺めてみる
左側のメニューにあるQuery Editorを選択します。
データベースSampleDBのIoTテーブルの定義は下記のようです。
Preview dataを選択すると、サンプルクエリが現れました。
実行すると下記データが現れました。
さまざまなサンプルクエリがある
Sample Queriesを選択すると、さまざまなサンプルクエリがありました。
過去24時間のフリート内の各トラックの最新の燃料測定値を取得する
上から2つ目のサンプルクエリを実行してみます。
Get the most recent fuel reading of each truck in the fleet in the past 24 hours.
クエリ自体は下記になっています。
-- Get the most recent fuel reading of each truck in the fleet in the past 24 hours.
WITH latest_recorded_time AS (
SELECT
truck_id,
max(time) as latest_time
FROM "sampleDB".IoT
WHERE measure_name = 'fuel-reading'
AND time >= ago(24h)
GROUP BY truck_id
)
SELECT
b.truck_id,
b.fleet,
b.make,
b.model,
b.time,
b.measure_value::double as last_reported_fuel_reading
FROM
latest_recorded_time a INNER JOIN "sampleDB".IoT b
ON a.truck_id = b.truck_id AND b.time = a.latest_time
WHERE
b.measure_name = 'fuel-reading'
AND
b.time > ago(24h)
ORDER BY
b.truck_id
実行結果は下記です。
さいごに
時系列データを溜めて、可視化・分析したい要件にピッタリのデータベースですね。ぜひ使っていきたいです!




















