AWS Timestreamを試す

目的

  • AWS Timestreamを触ってみる(本当にさわりだけでも)

お断り

  • 間違っている部分あったらごめんなさい。

AWS Timesteramとは

  • AWSマネージドな時系列DBのサービス
    • 一日一兆をこえるデータ投入をさばけるとか
  • マネージドなだけあってAWSのいろんなサービスと連携しやすいらしい
    • 動画で紹介されていたのはAWS IoT Coreを介してデータをTimestreamに入れる方法(クリックだけで可能)
  • SQLのような記述でデータのクエリが記載可能

まずは動画を確認して概要を確認

ざっくり使い方解説

www.youtube.com

公式の説明動画

www.youtube.com

基礎知識

用語

  • Database
    • その名の通りデータベース。
  • Table
    • データベース内のテーブル。SQLでいうところのテーブルと同義
  • Record
    • データ1つ1つのこと
  • Dimension
    • タグのようなイメージか(各データレコードにつけることができる)
    • レコード登録するときに好き勝手つけられるんだろうか?
  • Measures
    • 時系列のデータそのもの(数値、bool等)

サンプルデータの準備

  • サンプルデータが用意されているので、それを使ってみます

sample databaseを選んで作成

f:id:y-ni-shi:20201024143824p:plain

sample dataを選択する

IoTDevOps両方選びました
f:id:y-ni-shi:20201024143829p:plain

テーブルを見てみる

作られてます f:id:y-ni-shi:20201024144120p:plain

簡単なクエリを実行してみる

クエリエディタみたいなのが標準装備。
ここで好きにクエリを実行できるみたいですね
f:id:y-ni-shi:20201024144242p:plain

試しに以下のクエリを実行(sampledbは作ったDBの名前)

select count(*) as count from "sampledb".IoT

結果は

count
1600

適当にデータを取る

select * from "sampledb".IoT limit 5

結果 f:id:y-ni-shi:20201024144915p:plain

時系列なので、1分ごとの平均とかとってみる

select 
    bin(time, 1m) as binned_time,
    avg(measure_value::double) as avg
from "sampledb".IoT
group by bin(time, 1m)
order by binned_time desc
limit 5
binned_time
avg
2020-10-24 05:55:00.000000000   39.0
2020-10-24 05:54:00.000000000   110.0
2020-10-24 05:53:00.000000000   25.0
2020-10-24 05:52:00.000000000   159.5
2020-10-24 05:51:00.000000000   213.0

うーん・・あってるんだろうか。

検証

select 
    time,
    measure_value::double
from "sampledb".IoT
where time between '2020-10-24 05:53:00.000000000' and '2020-10-24 05:56:00.000000000'
order by time desc

この結果(53分〜56分くらいを出力してみた) f:id:y-ni-shi:20201024151724p:plain

05:55:00.000000000代のデータ

2020-10-24 05:55:00.000000000    39.0

計算された平均値は39.0
実際の生データ(平均取る前のデータ)

2020-10-24 05:55:26.124000000    42.0
2020-10-24 05:55:25.890000000   36.0

平均39.0と計算できます。あってそう

2020-10-24 05:54:00.000000000代のデータ

2020-10-24 05:54:00.000000000    110.0

54分代の平均は110.0 実際の生データ(平均取る前のデータ)

2020-10-24 05:54:58.994000000    322.0
2020-10-24 05:54:57.316000000   -
2020-10-24 05:54:48.847000000   1.0
2020-10-24 05:54:30.635000000   7.0
2020-10-24 05:54:16.049000000   -

デーが5件あって、2件はデータナシ(0ではない)ということで、データ3件の平均を求めると110になってぴったり

まとめ

  • AWS Timestreamは時系列データを扱えるマネージドなサービス
  • とりあえず触るだけならサンプルデータを作ってくれる機能がある
  • SQLとしてクエリを投入することが可能

感想

  • これは便利そう。何よりマネージドなサービスはやっぱいい