作者:夏天电艹热毯 | 来源:互联网 | 2023-02-04 10:32
我正在尝试通过Google数据存储学习NoSQL,但是我遇到了唯一性问题。
考虑一个电子商务商店,它具有类别和产品。
您不希望数据库中具有相同SKU的两个产品。
所以我用JSON插入了一个实体:
{"sku": 1234, "product_name": "Test product"}
它显示了两个字段。但是之后我可以再次这样做,并且我有两个或更多相同的产品。
您如何避免这种情况?可以使sku字段唯一吗?
插入之前是否需要查询?
类别也会出现相同的问题。我是否应该对所有类别都使用一个实体,然后在JSON中进行结构化?
这是什么好习惯?
1> Dan McGrath..:
创建一种称为“ sku”的新类型。创建新产品时,您需要对产品实体和sku实体进行事务性插入。
例如,假设您要添加一个新产品,其种类名称product
为ID abc
:
"product/abc" = {"sku": 1234, "product_name": "Test product"}
为了确保属性“ sku”的唯一性,您总是想插入一个实体,其名称sku
和ID等于该属性的值:
"sku/1234" = {"created": "2017-05-11"}
上面的示例实体具有用于创建日期的属性-作为示例的一部分,我添加了一些可选内容。
现在,只要将这两者作为同一事务的一部分插入,就可以确保“ sku”属性具有唯一值。之所以有效,是因为:
插入可确保如果该编号的sku实体已经存在,则写入将失败
该交易可确保写入产品实体(与SKU值)和SKU的实体是原子-所以如果SKU不是唯一的,写SKU实体会失败,从而导致产品实体写入也会失败。