amazon-dynamodb - 查询 dynamoDB 以获取 X 和 Y 之间的值
问题描述
我有一个 DynamoDB 表,如附图中所示,我正在寻找基于 lon 和 lat 字段查询表的方法。更具体地说,我正在寻找 X 和 Y 之间的 Lon 和 A 和 B 之间的 Lat 的所有结果。
有什么办法吗?我为 Lon 和 Lat 创建了索引,但值是字符串。
非常感谢你的帮助 !!
解决方案
你可以想出一个好的散列函数(让我们说 f)并为 dynamodb 提供以下架构
| pk | sk | lat | lon | name
| hashvalue1 | 48.80#2.35#Fac | 48.80 | 2.35 | Fac du
| hashvalue1 | 48.83#2.36#Groupe| 48.83 | 2.36 | Groupe Hos
here f(48.80, 2.35) = hashvalue1
f(48.83, 2.36) = hashvalue1
每当您必须查询 lat1 和 lon1 时,计算 f(lat1, lon1) 并查询 db。但是这个解决方案的问题在于提出了一个好的散列函数,因为在最坏的情况下,您可能必须重新计算 db 中每个输入值的散列,否则它可能会成为热键。这种方法在这里和这里都有很好的记录。
我建议使用弹性搜索,它会给你更多的灵活性。就未来的用例而言。
推荐阅读
- c++ - 如何以非常精细的分辨率测量持续时间?
- unit-testing - 如何让詹金斯在多个核心上构建?
- .net - 如何将来自 QueryHelpers.AddQueryString() 的字符串 url 用于 dot net core 2.1 中的 Api 控制器中的 HttpPost Api
- java - Maven 导入在 IntelliJ 中创建重复类
- python - Pandas 有条件地创建数据框列:基于多个条件
- python - 如何为 Python 3.7 安装 PyVimeo?
- javascript - 我想在我的 React 应用程序中添加一个文本框,我该怎么做?
- javascript - 从 JSON 数组中删除重复对象
- firebase - FirebaseError:无效的流令牌
- c# - 在构造函数中创建新实例时模拟 HttpClient