3

我认为没有好的方法可以做到这一点,但是如果必须这样做,您将如何在 Appengine 的数据存储上实现集合操作?

例如,给定两个整数集合,您将如何将它们存储在数据存储中以获得相交和除外(A 中所有不在 B 中的所有项目)操作的良好性能?

4

1 回答 1

4

数据存储 API 中没有任何内置的集合操作。我看到你有两个选择:

  1. 对于较小的集合(数百个项目),您可能会避免对集合 A 和集合 B 进行仅键查询,并在应用程序代码中进行交集。“小”的精确定义将取决于您的应用程序。

  2. 对于较大的集合(数百万个项目)如果您提前知道需要哪些交叉点,则可以在每次插入新记录时计算它们。例如,假设您有两个集合 A 和 B,并且您知道最终要查询(A 与 B 相交)。每当您插入 A 时,请检查它是否已经在 B 中。如果是,请在某处记录此事实(在单独的实体类型中,或作为 A 或 B 本身的布尔属性)。当然,您也需要为您的 B 执行此操作。

使用选项 1,您可以拥有许多不同的集合,但受限于每个集合的大小。

使用选项 2,您可以拥有具有数百万成员的集合,但如果您有多个集合,则尝试定义集合和运算符的所有可能排列将变得笨拙。

于 2011-02-23T20:01:47.457 回答