在Appengine数据存储区中设置操作

时间:2011-02-23 15:56:21

标签: google-app-engine set-intersection set-operations

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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