【问题标题】:Google App Engine - NDB - INDEX QuesionsGoogle App Engine - NDB - 索引问题
【发布时间】:2013-11-22 18:36:53
【问题描述】:

我有以下关于 GAE NDB - 索引的问题。

  1. 我假设您可以通过index.yaml 或在模型定义中使用属性选项indexed = true 指定索引。我对么?如果是的话,一个比另一个更受欢迎?
  2. 有没有办法在数据对象的生命周期中添加/删除索引?
  3. 能否在结构化属性字段上指定索引? 如果是这样,那么你能告诉我**作为这个的语法吗?

提前致谢

【问题讨论】:

    标签: google-app-engine python-2.7


    【解决方案1】:

    默认情况下,可以索引的属性(即那些不是 Blob 变体的属性)会被索引,这意味着您可以自行过滤或排序。向 index.yaml 添加单一属性索引是不寻常的。为属性设置 indexed=False 将意味着保存实体时的写入操作更少,但意味着不再可以按属性进行过滤或排序。我建议阅读documentation on indexes

    如果您想按多个属性进行过滤或排序(组合),则需要将它们包含在 index.yaml 中。但是,当您在开发服务器中运行代码时,如果它需要尚未指定的索引,则 index.yaml 将被修改为包含正在运行的查询的合适索引。手动添加索引不一定是您必须要做的事情。

    您不能为整个 StructuredProperty 编制索引,Structured Properties 的属性是单独编制索引的,与常规属性相比,您无需对它们进行任何不同的考虑。如果您想手动指定包含子属性的多属性索引,那么您应该可以使用“property.subproperty”(例如“address.city”)来实现。

    【讨论】:

    • 谢谢!很棒的解释!
    • 我不同意您关于 index.yaml 中的单一属性索引不常见的说法。在我的项目中,我对一个属性进行投影查询,这需要一个属性索引。要在 GCP 数据存储中创建索引,您需要在 index.yaml 中定义它,然后运行“$ gcloud datastore indices create index.yaml”。
    【解决方案2】:

    s1) 是的,您可以将某些属性设置为被索引。某些属性类型根本不允许索引。最好在每个模型定义中以编程方式设置索引。

    2) 虽然您可以通过编程方式删除索引(即删除 indexed=True),但我不建议这样做。它会使您的数据存储处于不一致的状态。

    3) 无法在结构化属性上设置索引,但是,您可以在模型和结构化属性中的模型之间设置 Key 关系。

    见:

    "您可以为结构化属性指定常用属性选项 (索引除外)。”

    【讨论】:

    • 谢谢。我很困惑文档中的哪个地方说结构化属性大炮被索引。我意识到这意味着整个结构化属性,而不是单个元素。
    【解决方案3】:

    当我发现困难的方式(参见GAE python NDB projection query working in development but not in production)时,拥有索引(因此需要在 index.yaml 中的条目)和将属性标记为已编入索引或未编入索引之间存在很大差异。这些东西有不同的用途:

    • 拥有索引可让您搜索、排序或进行投影查询。
    • 将属性标记为是否已编入索引会告诉索引哪些实体要包含在索引中,哪些要忽略。

    是的,绝对可以,您可以随时添加或删除索引:

    1. 更新您的 index.yaml
    2. 然后运行 ​​gcloud 命令之一,例如“$ gcloud datastore indices create index.yaml”或“$ gcloud datastore indices cleanup index.yaml”

    不,您不能在结构化属性上创建索引。在此处查看更多信息https://cloud.google.com/appengine/docs/standard/python/ndb/entity-property-reference#structured

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      相关资源
      最近更新 更多