gpt4 book ai didi

amazon-web-services - DynamoDB中如果一个item只能通过三个或更多的属性来唯一标识,如何选择主键?

转载 作者:搜寻专家 更新时间:2023-10-30 20:08:36 24 4
gpt4 key购买 nike

如果项目只能由三个或更多属性唯一标识,DynamoDB 中如何选择主键?或者这不是NOSQL数据库的正确使用方式?

最佳答案

通常,如果您的项目由三个或更多属性唯一标识,您可以连接属性值并形成一个复合字符串键,您可以将其用作 Dynamo 表中的哈希键。

如果您需要在它们上创建索引,或者如果您需要在条件表达式中使用它们,您可以将散列键中的属性重复删除到项目的单独属性中。

关系数据库范式的规则不一定适用于 NoSQL 数据库,事实上,通常首选非规范化模式。

为了扩展这个概念,在设计关系数据库模式时使用规范化形式是典型的(并且通常是可取的)。其中一种规范化形式规定您不应在数据库中复制表示相同“事物”的数据。

我将使用一个只有两个部分的示例,但您可以进一步扩展它。

假设您正在设计一个包含美国地理信息的表格。在美国,邮政编码由 5 位数字和另外 4 位可以分割区域的数字组成。

在关系数据库中,您可以使用以下模式:

  Zip    |   Plus4   |  CityName     |  Population
---------+-----------+---------------+---------------
CHAR(5) | CHAR(4) | NVARCHAR(100) | INTEGER

使用 Zip, Plus4 的复合主键

这是完美的,因为 Zip 和 Plus4 的组合保证是唯一的,您可以回答针对此表的任何查询,无论您是否同时拥有 Zip 和附加的 Plus4 代码,或者只有 Zip。您还可以轻松获得邮政编码的所有 Plus4 代码。

如果您想在 Dynamo 中存储相同的信息,您可以创建一个名为“ZipPlus4”的哈希键,它是字符串类型,由邮政编码和 Plus4 代码(即 60210-4598)连接而成,然后还在项目上存储另外两个属性,一个是邮政编码本身,另一个是 Plus4 本身。因此,您表中的项目可能具有以下属性:

  ZipPlus4 | Zip     |  Plus4   |  CityName   |  Population
-----------+---------+----------+-------------+---------------
String | String | String | String | Number

上面的 ZipPlus4 将是表的哈希键。

请注意,在上面的示例中,您可以使用散列键“Zip”和范围键“Plus4”,但如您所见,当您有超过 2 个部分时,您需要一些不同的东西。

关于amazon-web-services - DynamoDB中如果一个item只能通过三个或更多的属性来唯一标识,如何选择主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36525899/

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