我正在尝试使用 Google Datastore 学习 NoSQL,但遇到了唯一性问题。
考虑一个电子商务商店,它有类别和产品。
您不希望数据库中有两个具有相同 SKU 的产品。
所以我用 JSON 插入一个实体:
{"sku": 1234, "product_name": "Test product"}
它显示有两个字段。但随后我可以再次这样做,并且我有两个或更多相同的产品。
你如何避免这种情况?你能让sku字段变得独一无二吗?
插入之前需要先查询吗?
类别也会出现同样的问题。我应该只对所有类别使用一个实体并将其构建在 JSON 中吗?
这里有什么好的常见做法?
创建一个名为“sku”的新类型。创建新产品时,您需要对产品实体和 sku 实体进行事务插入。
例如,假设您要添加一个具有种类名称的新产品product
其 ID 为abc
:
"product/abc" = {"sku": 1234, "product_name": "Test product"}
为了确保属性“sku”的唯一性,您始终需要插入具有种类名称的实体sku
以及等于属性值的 id:
"sku/1234" = {"created": "2017-05-11"}
上面的示例实体有一个创建日期的属性 - 只是我作为示例的一部分添加的可选内容。
现在,只要你insert这两者都是同一交易的一部分,您将确保“sku”属性具有唯一的值。这是有效的,因为:
-
Insert如果该编号的 sku 实体已存在,则确保写入失败
- The 交易确保写入产品实体(带有 sku 值)并且 sku 实体是原子的 - 因此,如果 sku 不唯一,则写入 sku 实体将失败,导致产品实体写入也失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)