2017-08-08 6 views
1

1000年代のセンサーハブからテレメトリデータストリーミングを保存するためのDynamoDBテーブル設計に関するアドバイスを探しています。 (UNIX時間)不変の時系列テレメトリ/センサデータを格納するためのテーブルデザイン?

station_id(UUID)

sensor_type(文字列)

sensor_data(JSON)

タイムスタンプ:センサーハブは、以下を含む、日ごと15,000までのメッセージを送ります

私は、時系列データを保存するためのベストプラクティスを検討し、毎月新しい「ホットデータ」テーブルが作成されるテーブル分割戦略を採用します(古い「冷却器」テーブルに合わせてRCUとWCUを調整します) 。私にstation_id =メッセージを与える:データへのクエリの大半がなるなどどのような私は、適切なハッシュキーとソートキーを選ぶだけでなく、インデックスを設定されてわからないんだけど、

"foo"とsensor_type = "bar"で、タイムスタンプはxとyの間です。

私は、ハッシュキーとしてstation_idを使用し、ソートキーとしてタイムスタンプを使用すると仮定していますが、特定のsensor_typeのメッセージをフィルタに頼ることなくどのようにクエリを実行しますか? station_idとsensor_typeをハッシュキーとして組み合わせるのが最善でしょうか?あなたは、私は次の表を作成しないでしょう提供してきましたクエリの例から判断

+0

この15000は24時間にわたって均等に分配されていますか? – mayu

+0

@mayuはい、正しい。 –

答えて

2

stationId_sensorType(文字列、パーティションキー) - ステーションID用とセンサータイプのための連結された値が含まれている組み合わせ属性

タイムスタンプ(数値、範囲キー) - タイムスタンプでソートするか、タイムスタンプが範囲内にあるレコードだけを見つけるために使用できるUNIXタイムスタンプ。

これにより、(stationId、sensorType)のペアのすべての値を取得できます。

また、あなたのアイテムで別のフィールドとしてstationIdsensorTypeを保存することができますし、stationIdのすべての値を取得し、同様にあなたは、他のクエリをサポートするために、それらにGSIを作成することができます。

+0

ありがとう@アイバン。私は先に行ってあなたの提案を実装し、それは仕事をするように見えます。 –

関連する問題