【问题标题】:Google Cloud Datastore indexes谷歌云数据存储索引
【发布时间】:2018-01-18 18:25:54
【问题描述】:

我们正在为我们的新应用使用 Google App Engine。我们想使用 Google 的 Datastore,我们试图了解 Datastore 索引的工作原理。

我们了解索引存在一些限制。我们特别关注实体索引限制。

我们在其中一个模型中嵌入了属性,

Main class

Contact
{
  @Indexed
  private String name;

  @Embedded
  @Indexed
  private CStatus cstatus;
}

Embedded class   

CStatus
{
   private Long start_time = 0L;

   public enum Status
   {
      ACTIVE, PAUSE, DELETED
   };

   private String status = null;
}

假设我保存了一个联系人实例,

1.Contact类一共会创建多少个预定义索引?

2.一共会创建多少个索引条目?

3.Datastore 是否有开发者的游乐场?我们检查了 Datastore 统计信息,但更新索引条目列表需要 24-48 小时。

【问题讨论】:

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


    【解决方案1】:

    根据您的代码,将创建两个简单的索引; 1 个用于name,另一个用于status

    您应该注意,如果您在代码中的其他地方运行需要其他索引的查询,也会创建索引。

    另外需要注意的是,索引的 200 限制不适用于使用单个属性的索引。它适用于使用多个属性的复合索引。

    到目前为止,除非您想创建一个虚拟项目并在其上测试您的代码,否则我所知道的还没有游乐场。否则,您只需要在您的开发环境中进行操作,直到 Google 解决该问题。

    【讨论】:

    • cstatus 是一个嵌入对象,它包含两个属性,这两个属性是否也有单独的预定义索引??。
    • 不,因为创建索引的类Contact 将使用一个属性,即使存储在其中的对象是复杂实例也是如此。希望对您有所帮助。
    • 你能详细说明一下,这里的单属性是什么。 cstatus 预定义索引是否包含 cstatus 类的所有属性。
    • 如果您将类中的任何属性设置为索引,则这是一个 single-attribute 索引。它等效于对 1 个属性运行包含 1 个过滤器的查询。一个示例是获取名称为“Adam”的Contact 实例。将创建 composite 索引的查询示例是选择名称为“Adam”且年龄为 30 岁的所有 Contact 实例的查询。
    猜你喜欢
    • 2013-05-17
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2018-10-11
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多