Upgrade to Pro — share decks privately, control downloads, hide ads and more …

秋の夜長にAmazon Timestreamとゆっくりと 向き合ってみた

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

秋の夜長にAmazon Timestreamとゆっくりと 向き合ってみた

Avatar for Satoshi Kaneyasu

Satoshi Kaneyasu

October 24, 2023

More Decks by Satoshi Kaneyasu

Other Decks in Programming

Transcript

  1. 10 Amazon Timestreamの基本⽤語 • ディメンション • データのメタデータ/特徴 • ディメンション+timeで⼀意となる •

    メジャー • 測定値、キーバリュー形式 • キーに対するバリューが⼀つの単体メジャー、複数のマルチメジャーがある ディメンション メジャー(キー) メジャー(バリュー)
  2. 13 メモリストアとマグネティックストアは役割が違う メモリストア マグネティックストア ⼀定期間後に移動 ⼀定期間後に破棄 多数の送信元から発⽣する ⼤量のデータ送信 • ⾼スループットのデータ書き込み

    • ⾼速なポイントインタイムクエリ⽤に最適化 • 低スループットの後発データ書き込み • ⻑期データ保存 • ⾼速分析クエリ 単純にメモリストアの⽅が速いキャッシュのような仕組み とは⾔い切れない
  3. 17 保持期間の設定をどう考えるか︖ メモリストア マグネティックストア ⼀定期間後に移動 ⼀定期間後に破棄 多数の送信元から発⽣する ⼤量のデータ送信 • ⾼スループットのデータ書き込み

    • ⾼速なポイントインタイムクエリ⽤に最適化 • 低スループットの後発データ書き込み • ⻑期データ保存 • ⾼速分析クエリ 遅れて到着するデータがどれぐらいか︖などを考慮し、 ここをどれぐらいの時間幅で担保したいか︖で考える (後から変更は可能)
  4. 25 マルチメジャーの制限 1⾏内で、256個を超える列を使⽤して登録すると登録エラーになる ⾃動カットにはならない 可変列 複数レコードで棲み分けても、 可変の列がテーブル全体で合計1024個を超えると登録エラー これも⾃動カットにはならない hostname az

    region measure_name time 1- 256列⽬ 256- 512列⽬ 512- 768列⽬ 768- 1025列⽬ host-1 az-1 region status time 使⽤ host-2 az-1 region alert time 使⽤ host-3 az-1 region environment time 使⽤ host-4 az-1 region sensor time 使⽤ 4⾏⽬を登録しようと するとエラー
  5. 34 パーティションキーの効果を測ってみる パーティションキーあり パーティションキーなし SELECT count(1) FROM "kaneyasu-timestream-multi"."parition_table” WHERE region

    = 'ap-northeast-1' SELECT count(1) FROM "kaneyasu-timestream-multi".”no_parition_table” WHERE region = 'ap-northeast-1' 0.1520 秒 〜 0.1860 秒 0.1840 秒 〜 0.3770 秒
  6. 37 Amzon Timestreamの関数を利⽤したSQL SELECT fleet, truck_id, fuel_capacity, model, load_capacity, make,

    measure_name, BIN(time, 1h) AS binned_timestamp, ROUND(AVG(load), 2) AS avg_1hour_load, ROUND(AVG("fuel-reading"), 2) AS "avg_1hour_fuel-reading", ROUND(AVG(speed), 2) AS avg_1hour_speed FROM "kaneyasu-timestream-multi"."IoTMulti" WHERE time BETWEEN ago(2h) AND ago(1h) GROUP BY fleet, truck_id, fuel_capacity, model, load_capacity, make, measure_name, BIN(time, 1h) ORDER BY binned_timestamp ASC ⼀時間ごとに各列の平均値を求めるSQL
  7. 43 まとめ • Amazon Timestreamは⼤量の書込みに耐えれて、SQLも使⽤可能 • メモリストアとマグネティックストアは⽤途が違う • マルチメジャーの制約はわかりにくいので注意 •

    パーティションキーは1つだけ︖指定できる • スケジュールクエリは便利だがこだわり過ぎないように 今回の内容が皆様の設計作業の役に⽴てば幸いです。