当前位置: 首页 > 知识库问答 >
问题:

迪纳摩DB 表设计:一个属性具有嵌套的 json 或多个属性

窦涵忍
2023-03-14

在阅读AWS DynamoDB留档时,我看到它不建议创建多个表。但是当我们将json格式化的数据放在DynamoDB表中时,应该是创建具有许多级别(例如10)的嵌套json内容的属性还是具有较少级别的多个属性?我想这是逐案处理的。但我想知道的是设计DynamoDB表时的一般规则。阅读AWS文档后,我仍然感到困惑,所以我在这里发布问题。谢谢!

共有1个答案

寿和通
2023-03-14

虽然没有任何标准规则,但我认为最好的方法是查看;

  • 动态数据库功能(键、索引
  • 限制
  • 定价模式

在设计表格之前。在您的例子中,拥有属性的权衡是:;

    < li >可以为高效查询建立索引(避免扫描的更好性能,IOPS的低利用率导致更低的成本)。 < li >仅投影所需的属性。 < li >但是限制了建模的灵活性。

另一方面,具有嵌套的JSON属性允许;

  • 更多属性和结构的灵活性。
  • 更多地从键值性质转向文档结构。
  • 但限制了深度嵌套属性的高效查询。
  • 在IOPS方面成本更高,因为即使要读取嵌套属性也需要检索整个嵌套属性(这也会增加成本)。

由于也可以将键、基元属性和嵌套属性放在一个表中,因此最好将它们组合使用,而不是坚持使用一个模型。

 类似资料:
  • 问题内容: 我有一个关于桌子设计的问题。我有一个应该认为可行的解决方案,但是没有。 考虑具有两个实体“ Subject”和“ Process”,它们都具有某些属性。每个“主题”可以与多个“进程”相关联。根据选择哪个“过程”,存在不同数量的实体“过程属性”。换句话说,当用户将“过程”与“主题”相关联时,他应该只能编辑专门链接到该“过程”的“属性”。 最终,我希望用户能够执行3件事: 创建新的“流程”

  • 问题内容: 我有一个属性设置器,它通过获取两个字符串并对其进行哈希处理来生成唯一的ID: 我有两个问题: 是否允许(考虑良好的python编码实践)以这种方式编码 如何将两个值传递给设置器? 问题答案: 如何将两个值传递给设置器? 您可以将iterable(元组,列表)传递给setter,例如: 演示:

  • 我试图写一个规范来使用jolt转换完成下面的转换。我需要将平面JSON转换成嵌套JSON。 输入数据与此问题几乎相同。 Link:将平面json转换为具有多个数组的嵌套Json,并使用Jolt transform在输出中保留空值 我在将平面 JSON 转换为嵌套 JSON 时遇到了一些问题。在这里,我想基于 stoptype 属性聚合数据。我使用 https://jolt-demo.appspot

  • 我正在尝试使用新的Amazon DynamoDB JSON API在称为“文档”的JSON属性中添加/覆盖键值对。理想情况下,我想简单地构建我的写入调用以发送KV对以添加到属性中,如果给定主键不存在该属性,则让Dynamo创建该属性。但是,如果我只使用简单的来尝试: 我得到了无效,这意味着DynamoDB无法找到要应用更新的名为“document”的给定属性。 我设法通过以下一系列调用来近似此功能

  • 我正在尝试从Lambda函数写入DynamoDB表。当我测试运行这个函数时,它返回null,没有错误消息,也没有任何东西写入表中。功能如下。我已经为这个功能设置了一个服务角色,它具有允许访问“产品”表的权限策略。我看到一些教程提到创建一个“AWS Lambda应用程序”,然后创建Lambda函数,但我不认为这对我的使用是必要的。 我还尝试过使用文档客户端 我得到的错误是:“发电机。文档客户端不是构

  • 问题内容: 我正在使用JSON将一些值从外部源获取到变量中。 我有一个这样的类型,将值放入: 解组后,我可以通过以下方式访问类型: 但是如果我尝试做类似的事情: 编译器抱怨没有这样的值。 所以我的问题是,我如何根据某些条件引用我知道会存在的Go属性? 做到这一点: 但这不是很灵活,因为我将收到不同的。 问题答案: 会尽力将数据放置在最适合您的类型的位置。从技术上讲,您的第一个示例将起作用,但是即使