gpt4 book ai didi

database - 发电机 : How to store a list of items

转载 作者:太空狗 更新时间:2023-10-30 01:43:24 25 4
gpt4 key购买 nike

我想存储属于某个父对象的项目列表。

父对象如下所示:

user_id - hash key
timestamp - range key
attributeA - String
attributeB - Number
listC - List of objects

listC 是一个对象列表(如 JSON),其中每个对象可以有几个字段:

attrX - number
attrY - string
attrZ - string

列表的大小可以变化,从几个元素到 hundreads。

我应该如何存储它们?

由于 DynamoDB 的限制,我恐怕无法将此列表作为父对象的属性。我想将这些列表移到另一个表中。但是,我不确定我是否应该:

  1. 将每个列表的项目作为单独的记录,
  2. 将列表的项目拆分为许多单独的记录,其中每个数据库记录只有很少的项目。

方法(一):

-------------------------------------
| parent_id | attrX | attrY | attrZ |
-------------------------------------
| 178 | 2 | "abc" | "xyz" |
-------------------------------------
| 178 | 2.4 | "klm" | "qwe" |
-------------------------------------

方法(2):

------------------------------------------------------------------------  
| parent_id | Chunk | ListC |
------------------------------------------------------------------------
| 178 | 1 | [{ X: "2", Y: "abc" }, { X: "2.4", Y: "klm" } ] |
-------------------------------------------------------------------------
| 178 | 2 | [{ X: "2.8", Y: "nop" }, { X: "3.2", Y: "qrs" } ] |
------------------------------------------------------------------------

你会推荐我什么?

最佳答案

实际上,该方法取决于查询访问模式 (QAP)

方法一:-

  1. 类似于 RDBMS 设计的典型规范化方法。然而,我们需要从 NoSQL 的角度来考虑这个问题。 DynamoDB 中没有没有联接。您可能需要读取两个表才能获得所需的数据。请注意,成本是根据读取容量单位计算的。因此,这两种不同的读取方式会让您付出代价。

  2. 如果项目大小超过DynamoDB 项目大小 400 KB

  3. 您可以编写查询表达式以按属性 attrX、attrY 和 attrZ 过滤数据,因为它们存储为普通标量数据类型属性

方法 2:-

  1. 将所有必需数据保存在一张表中的首选 NoSQL 方法。不需要加入或额外阅读

  2. 需要考虑item大小是否可以超过400KB

  3. 是否需要编写查询来按属性过滤数据属性 X、属性和属性 Z。请注意,在这种方法中,ListC数据存储为 Map DynamoDB 数据类型列表。在大多数情况下,DynamoDB 不具备查询这种复杂数据结构(即 Map inside List 数据类型)的灵 active

List of Objects - means List of Map on DynamoDB database

{ X: "2.8", Y: "nop" } - is the object. This translates to MAP data type on DynamoDB database.

The outside square bracket translates to LIST data type on DynamoDB

关于database - 发电机 : How to store a list of items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42505089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com