如何在amazon dynamo db中构建数据?

时间:2015-04-12 15:12:19

标签: amazon-web-services amazon-dynamodb

我想将地方信息存储在dynamodb中。信息是

id | place_name | district | state | country | latitude | longitude

我想用名字,地区,州和国家搜索一个地方。

  1. 应该创建哪些索引以便我可以有效地执行此操作?

  2. 我应该使用扫描还是查询操作?

  3. 我可以查询表格以找到经纬度附近的地方吗?

1 个答案:

答案 0 :(得分:0)

  1. 这取决于您要查询的内容,以及您要使用的这些属性的组合。听起来更像是在为应用程序的这一部分寻找搜索解决方案而不是DynamoDB查询。

  2. 通常情况下,Query优先于Scan用于实时应用数据。来自Query and Scan Performance documentation

      

    扫描操作始终扫描整个表或二级索引,然后过滤掉值以提供所需的结果,   基本上添加了从结果中删除数据的额外步骤   组。避免在大表或索引上使用扫描操作   过滤器,如果可能,删除许多结果。另外,作为一个表或   索引增长,扫描操作减慢

    另外,来自DynamoDB Guidelines for Query and Scan documentation

      

    DynamoDB旨在实现轻松的可扩展性。结果,一个应用程序   可以为不同的目的创建表,甚至可能重复   几个表中的内容。您想要在表上执行扫描   这不是采取“关键任务”流量。一些应用   通过在两个表之间每小时轮换一次流量来处理此负载 - 一个   用于关键流量,一个用于簿记。其他应用可以   通过在两个表上执行每次写操作来完成此操作:“任务关键”   表和“影子”表。

  3. 有一个名为geohash的纬度和经度地理编码系统,亚马逊为DynamoDB实现了支持它的Java库。您可以在this blog post上找到有关该库的一些详细信息。