0

假设我有一个Club实体和一个User实体。AClub有一个成员列表。

现在说我想获得Clubs用户所参与的所有内容。有两种方法可以做到这一点,每种方法都涉及一个成员列表:

  1. 该列表可以是字符串列表,这些字符串是成员的电子邮件地址。当我想获得用户所属的俱乐部时,我会做clubQuery.filter('emailAddresses =', userEmail).

  2. 该列表可以是 ReferenceProperties 列表,其中每个项目都是对 User 实体的引用。所以我会做clubQuery.filter('userReferences =', user_key)

哪个是更好的选择,为什么?还是两者之间真的没有区别?

4

1 回答 1

0

根据电子邮件的平均长度,您可以通过存储电子邮件来节省一些存储空间,它们的密钥可能会更长。或不。

当您通过 key 进行数据存储获取时,您可以获得强一致的读取,而不是您从过滤操作中获得的最终一致的结果。如果您存储密钥,则可以在必要时选择这样做。

听起来您有第三种选择,即使用电子邮件地址作为密钥;这样,您将两全其美。

编辑我想我并没有真正回答你的问题。这是一个更好的答案。

  • 选项 1 可以为您节省存储空间,从而节省一些成本。虽然很小,也许微不足道。
  • 选项 2 可以更轻松地在 Club 端编写代码,因为您可以获得自动取消引用。
  • 查询用户所属俱乐部的方式并没有太大区别。
  • 如果您使用我对电子邮件的建议作为键,它可以让您以一致的方式获取用户实体,这是您没有要求的好处。
于 2012-08-25T15:07:19.253 回答