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

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

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

Satoshi Kaneyasu

October 24, 2023
Tweet

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つだけ︖指定できる • スケジュールクエリは便利だがこだわり過ぎないように 今回の内容が皆様の設計作業の役に⽴てば幸いです。