构造DynamoDB表以在查询

时间:2017-04-17 11:13:52

标签: amazon-web-services amazon-dynamodb

我在DynamoDB表上有非常具体的访问模式,我正在尝试了解为我的用例构建表的最佳方法。我想了解在同一查询中进行多次相等性测试时应如何使用DynamoDB。

所需查询(具有以下所有约束的一个查询):

  • 几个相等测试:Place,Device,MeasurementType,SampleTimeResolution。
  • 范围(假设我只使用 starts_with ):特定日期的有序测量。所以Sort Key对我来说似乎微不足道:日期格式为YYYY-MM-DD HH-MM-SS。

我的问题是我应该如何选择分区键。到目前为止,我想出了三个选择:

  1. 分区键是我所有相等测试属性的串联。它看起来像这样:" xxxxxxxxx:yyyyyyyyy:wwwwwwwww:zzzz" (格式:位置:设备:MeasurementType:SampleTimeResolution)。此分区键将在表格中重复至少12次,最多70000次。

    • 优点:1)我确定我要查询的内容是在同一个分区中; 2)我知道数据将是统一分布的。
    • 缺点:它对我来说并不自然或可读,所以我不知道这是不是一个好习惯。
  2. 分区键是Device和MeasurementType的串联。它看起来像这样:" xxxxxxxxx:wwwwwwwww" (格式:设备:MeasurementType)。此分区键将在表格中重复约71000次。

    • 优点:我知道数据将是统一分布的。
    • 缺点:1)我不完全确定我想要查询的是在同一个分区中(但很可能是); 2)它对我来说并不自然或可读,所以我不知道这是不是一个好习惯。
  3. 分区键是设备。这是在数据集中具有最均匀分布的属性,我想通过相等性来查询它。每个分区键(设备)将在表格中重复至少88000次,最多重复800000次。

    • 优点:可读
    • 缺点:1)不知道我想要查询的内容是否属于同一个部分; 2)不确定查询是否与选项1一样快; 3)我不知道DynamoDB在查询多个属性(不是密钥的一部分)方面有多好。
  4. 我没有使用DynamoDB的经验,所以我非常感谢您的反馈!

0 个答案:

没有答案