使用DynamoDB,没有简单的方法可以对列执行索引范围查询。主键、本地二级索引和全局二级索引都需要分区键来进行范围查询。
例如,假设我有一个带有数字分数属性的高分表。使用索引范围查询无法获得前10名或前25至50名
那么,执行这项极其常见的任务的惯用方式或首选方式是什么呢?
>
接受表格扫描。
使用静态分区键并利用分区查询。
使用固定数量的静态分区键并使用多个分区查询。
DDB不适用于分析。正如莫里斯所说,你可以通过二级索引来满足你的需要,但也有其他选择需要考虑:
>
如果您持续/频繁地向您的客户提供这个前N个,并且N是固定的,那么您可以拥有保存此信息的专用项目,并且您可以在将项目写入表时更新该/那些项目。您可以为整个前N个添加1个项目,或者您可以应用一些按钮策略。
如果您的系统不经常需要此信息(在某些特殊情况下),那么扫描也可以。
如果这是为了分析/研究,请考虑将表导出到S3并使用Athena。
它可以是2)或3),但这取决于数据的数量和结构以及读/写活动。
这里没有通用答案,因为它是特定于用例的。
只要您能侥幸逃脱,您可能希望使用2),因为它只需要一个Query
API调用。如果您有大量数据或繁重的读/写活动,您会使用一些巴金策略(非常接近您的第三个选项)写入多个分区,然后执行多个查询并聚合结果。
问题内容: 我有一个大约有450万行的Postgres表。列基本上只是 当查询该表,你有一个长整型,并希望找到对应的范围内的数据,并包括该值。索引此表以进行快速查找的最佳方法是什么? 问题答案: 一个 多列索引 具有反向排序顺序: 这样,可以将索引向前扫描到足够高的位置,然后对所有行进行扫描直到太低为止- 一次扫描。这就是为什么要对索引执行排序顺序的主要原因:将不同的排序顺序组合在具有不同顺序的多
我有一个大约为100GB的cosmos数据库。我成功地创建了一个漂亮的分区键,我在70M记录上有大约4600个分区,但是我仍然需要查询两个存储为字符串的日期时间字段,而不是纪元格式。 示例json: 我注意到当我做中选择*以及当我做
我有这样的要求: http://localhost:4000/services/querywithdsl?min=30 我的域实体仅包含id: 和我的Rest控制器与谓词 存储库: 我想用querydsl构建查询,就像这个使用绑定的查询 我找到的所有示例都是将查询参数直接映射到实体列,但在这个示例中,我的实体中只有一个id,我想对传入的参数值进行范围检查,这些参数值的名称与实体列的名称不同。 然而
假设我有一个DynamoDB表: UserId是主键(hash),我需要将BookName设置为排序键(range),因为添加到数据库中的另一项用相同的UserId覆盖了前面的项。
我正在寻找优化Dynamodb操作,即删除扫描和使用查询快速获取数据。 表数据: 我必须使用项目名称进行项目搜索。现在,我们扫描整张桌子。 然后,如果itemOwners包含搜索用户的用户ID,我们将过滤items结果。 我想知道是否有更好的方法使用dynamodb进行搜索查询?
我在使用AWS Boto3使用推荐的KeyConditionExpression同时使用哈希键和范围键查询DynamoDB时遇到问题。我附上了一个查询示例: 当我对具有以下方案的表运行此操作时: 我发现以下错误,我无法理解原因: 根据我的理解,类型M是映射或字典类型,我使用的类型N是数字类型,与我的范围键表方案相匹配。如果有人能解释为什么会发生这个错误,或者我也愿意用不同的方式完成相同的查询,即使