Java Appengine实体设计建议

Java Appengine实体设计建议,java,google-app-engine,google-cloud-datastore,objectify,Java,Google App Engine,Google Cloud Datastore,Objectify,我对如何实施这一要求感到进退两难: 假设我有以下联系人类 学生们 导师 行政人员 我不确定在数据存储中构建它的最佳方式是什么: 我是否应该有一个联系人实体,该实体将包含给定类型的共享字段和相应的额外字段 或者我应该有三个独立的实体 第一种方法允许我搜索所有联系人,第二种方法是在我只需要某种联系人时避免额外过滤 然而,我还有一个要求,我不知道如何适应这些方法中的任何一种。如果我接触过多个人物,如导师和行政人员,该怎么办。这表明我有一个单独的联系实体,并与它的各种个性联系在一起。因此,对于上

我对如何实施这一要求感到进退两难: 假设我有以下联系人类

  • 学生们
  • 导师
  • 行政人员
我不确定在数据存储中构建它的最佳方式是什么:

  • 我是否应该有一个联系人实体,该实体将包含给定类型的共享字段和相应的额外字段
  • 或者我应该有三个独立的实体
第一种方法允许我搜索所有联系人,第二种方法是在我只需要某种联系人时避免额外过滤

然而,我还有一个要求,我不知道如何适应这些方法中的任何一种。如果我接触过多个人物,如导师和行政人员,该怎么办。这表明我有一个单独的联系实体,并与它的各种个性联系在一起。因此,对于上面的例子,我将有关于这个人的数据保存在三个实体中:联系人、导师、管理员


如果您对搜索所有联系人有任何建议,我将不胜感激。即使您有3种不同的实体类型,我认为您仍然可以创建一个索引,允许您搜索所有联系人

我不知道有多少属性是不同联系人角色所独有的,但我会担心创建一个包含所有属性的大型类/实体-它可能是一个非常大且混乱的类


而且,正如您所指出的,您的最终需求确实使事情变得更加复杂。它建议,也许您应该为所有角色创建一个联系人类/实体,然后为3个角色创建类,这些角色可以“嵌入”到联系人实体中。

它不需要包罗万象,使用AppEngine,由于数据存储的无模式性,我们可以创建多态实体。至于嵌入问题,这些字段将被取消索引。@husayt实体在数据存储中可以是多态的,但我关心的是与实体对应的Java类。@husayt-objectify可以嵌入类以便对它们进行索引: