2016-06-29 15 views
0

DynamoDBにネットワーク測定値を格納しようとしていますが、正しいパーティションキーと範囲キーが不明です。私のデータは次のようになります。DynameriesDBにtimeseriesデータを格納

{ 
count: 33, 
total: 45, 
timestamp: 21231133, 
data: { 
    key1: value1, 
    key2: value2, 
    key3: value3, 
    key4: value4, 
    key5: value5} 
} 

は私がtimestamp1とtimestamp2間のタイムスタンプを持つデータを取得できるようにする必要があります。私は毎秒データを保存し、より遅い間隔で(30秒ごとに)検索します。

ホットパーティションを避け、データをすばやくクエリできるようにする必要があります。私はテーブルスキャンをしたくありません。

おかげで、問題に言及したクエリパターンに基づいて

+0

このアプリケーションでは、DynamoDBの使用を廃止しました。これは、 "" N ":" 6 "}と{" NS " – Mark

答えて

0

は、私が「タイムスタンプ」属性は、パーティション・キーであるべきだと思います。属性を文字列、数値またはバイナリとして定義するときは、BETWEEN演算子を使用できます。

このテーブルのデータでは、他のクエリパターンやユースケースがない限り、RANGEキーとして使用できる属性は表示されません。

BETWEEN:最初の値以上で、2番目の値に等しい より小さい値。 AttributeValueListには、同じタイプの2つの AttributeValue要素(String、Number、または バイナリ(セットタイプではない))が含まれている必要があります。ターゲット属性は、ターゲット の値が最初の要素以上で、2番目の要素の 以下である場合に一致します。項目に、要求に含まれているタイプと異なるタイプのAttributeValue 要素が含まれている場合は、 の値が一致しません。たとえば、{"S": "6"}は {"N": "6"}とは比較されません。

+0

BETWEEN演算子を使用してパーティションキーを照会することはできません。あなたは完全一致を得ることしかできません。 BETWEENを使用する場合は、範囲キーを使用する必要があります。 https://stackoverflow.com/questions/12939131/query-a-range-of-primary-keys-in-dynamodbを参照してください。 – swbandit