gpt4 book ai didi

google-app-engine - Google Datastore,获取特定的实体属性

转载 作者:行者123 更新时间:2023-12-04 17:51:00 26 4
gpt4 key购买 nike

很多时候我只需要一个实体的属性值。所以没必要用key.get()获取整个Entity。

我知道投影查询会返回具有您指定属性的不完整实体。这些值位于索引中,因此无需从数据存储中获取实体。

我想知道如果给定一个键,是否有一种方法可以获取部分实体,从索引而不是数据存储中获取信息,因为我假设从索引中获取信息比从数据存储中获取信息更快。

例如:article = some_key.get(projection=[Article.title])打印文章标题

有办法吗?这可能是一个新功能?

编辑:好像没有办法。现有索引按属性排序。唯一的方法是,如果有一种方法可以创建一个按键排序的索引,属性在一列中,但是拥有这些额外的索引似乎不是很有用。

最佳答案

如果没有其他信息,这有种过早优化的味道。除非您认为时间上的潜在差异代表了您可以优化的大部分处理时间,否则您就在错误的领域工作。

作为附加说明,获取实体的大部分延迟是与实体大小无关的网络延迟。除非您使用的是大型实体 (xx-xxxx KiB),否则数据检索大小对延迟的影响微不足道(如果不是更小的话)。

话虽如此,如果您确实有大型实体并且真的想尝试一下,那么有一种解决方法可以有效地完成您的要求,同时仍然保持高度一致。

示例:假设您要从 Kind myKind 中检索属性 myField1 和 myField2。

你需要这个索引:

- kind: myKind
ancestor: yes
properties:
- name: myField1
- name: myField2

假设实体的id是myId,并且实体没有后代,可以通过查询来完成:

select myField1, myField2 from myKind WHERE __key__ HAS ANCESTOR Key(myKind, myId)

注意:这可以在子实体上完成,唯一的要求是没有同类的后代。

enter image description here

这是有效的,因为 HAS ANCESTOR 运算符也将匹配祖先,在本例中是您要查找的实体。使用 HAS ANCESTOR 还会强制查询具有强一致性,这意味着它的行为就像同样具有强一致性的 get 一样。

这种方法的一个缺点是它需要一个包含祖先的复合索引——这将需要更多的存储空间。另一个缺点是它很可能不会更快。 YMMV.

关于google-app-engine - Google Datastore,获取特定的实体属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com