问题标签 [amazon-dynamodb-index]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 在 DynamoDB 中查询主表与扫描二级索引
如果我有一个 DynamoDB 表,pk
并且sk
在哪里pk
可以查询给定的表pk
并获取给定类别中的所有项目,这与扫描仅包含来自所述类别的项目的稀疏二级索引有何不同?我知道 GSI 读/写单元与主表是分开的,但我想知道这样做是否会带来延迟或其他好处。
amazon-web-services - 用于过滤的扫描与查询的 DynamoDB 成本(使用 GSI 哪个分区键与整个表相同)用于过滤
我有一个看起来像这样的 DynamoDB 表:
[id]
是表的简单主键
[__typename]
是对表中所有项目具有相同值的属性
桌子变得很大。我希望能够按范围 datetime
过滤数据。我有 2 个可快速实施的选项,但我不确定这是否会在成本方面产生很大影响。
- 扫描整个表,然后按日期时间过滤(因为 dynamodb 不允许在扫描前过滤)
- 通过固定的 __typename 分区创建 GSI(partitionKey: __typename, sortKey: datetime)和 QUERY,并按日期时间排序键过滤,例如 10/8/10 和 10/11/10 之间。
所以,我的问题是,由于我的分区键对于每个项目都是相同的,因此是一个大分区,我不确定当使用过滤器查询时,它是否仍然会导致读取整个表(类似于 SCAN)或它是否知道根据过滤器有效地开始读取项目?
amazon-dynamodb - 如何在不指定 gsi 键的情况下创建 dynamo db 项目
我正在使用使用 gsi 的 dynamo db 表,因此我可以通过附加属性进行查询(如果存在)。此属性将在流程中更新,因此所有项目在流程开始时都没有此属性。此属性在添加到项目时设置为 gsi 的主键。
除了指定 gsi 的主键我无法插入新项目之外,一切都按预期工作。如果尚未设置其主键,我希望 gsi 忽略该项目。在指定投影属性时,我认为使用 INCLUDE 选项可以做到这一点。显然我在这里弄错了,但我也不知道如何解决这个问题。
非常感谢任何帮助,而且我将不得不坚持使用 dynamo db,所以包括这个 db 在内的每一个提示都会有很大帮助!
编辑: 为了澄清 - 这些是我的属性:
- id(主键:必填)
- 名称(属性)
- 年份(属性)
- gsi_id(GSI 主键:可选)
我想添加一个带有以下字段的项目:
- id(主键:必填)
- 名称(属性)
- 年份(属性)
然后添加 gsi_id 字段。
amazon-web-services - DateTime 作为 DynamoDB 中的字符串,它将如何将 DateTime 属性保持为范围键?
我是 DynamoDB 的新手,在我们的应用程序中,访问模式类似于,显示最近创建的所有订单。因此,我决定将 createdDateTime 属性保留为范围键,同时在 DynamoDB 中进行数据建模。我还看到很多帖子建议将 dateTime 保存为 ISO_8601 格式的字符串。排序将如何在 DynamoDB 中进行。在获取订单列表时,我想要最近的。
amazon-dynamodb - DynamoDB 交叉选择与分页
我有以下数据库模式,我想找到如何选择 PK_A 和 PK_B 常见的排序键列表的最佳方法:
所以当我通过 PK_A 和 PK_B 进行选择时,它应该只返回 SK_B 和 SK_C?
任何帮助表示赞赏。
amazon-dynamodb - 查询范围内的 DynamoDb 时间戳数据
我想将我的数据从 DynamoDb 迁移到 Redshift。我不想一次扫描整个表,因为这可能会导致限制。我的表如下:
acountId(哈希键),lastUpdatedTime。
我想我可以在 lastUpdatedTime 上创建 GSI,然后我可以查询,比如给我 day1 到 day5 之间的数据。第二天,我可以在第 6 天到第 7 天之间给我数据。但即使使用 GSI,我的理解是它会扫描整个表,因为我不会提供任何哈希键。我只是有一些时间戳要查询。
aws-lambda - 有条件地将 Item 放入 DynamoDB
在我的 Lambda 函数中,我只想有条件地将项目放入我的 DynamoDB 中,前提是该值已经不存在。我看到了多个不同的来源,他们使用了这个 ConditionExpression,我不知道这有什么问题。
即使我的二级索引值 (urlPath) 已经存在,put 也将始终成功。
完整代码:
amazon-dynamodb - 使用 AND 和 WHERE like 语句查询 DynamoDB 表属性
我在 DynamoDB 中有一个包含大约 30 个属性的平面表。我想为我的最终用户/应用程序公开一个 API,以查询这些属性的随机组合。
这在典型的 RDBMS 中是微不足道的。
我们如何在 DynamoDB 中做到这一点?我们可以使用什么样的建模技术和/或关键条件表达式来实现这一点。
amazon-dynamodb - 如何在 DynamoDB 中找到按日期属性排序的实体
给定一个由 id 标识的实体(即用户、设备等),该实体用作表的哈希键,以及一个附加的日期属性(即上次修改、上次登录等)。我希望能够在该表中找到最老的条目。
一个典型的查询是“为我查找修改日期最早的设备”或“为我查找最近登录的用户”。
我无法为这个用例设计一个好的设计——无论是辅助表还是 GSI。