gpt4 book ai didi

java - 从 GAE 数据存储中读取多对多对象的最有效方法

转载 作者:行者123 更新时间:2023-12-01 12:20:48 25 4
gpt4 key购买 nike

我已经阅读了一些关于 Google 数据存储区中多对多关系的问题和文章,但我仍然不确定在我的情况下哪一种是最有效的方法:我有一个 User 引用N CollectionOfThingsCollectionOfThings 可以引用 M 个用户。 M和N都非常小。我除了不超过 5 个。(我的申请的性质)。几乎在每个请求中都会获取用户对象。另一个对象则不然。我需要从 CollectionOfThings 实例中查询所有用户,并从用户的 CollectionOfThings 实例的所有实例中查询。

所以我考虑了可能的实现:

  • CollectionOfThings 有一个用户列表。 User 拥有 CollectionOfThings 的集合。关系的两端都没有用 @Load 注释。如果我需要相关部分的对象,我会使用 ofy().load().keys(); 加载它们;

  • 我使用一个可以查询 ofy()....filter("user", ...) 的关系对象,反之亦然。

现在最大的问题是:从数据存储读取操作的角度来看,最有效的方法是什么?

最佳答案

从最简单的方法开始,您可以稍后迁移。根据您的描述,我将从 Set<Ref> 开始指向两个方向的字段。您可以使用@Load组,以便默认情况下不会发生负载,但您仍然可以使用该设施。 确保更新事务中关系的两端。

另一个选项,假设 User <-> CollectionOfThings关系是对称双向的,就是只将键/引用集保留在一侧并@Index它。这样做的优点是您不需要事务来保持 bidir 关系同步。它的缺点是您使用查询来逆向跟踪关系;这些查询最终将是一致的;维护这些索引需要额外费用。

关于java - 从 GAE 数据存储中读取多对多对象的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26662667/

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