如果您的访问模式包含许多 WHERE 条件,如何在 dynamodb 中对数据进行建模

2023-12-30

我有点困惑这在 DynamoDB 中是否可行。

我将给出一个 SQL 示例并解释如何优化查询,然后我将尝试解释为什么我对如何建模以及如何访问 DynamoDB 中的相同数据感到困惑。

这不是公司代码。这只是我基于 pcpartpicker 过滤器编写的一个例子。

SELECT * FROM BUILDS
WHERE CPU='Intel' AND 'OVERCLOCKED'='true'
AND Price < 3000
AND GPU='GeForce RTX 3060'
AND ...

根据我的理解,SQL将首先对BUILDS表进行扫描,然后过滤掉CPU使用intel的所有构建。然后,它从这个子集中执行另一个 WHERE 子句来过滤 'OVERCLOCEKD' = true 等等。基本上,所有附加 WHERE 子句都有较少数量的要过滤的行。

为了加速这个查询,我们可以做的一件事是在这些列上创建索引。性能的主要提高是减少了数据库查看的第一个子句对整个表的初始扫描。因此,在上面的示例中,无需扫描整个数据库来查找使用 intel 的构建,而是可以快速检索它们,因为它已建立索引。

您将如何在 DynamoDB 中对这些数据进行建模?我知道您可以创建一堆二级索引,但不要让引擎执行 WHERE 子句并传递结果以进行下一组过滤。看来这一切都必须你自己做。例如,我们需要使用二级索引来查找所有使用 intel、超频、小于 3000 以及使用特定 GPU 的构建,然后我们需要自己找到交集。有没有更好的方法来制定这种访问模式?我很难弄清楚这是否可能。

编辑: 我知道我也可以只使用普通的过滤器,但看起来这会非常昂贵,因为它基本上是通过表进行强力搜索,类似于没有索引的 SQL 解决方案。

要了解我在 pcpartpicker 中的意思,请点击该页面的网站链接:https://pcpartpicker.com/builds/ https://pcpartpicker.com/builds/

人们基本上会选择多个过滤器,因此这使得访问模式的设计变得更加困难。


我强烈建议您浏览 YouTube 上的各种 AWS 演示...

In particular here's a link to chapter of the AWS re:Invent 2018: Building with AWS Databases: Match Your Workload to the Right Database (DAT301) presentation. enter image description here

DynamoDB 提供 IE - 无限规模和效率。

但您需要 P - 模式灵活性。

您需要决定是否需要 PI 还是 PE。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果您的访问模式包含许多 WHERE 条件,如何在 dynamodb 中对数据进行建模 的相关文章

  • AWS S3 中有乐观锁吗?

    我在 s3 中有一个 excel 文件 由于不同的程序读取和写入它 我需要保证每个程序都写入它们读取的版本 S3仅保证新创建对象的读后一致性 以及覆盖和删除对象的最终一致性 如果您的 Excel 文件足够小 小于 400kb 您可以将其存储
  • 如何批量获取DynamoDB中的索引表?

    如何在DynamoDB中批量获取全局二级索引 这些参数给了我一个架构错误 因为这个哈希键仅在索引表中 主键有其他 const params RequestItems MyTableName Keys ThisHashKeyIsOnlyInI
  • java.lang.String 类型中没有由 @DynamoDBHashKey 注释的方法或字段

    我不知道为什么不运行这个项目 Data DynamoDBTable tableName tableName public class entityName implements Serializable private static fin
  • 如果密钥不存在,如何插入到 DynamoDb

    我想将 id 一些值添加到 DynamoDb 一次 如果 id 已经存在 则不执行任何操作或更新 我可以和 search if not found gt insert if found gt do nothing or update for
  • 玩!框架+DynamoDB

    作为 Play 框架的新手 我想知道它是否比我想象的更容易 但是是否可以将 DynamoDB 与 Play 框架一起使用 由于 DynamoDB 是一个 NoSQL 数据库 我预计您需要使用特定的模块 而由于 Dynamo 最近才发布 因此
  • Objective-C 中带有扫描过滤器的 dynamodb scanexpression

    AWSDynamoDBObjectMapper dynamoDBObjectMapper AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper AWSDynamoDBScanExpressi
  • 在 dynamodb 中搜索文本,分解表格

    目前 我正在考虑如何使用 AWS DynamoDB 在文本字符串中搜索关键字 例如 在字符串 I m a very happy man 中搜索 happy 并返回该文本 有办法查询这个吗 我所知道的是 查询允许 开始 或 之间 这在这种情况
  • DynamoDB Stream 的计划读取

    我正在寻找一种按计划时间间隔从 DynamoDB 批量读取更新的方法 例如 每隔 10 分钟 我希望能够读取自上次读取以来 DynamoDB 表发生的所有更新 我了解 DynamoDB Streams 可以设置为触发 Lambda 函数 L
  • AmazonDB 免费套餐的含义是什么?

    在我的 Android 应用程序中 我使用 Amazon DynamoDB 我创建了 10 个表 读取容量为 10 写入容量为 5 今天我收到了一封来自 Amazon 的电子邮件 我花了 11 36 美元 我不明白免费套餐的含义 这是我从亚
  • 获取 emr-ddb-hadoop.jar 将 DynamoDB 与 EMR Spark 连接

    我有一个 DynamoDB 表 需要将其连接到 EMR Spark SQL 才能对该表运行查询 我获得了带有发行标签 emr 4 6 0 和 Spark 1 6 1 的 EMR Spark Cluster 我指的是文档 使用 Spark 分
  • DynamoDB 如何查询重叠的时间范围

    考虑一个由主键和两个描述开始日期和结束日期的属性组成的 DynamoDB 表 如何在不扫描全表的情况下查询某个时间范围是否与表中的时间范围重叠 例子 dynamo表有两条记录 PK Start End A 2019 01 01 2019 1
  • 在全局二级索引上使用“withExclusiveStartKey”进行分页

    我有一个名为 product 的 DynamoDB 表 其全局二级索引位于 userId 上 主键位于 id 上 我正在尝试使用 userID GSI 上的 withExclusiveStartKey 来实现分页查询 但是 当我传递有效的
  • 更新项目时,NUMBER_VALUE 无法转换为字符串

    我在 DynamoDB 上遇到了这个奇怪的问题 我似乎无法更新项目 这是我的命令 TableName UserTable Key UID S h4XJj3YRxZiF7TDcGkxAhc UpdateExpression SET numRa
  • AWS SDK 2 承担角色

    Bean public DynamoDbClient amazonDynamoDB final AssumeRoleRequest assumeRoleRequest AssumeRoleRequest builder roleSessio
  • AWS 基于字段值 Amplify GraphQL 授权

    我有一个 AWS Amplify 项目 该项目在 Cognito 中具有三个不同的用户组 管理员 教师和学生组 我还有一个如下所示的 GraphQL 架构 type DriveTime model id ID start AWSDateTi
  • 非键属性查询

    看起来 dynamodb 的query方法必须包含分区键作为过滤器的一部分 如果不知道分区键如何进行查询 例如 您有一个具有属性的用户表userid设置为分区键 现在我们想通过电话号码查找用户 是否可以在没有分区键的情况下执行查询 使用sc
  • 如何在 DynamoDB 中即时获取表的行数?

    我在用着boto dynamodb2 看来我可以使用Table query count 但是 当未应用查询过滤器时 它引发了异常 我可以做什么来解决这个问题 顺便说一句 过滤器的文档在哪里boto dynamodb2 table Table
  • 是否可以使用 AWS AppSync 构建离线优先的移动应用程序?

    我想使用 AWS AppSync 进行移动开发 Android iOS 但我不确定其离线功能 根据文档 数据将在离线时访问 并在客户端再次上线时自动同步 但我找不到任何有关应用程序客户端在使用 AppSync 创建和修改离线数据之前是否需要
  • 迭代 dynamodb 表时出现 ProvisionedThroughputExceededException 错误

    我正在尝试将 DynamoDB 表备份到 S3 因为出于某种原因通过 AWS 控制台上的 Export 进行此操作不起作用 https stackoverflow com questions 28906981 automatic aws d
  • 如何使用 C# 在 Amazon Dynamo DB 中为 Json 属性(列值)创建全局二级索引?

    我有一个包含 Id 列和 JSON 列的表 Id JSON 101 person id 456 f name t l name Jack 102 person id 123 f name M l name Ron 103 person id

随机推荐