【问题标题】:Appengine datastore parent or indexAppengine 数据存储父级或索引
【发布时间】:2012-06-14 14:12:04
【问题描述】:

我正在设计我的应用程序数据模型,但我有一个疑问,是使用父索引还是简单索引。

Site{
  @Id Long id;
}

Booking{
  @Id Long id;
  @Index/Parent Key<Site> site;
  @Index Date date;
}

我的 2 个实体是 BookingsSites。关系是 Site 有许多 Booking。 我想通过 2 种方式检索预订:getBookingBySiteAndDate(关键站点,日期日期)和 getBookingsByDate(日期日期)

如果我使用 Parent,则第二次*第二次查询* 效率不高,因为我需要 Booking 的网站来检索所有预订。此站点可能已被删除。

如果我使用 Index第一个查询 效率不高,因为我需要(日期、站点)中的自定义索引并且成本很高。 Appart 的创作不一致,因为预订没有实体组,我有 1w/s 的限制。

你有什么建议?

【问题讨论】:

  • 是什么让自定义索引变得昂贵?他们非常有效率。
  • 对您创建的每个自定义索引执行额外的数据存储写入,这就是产生新成本的地方。

标签: java google-app-engine google-cloud-datastore objectify


【解决方案1】:

我不会使用父母。我为父母看到的唯一价值是您是否需要创建一个事务组。在您的示例中,我只需将站点的 ID 存储在预订表中,并为 getBookingBySiteAndDate 查询创建索引。它会非常快。系统会自动为您创建索引,无需您做任何额外工作。

【讨论】:

    【解决方案2】:

    我已经仔细检查了 Objectify 邮件列表,并且没有限制使用 getBookingsByDate 与 Parent 和没有 Site Id。

    他们向我推荐的解决方案是使用@Parent,因为它更快,并且您不需要在 Site-Date 上使用双索引。

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2015-04-16
      相关资源
      最近更新 更多