【问题标题】:Query dynamoDB with IN operator on Partition Key使用分区键上的 IN 运算符查询 dynamoDB
【发布时间】:2019-11-26 22:41:22
【问题描述】:

我有一个名为 products 的表。它的架构是

  1. CustomerNumber(字符串类型的哈希键)
  2. ProductID(字符串类型的范围键)

我想查询类似

SELECT * FROM products WHERE CustomerNumber IN ("cust123","cust234"). 

如何实现?

很少观察 -

  1. DynamoDBQueryExpression 将只在索引/hashKey 上查询,而不是在上面示例中的 hashKey 列表上查询。

  2. DynamoDBQueryExpression 也不支持 IN , OR 运算符。

  3. BatchLoad 也只使用主键(在我的例子中是 customerNumber 和 productID)record 以返回一批记录。

  4. 另外,我不想扫描表格并对其应用过滤器。

  5. 还在 customerNumber 上创建 GSI,然后查询它不起作用

【问题讨论】:

    标签: amazon-dynamodb dynamodb-queries


    【解决方案1】:

    您可以针对IN 条件的每个值执行一个与select * where partitionkey= ... 等效的单独查询,而不是select * where partitionkey IN ...。它会花费您在网络上的一些额外往返行程,但仅此而已;如果您担心速度,您可以并行执行各个查询。

    【讨论】:

    • 是的,谢谢你回答了这个问题。但是你建议如何并行运行查询,现在我在 java 中使用并行流。
    • 并行流是一种方法。很难推荐最佳方法,因为涉及的因素太多(例如内存、cpu 内核、系统上的其他负载)。您应该完成应用程序的构建,然后进行一些性能测试/实验,看看什么是最适合您的选择。哦,请记住,在确保正确性之前不要进行优化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2015-01-30
    • 2021-07-25
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多