Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database DynamoDB:如何存储项目列表_Database_Amazon Web Services_Amazon Dynamodb_Nosql - Fatal编程技术网

Database DynamoDB:如何存储项目列表

Database DynamoDB:如何存储项目列表,database,amazon-web-services,amazon-dynamodb,nosql,Database,Amazon Web Services,Amazon Dynamodb,Nosql,我想存储属于某个父对象的项目列表 父对象如下所示: user_id - hash key timestamp - range key attributeA - String attributeB - Number listC - List of objects listC是一个对象列表(如JSON),其中每个对象可以有几个字段: attrX - number attrY - string attrZ - string 列表的大小可以是多种多样的,从很少的元素到不同的元素 我应该如何存储它们?

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

父对象如下所示:

user_id - hash key
timestamp - range key
attributeA - String
attributeB - Number
listC - List of objects
listC是一个对象列表(如JSON),其中每个对象可以有几个字段:

attrX - number
attrY - string
attrZ - string
列表的大小可以是多种多样的,从很少的元素到不同的元素

我应该如何存储它们?

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

  • 将每个列表项作为单独的记录保存
  • 将列表中的项拆分为多个单独的记录,其中每个数据库记录只有很少的项
  • 方法(1):

    方法(2):


    您能给我推荐什么?

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

    方法1:-

  • 与RDBMS设计类似的典型规范化方法。然而,我们需要从NoSQL的角度考虑这一点。DynamoDB中没有连接。可能需要读取两个表才能获得所需的数据。请注意,成本是根据读取容量单位计算的。所以,这两种不同的阅读方式会让你付出代价

  • 如果项目尺寸超过规定尺寸,则可接受此方法 DynamoDB项目大小400 KB

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

  • 方法2:-

  • 首选的NoSQL方法将所有必需的数据保存在一个表中。 不需要联接或附加读取

  • >P>需要考虑项目大小是否超过400 kb

  • 是否需要编写查询以按属性筛选数据 attrX、attrY和attrZ。请注意,在这种方法中 数据存储为Map DynamoDB数据类型的列表。在大多数情况下,DynamoDB不具备查询类似这样的复杂数据结构的灵活性(即映射列表内的数据类型)

  • 对象列表-表示DynamoDB数据库上的地图列表

    {X:“2.8”,Y:“nop”}-是对象。这转化为地图数据 在DynamoDB数据库上键入

    外方括号转换为DynamoDB上的列表数据类型

    -------------------------------------
    | parent_id | attrX | attrY | attrZ |
    -------------------------------------
    |  178      |  2    | "abc" | "xyz" |
    -------------------------------------
    |  178      | 2.4   | "klm" | "qwe" |
    ------------------------------------- 
    
    ------------------------------------------------------------------------  
    | 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" } ] |
    ------------------------------------------------------------------------