在 Appengine 数据存储中设置操作

Posted

技术标签:

【中文标题】在 Appengine 数据存储中设置操作【英文标题】:Set operations in Appengine datastore 【发布时间】:2011-07-02 21:00:42 【问题描述】:

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

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

【问题讨论】:

您的用例到底是什么?我给出了一些通用的答案,但对于您实际尝试做的任何事情,也许有更好的解决方案。 这是一个理论问题,只是我开始思考并想听听别人的意见。 【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于在 Appengine 数据存储中设置操作的主要内容,如果未能解决你的问题,请参考以下文章

我可以在存储过程中设置默认架构吗?

AppEngine 数据存储区查询具有给定属性的所有实体 (Java)

在 android Firebase 中设置警报

如何在 Mac 应用程序中设置初始 Core Data 存储?

是否有一个很好的实用程序/第 3 方库来管理 AppEngine 数据存储?

在存储过程中设置 QUOTED_IDENTIFIER