Amazon Timestreamの保持期間はデータの登録可能範囲と一致しないという話

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

こんにちは。アプリケーションサービス部の兼安です。
Amazon Timestreamの保持期間の挙動を観察していたところ、気になる点があったのでブログにまとめてみました。

本記事の対象

この記事は、Amazon Timestreamの基本的な仕様を理解していて、さらに深くその仕様について理解したい方を対象としています。

Amazon Timestreamの保持期間とは

Amazon Timestreamの保持期間とは、データが登録されてから別の領域に移動される、または破棄されるまでの期間です。
Timestreamには、メモリストアとマグネティックストアの2つの領域があり、それぞれに異なる保持期間が設定されています。
メモリストアの保持期間を過ぎると、データはマグネティックストアに移動され、そこの保持期間を過ぎるとデータは破棄されます。
詳細については、以下の記事をご覧ください。

blog.serverworks.co.jp

保持期間は、Amazon Timestreamのテーブル作成時に設定され、テーブル作成後にも変更可能です。
特にマグネティックストアの保持期間を変更すると、既存のデータや新規データの登録に影響が出ます。
本記事では、特にマグネティックストアの保持期間を変更した後のデータ登録について検証します。

テーブル作成後に保持期間を短くした場合

メモリストアの保持期間を1時間、マグネティックストアの保持期間を2日に設定し、マグネティックストレージの書き込みを有効化した場合を例にします。
この設定では、2日前のタイムスタンプのデータまでが登録可能です。

本記事執筆時点は、2024年3月7日です。 下記の表はこの日付を基準にしています。

3/3 3/4 3/5 3/6 3/7
× × ⚪︎ ⚪︎ ⚪︎

この状態から、マグネティックストアの保持期間を1日に変更すると、2日前の3/5のデータが破棄され、そのタイムスタンプのデータは登録不可になります。

3/3 3/4 3/5 3/6 3/7
× × ×(既存は破棄) ⚪︎ ⚪︎

テーブル作成後に保持期間を長くした場合

次に、テーブル作成後に保持期間を長くした場合の挙動を検証します。
ここでまた別のテーブルを作成し、先ほどと同じデフォルトの保持期間を設定します。

3/3 3/4 3/5 3/6 3/7
× × ⚪︎ ⚪︎ ⚪︎

この状態で、マグネティックストアの保持期間を3日に延長します。
既存データの破棄は発生しませんでしたが、3日前のデータは登録できませんでした。
つまり、保持期間を延ばしても、すぐにデータの登録可能範囲が広がるわけではありません。

3/3 3/4 3/5 3/6 3/7
× × ⚪︎ ⚪︎ ⚪︎

24時間待った後、3/8になると3/5のデータが破棄されずに残りました。
これにより、保持期間が3日になっていることが確認できました。
また、「3/5の少し時刻をずらしたデータ」が登録できたことから、3日前のデータが登録可能になっていることがわかりました。

3/3 3/4 3/5 3/6 3/7 3/8
× × ⚪︎ ⚪︎ ⚪︎ ⚪︎

テーブル作成後に保持期間を短くした後、長くした場合

最後に、テーブル作成後に保持期間を短くした後、再度長くした場合の挙動を検証します。
ここでも新しいテーブルを作成し、デフォルトの保持期間を2日とし、それを1日に変更します。
すると、2日前のデータが破棄され、登録不可になります。

3/3 3/4 3/5 3/6 3/7
× × ×(既存は破棄) ⚪︎ ⚪︎

その後、保持期間を再び2日に戻しますが、2日前のデータは登録不可のままでした。
保持期間を一度短くすると、その後に再度長くしても、登録可能なデータの範囲はすぐには広がりません。  

3/3 3/4 3/5 3/6 3/7
× × × ⚪︎ ⚪︎

24時間後の3/8になると、2日前のデータが残っていました。
これにより、保持期間が2日になっていることが確認できました。
また、「3/6の少し時刻をずらしたデータ」が登録できたことから、2日前のデータが登録可能になっていることがわかりました。

3/3 3/4 3/5 3/6 3/7 3/8
× × × ⚪︎ ⚪︎ ⚪︎

保持期間を長くした場合、翌日に保持期間=データの登録可能範囲になるのか?

ここまでの検証結果から、保持期間を長くした場合、翌日になれば保持期間がデータの登録可能範囲に一致するかどうか疑問が残ります。
そこで、1日ではなく数日保持期間を延長して検証してみました。

結果として、伸ばした分の時間が経過すれば一致するような挙動が確認できました。
これは、公式サイトにある以下の記述と一致します。

docs.aws.amazon.com

When you increase the retention period of the memory store or the magnetic store, the change takes effect for data being sent to Timestream from that point onwards. Timestream does not retrieve data from the magnetic store to populate the memory store. For example, if the retention period of the memory store was initially set to 2 hours and then increased to 24 hours, it will take 22 hours for the memory store to contain 24 hours worth of data.

<和訳>

メモリーストアまたは磁気ストアの保持期間を増やすと、その時点からTimestreamに送信されるデータに対して変更が有効になります。
Timestreamは磁気ストアからデータを取得してメモリーストアに入力することはありません。
例えば、メモリー・ストアの保持期間を最初に2時間に設定し、その後24時間に増やした場合、メモリー・ストアに24時間分のデータが格納されるまで22時間かかります。

月単位で保持期間を延長した場合、数日では一致しませんでした。
上記の記述から、月単位で待てば一致する可能性があるものの、確認まではできませんでした。

まとめ

検証の結果、以下のことがわかりました。

  • 保持期間を短くすると、既存データが破棄され、登録可能なデータの範囲が狭まります。
  • 保持期間を長くすると、既存データは破棄されず、すぐには登録可能なデータの範囲は広がりません。
  • 保持期間を短くした後に再度長くしても、すぐには登録可能なデータの範囲は広がりません。
  • 時間が経過すると、保持期間とデータの登録可能範囲が一致するようになります。

保持期間を長くした場合、すぐに保持期間とデータの登録可能範囲が一致するわけではありません。
時間が経過するといずれは一致するようになりますが、このずれは意識する必要があります。

まとめると、保持期間はデータの登録可能範囲を示す設定ではないと言えます。
この説明が難しい挙動のため、個人的には保持期間を長くした場合は、テーブルを新たに作成する方がわかりやすいと思います。