【问题标题】:Does the entity google datastore could have "empty" property?实体谷歌数据存储是否可以具有“空”属性?
【发布时间】:2016-06-05 13:11:40
【问题描述】:
如果我有一个具有 A、B 和 C 属性的员工实体,并且有某种员工具有属性 D。哪个更好
- 让两个实体成为员工和 d_employee。
- 将属性 D 添加到实体员工中。
如果我遵循第二种解决方案,我担心的是所有员工实体可能都具有冗余属性 D(来自关系数据库的预期:空行)这是真的吗?我在文档中搜索了答案,但尚不清楚在这种情况下究竟会发生什么。
【问题讨论】:
标签:
java
google-app-engine
google-cloud-platform
google-cloud-datastore
【解决方案1】:
- 将属性 D 添加到实体员工中。
Google 的数据存储不是基于表的关系数据库。它将实体存储为单独的“文档”,并且除了具有相同的 id 类型之外,不要求这些文档在任何方面彼此相似。
没有表架构也意味着您可以做其他有趣的事情,例如有选择地为每个实体索引属性。没有可以设置为索引的列。
Objectify's polymorphism 功能允许在同一个“表”中实现不同类型的数据(或者如果你找到一个更好的词)。如果您不使用 objectify,请查看它。它也适用于存储带有“可选”字段的简单实体(也没有表约束,因此只需使用 null 即可)。