我想将地方信息存储在dynamodb中。信息是
id | place_name | district | state | country | latitude | longitude
我想用名字,地区,州和国家搜索一个地方。
应该创建哪些索引以便我可以有效地执行此操作?
我应该使用扫描还是查询操作?
我可以查询表格以找到经纬度附近的地方吗?
答案 0 :(得分:0)
这取决于您要查询的内容,以及您要使用的这些属性的组合。听起来更像是在为应用程序的这一部分寻找搜索解决方案而不是DynamoDB查询。
通常情况下,Query
优先于Scan
用于实时应用数据。来自Query and Scan Performance documentation:
扫描操作始终扫描整个表或二级索引,然后过滤掉值以提供所需的结果, 基本上添加了从结果中删除数据的额外步骤 组。避免在大表或索引上使用扫描操作 过滤器,如果可能,删除许多结果。另外,作为一个表或 索引增长,扫描操作减慢
另外,来自DynamoDB Guidelines for Query and Scan documentation:
DynamoDB旨在实现轻松的可扩展性。结果,一个应用程序 可以为不同的目的创建表,甚至可能重复 几个表中的内容。您想要在表上执行扫描 这不是采取“关键任务”流量。一些应用 通过在两个表之间每小时轮换一次流量来处理此负载 - 一个 用于关键流量,一个用于簿记。其他应用可以 通过在两个表上执行每次写操作来完成此操作:“任务关键” 表和“影子”表。
有一个名为geohash的纬度和经度地理编码系统,亚马逊为DynamoDB实现了支持它的Java库。您可以在this blog post上找到有关该库的一些详细信息。