Amazon Timestreamを使ってみた

本投稿は TECOTEC Advent Calendar 2022 の15日目の記事です。

こんにちは、証券フロンティア事業部の内田です。

世の中には様々なデータベースがありますね。
AWSのサービスでもRDS(RDB)だったり、DynamoDBやRedshiftなど様々なデータベースがありますが、 今回は2020年にリリースされたAmazon Timestreamという時系列データベースを使ってみました。

Amazon Timestreamとは

公式HPには下記のように記載されていました。

Amazon Timestream(完全マネージド型の時系列データベース)| AWS

Amazon Timestream は、高速かつスケーラブルなサーバーレス時系列データベースサービスです。 1 日あたり数兆件規模のイベントを最大 1,000 倍の速度でより簡単に保存および分析できます。 Amazon Timestream は、容量とパフォーマンスを調整するために自動的にスケールアップまたはスケールダウンするので、基盤インフラストラクチャの管理が不要です。

下記のような特徴があるようです。

  1. サーバーレス、オートスケール
  2. 時系列データがネイティブデータとして定義されている
  3. SQLライクにデータを取得できる
  4. 常に暗号化されている
  5. データにライフサイクルがある

2と5は他のDBにはあまり無い特徴だと思います。 もっと詳しく調べてみましょう。

時系列データがネイティブデータとして定義されている

Timestreamへ格納されるレコードにはタイムスタンプが必ず付与されます。
加えてメジャー名、メジャー値、ディメンションがレコードに含まれます。
メジャー名、メジャー値が実際のデータで例えば株価がメジャー名、実際の価格がメジャー値を格納します。
ディメンションはメジャー値を説明するものです。国内株、銘柄コードのようなイメージだと思われます。

データにライフサイクルがある

Timestreamではメモリストアとマグネティックストアの2段階でデータが格納されます。
新しいデータはメモリストアに、長期的に保存するデータはマグネティックストアに格納します。 また、各ストアには保持期間を設定して管理します。

各ストアに設定できる期間は下記となっていました。

ストア 最低 最大
メモリストア 1時間 12ヶ月
マグネティックストア 1日 200年

使ってみた

今回は株価を管理するテーブルを作って格納、取得してみました。

データベースの作成

testDBという名前で作成します。

テーブルの作成

stock_priceという名前でテーブル作成。
このタイミングでメモリストア、マグネティックストアの保持期間を設定します。

データのインサート

コンソールからインサートできないため、AWS SDKを使って4件ほどインサートしてみました。

ディメンジョン:country(jp)、stock_code(XXXX)
メジャー名:price
メジャー値:数値データ

データ取得

全件取得、高値の取得を行ってみました。

全件取得

高値の取得

感想

データを数件入れてみて、取得してみるという簡単なことしか行っていませんが、他のDBにはない仕組みだったりでおもしろかったです。 実際に使える場面が訪れるかはわかりませんが、勉強になりました。

参考

Amazon Timestream に シングルメジャーレコードで 100 件以上のセンサー値があるデータを書き込んでみる | DevelopersIO

Amazon Timestreamについていろいろ調べてみた - サーバーワークスエンジニアブログ

Amazon Web Servicesおよびかかる資料で使用されるその他の AWS 商標 は、米国および/またはその他の諸国における、Amazon.com, Inc. またはその関連会社の商標です。

www.tecotec.co.jp