本投稿は 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 は、容量とパフォーマンスを調整するために自動的にスケールアップまたはスケールダウンするので、基盤インフラストラクチャの管理が不要です。
下記のような特徴があるようです。
- サーバーレス、オートスケール
- 時系列データがネイティブデータとして定義されている
- SQLライクにデータを取得できる
- 常に暗号化されている
- データにライフサイクルがある
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. またはその関連会社の商標です。