2015-04-12 65 views
0

我想在dynamodb中存储地点信息。该信息是如何在amazon dynamo db中构造数据?

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

而我想要使用名称,地区,州和国家搜索一个地方。

  1. 哪些所有索引应该创建,以便我可以有效地做到这一点?

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

  3. 我可以通过查询表来查找经纬度附近的地方吗?

回答

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找到关于图书馆的一些细节。

相关问题