Google数据存储区建模

时间:2017-04-12 21:30:39

标签: google-cloud-datastore

我有两个实体。分类和产品。每个产品可以有许多类别,每个类别可以属于许多类别。我希望能够返回所有产品,并且每个产品都包含它所属的所有类别及其父类别。数据存储区是一个很好的选择吗?

示例产品响应:

{
    id: 1,
    name: "shoes",
    categories: [{
        id:1,
        ordinal:1
    },{
        id:2,
        ordinal:1
    }]
}

1 个答案:

答案 0 :(得分:0)

  

我认为你的意思是“数据存储”,你写的是“数据流”

这取决于您是否希望稍后根据类别进行查询。

如果您不需要根据类别进行查询

我建议在模型中定义您的类别(使用适当的父/子关系),然后将每个类别添加到LocalStructuredProperty中的产品。数据存储将另存为blob,但在检索产品时将重建类别实体模型。您还可以使用包含每个产品的类别结构的序列化字符串添加JsonProperty。例如:

[
  0: {
    category: 'Electronics',
    subcategories: ['Smartphones', 'Telephones', 'Gadgets']
  },
  1: {
    category: 'Apple',
    subcategories: ['iPhone']
  }
]

Read more about the LocalStructuredProperty and the JsonProperty here (for Python client library)

如果您需要根据类别进行查询

然后你应该使用StructuredProperty。创建模型以定义类别及其祖先路径。然后在实例化时将一个或多个类别(及其父项)添加到Product实体。

数据存储文档中的Entity Property Reference有一个很好的示例,说明如何实现它(在Python中,但也可用于其他语言)。这就是你filter for StructuredProperty values的方式。