Amazon Timestreamのメモリストアとマグネティックストアの挙動について

記事タイトルとURLをコピーする

こんにちは。アプリケーションサービス部の兼安です。
今回は、時系列データ専用のデータベース、Amazon Timestreamのお話です。
Amazon Timestreamは、メモリストアとマグネティックストアという特徴的なデータ領域があります。
これらについて、どのような挙動をするのかを書きたいと思います。

時系列データとAmazon Timestreamとは

時系列データとは

時系列データベースとは、グラフで言うと横軸が時間のデータを扱うデータベースです。
このブログをご覧の方に身近なものとしては、CloudWatchのメトリクスがあります。
横軸に時間があり、縦軸にCPU使用率があるようなデータが時系列データにあたります。

Amazon Timestreamとは

この時系列データを扱うのに特化したデータベースがAmazon Timestreamです。
時系列データを扱うこと自体は、一般的なRDBMSでも可能です。
しかし、IoTデバイスからのデータやセンサーデータなどの大量のデータを扱うとなると、それに耐えうる環境をRDBMSで構築するのはかなりの労力がかかるでしょう。
Amazon Timestreamは、時系列データを扱うことに特化しているので、そのような労力をかけることなく、大量の時系列データを扱うことができるのが特徴です。

aws.amazon.com

Amazon Timestreamのデータ領域

では、実際にAmazon Timestreamを使って、本記事のテーマであるメモリストアとマグネティックストアの挙動を確認していきます。
Amazon Timestreamも、RDBMSと同様にデータベースとテーブルを作ります。

データベースの作成

マネジメントコンソールで作成します。
名前と暗号化の設定を入力します。

Amazon Timestremのデータベースを作成

この時、設定で「サンプルデータベース」を選択すると、サンプルデータの入ったテーブルまで作ってくれます。

テーブルの作成

データベースを作成したら、テーブルを作成します。
テーブルの作成画面には、「データ保持」と「マグネティックストレージの書き込み」という項目があります。
これらが、メモリストアとマグネティックストアを司る設定です。

Amazon Timestremのテーブルを作成

テーブルの設定を下にスクロールすると、データ保持の設定があります

なお、Amazon Timestreamのテーブルはスキーマレスなので、テーブル作成時にカラムを定義する必要はありません。
レコードの挿入時に、レコードを特定するための列=ディメンションと、レコードの値=メジャーを指定すれば、自動的にカラムが作成されます。

メモリストアとマグネティックストアは役割が違う

メモリストアとマグネティックストアの特徴は以下の通りです。

  • メモリストア
    • 高スループットのデータ書き込み
    • 高速なポイントインタイムクエリ用に最適化
  • マグネティックストア
    • 低スループットの後発データ書き込み
    • 長期データ保存
    • 高速分析クエリ

docs.aws.amazon.com

メモリストアとマグネティックストアは役割が違う

データがAmazon Timestreamに送られてくると、まずメモリストアが受け止めそれを書き込み、一定時間後にマグネティックストアに移動します。
メモリストアは、新しいデータを扱う領域で、マグネティックストアは、履歴データを扱う領域と言えます。

メモリとマグネティックと聞くと、EBSなどの知識に引っ張られると、マグネティックの方が遅いように思えますが、単独クライアントからの数万件の読み取り・書き込みぐらいでは、両者の速度に違いは感じませんでした。
メモリストアとマグネティックストアは単純な速度云々ではなく、役割が違うということを理解しておく必要があります。

メモリストアとマグネティックストアの挙動

例としてテーブルの設定を以下のようにします。

  • メモリストの保持期間を1時間
  • マグネティックストアの保持期間を1日
  • マグネティックストレージの書き込みを無効

挙動を確認するためのテーブルの設定

現在時刻がAM07:00だとすると、以下の挙動になります。

  • タイムスタンプがAM06:00から07:00のデータは、メモリストアに書き込まれる
  • メモリストアに書き込まれたデータは、1時間後にマグネティックストアに移動
  • 1日後にマグネティックストアから削除
  • タイムスタンプがAM05:59以前のデータは書き込み不可

メモリストアとマグネティックストアの挙動

AM05:59以前のデータが書き込めないのは、メモリストアのデータ保持期間が1時間であるため、それより前のデータは新しいデータとみなされないからです。
ここで、マグネティックストレージの書き込みを有効にすると、AM05:59以前のデータが書き込みが可能になります。

マグネティックストレージの書き込みを有効にする

マグネティックストレージの書き込みを有効にすると、AM05:59以前のデータが書き込みが可能になります。

この挙動は、AM05:59以前のデータが新しいデータとみなされないのはそのままですが、マグネティックストレージの書き込みを有効にしたことにより、マグネティックストレージ=履歴データを扱う領域への直接書き込みがOKになるからです。

まとめ

以上、Amazon Timestreamのメモリストアとマグネティックストアの挙動についてでした。
ちょっとわかりにくい挙動なので、本記事がAmazon Timestreamの理解に役立てば幸いです。

[補足]検証用のソースコード

メモリストアとマグネティックストアの挙動を確認するために、以下のようなソースコードを書きました。
このコードの二時間前のタイムスタンプを取得とコメントしている部分を調整しながら、この時刻なら登録できる、この時刻ならできないを確認しています。