【问题标题】:Is it possible to get items from DynamoDB where the primary key ends with a given string?是否可以从主键以给定字符串结尾的 DynamoDB 获取项目?
【发布时间】:2015-01-28 14:09:44
【问题描述】:

是否有可能使用 AWS Ruby 开发工具包(或通常仅使用 DynamoDB)从仅使用主键且主键以特定字符串结尾的表中获取一个或多个项目?

在 ruby​​ ddb 文档或 ddb 的一般文档中,我没有遇到任何明确回答此问题的文档。我不是说这个问题没有回答,但如果是,我找不到它。

如果可能,有人可以提供 ruby​​ 的示例或链接到存在示例的文档吗?

【问题讨论】:

  • 我不敢发布答案,因为我只是有一个理论,但是 - 由于 DDB 是关于性能的(因为存储几乎是免费的) - 取决于主键长度,它可能是有另一个 PK(在全局二级索引中)的值颠倒是可行的,所以你可以应用开头的东西。

标签: ruby amazon-web-services amazon-dynamodb aws-sdk


【解决方案1】:

虽然@Ryan 是正确的并且这可以通过query 完成,但请记住,您在这里进行的是“全表扫描”。这对于一次性工作来说可能没问题,但对于日常任务来说可能不是最佳实践(当然也不是作为 API 调用的一部分)。

如果您的用例涉及根据特定字段中的后缀快速查找对象,请考虑将此后缀(假设它是固定大小的后缀)提取为另一个字段并在该字段上设置二级索引。如果您想查询任意长度的后缀,我会创建一个查找表并使用可能的后缀(或其中一些,以保存一些调用,然后在查询时进行过滤)进行更新。

【讨论】:

    【解决方案2】:

    您似乎希望使用 SDK 上的 Query 方法来查找您要查找的项目。不过,似乎“EndsWith”在 SDK 中不能用作比较运算符。所以你需要使用 CONTAINS 然后在本地检查你的结果。

    这应该会带来最佳性能,让 DynamoDb 完成最初的繁重工作,然后在收到结果后进一步修剪结果。

    http://docs.aws.amazon.com/sdkforruby/api/Aws/DynamoDB/Client.html#query-instance_method

    【讨论】:

    • 这正是我正在寻找的。很遗憾只有一个“开始于”比较运算符,但就像你说的,我可以自己处理。
    • 您应该在回答中强调这将强制进行扫描并使用限制和最后评估的键破坏分页等内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多