java - GoogleAppEngine 上的 JDO : How to efficiently retrieve a subset of fields from a huge number of records

标签 java google-app-engine jdo

我面临着可扩展性的小问题。我正在使用 JDO 查询我的数据存储。 我需要检索给定实体的所有键(此类键的类型为 Long)。鉴于在我的数据存储中,此类实体有 1.000.000 条记录,我需要以非常有效的方式获取它们,以便在后台任务中循环遍历该集。

哪种方法最有效?

如果我不仅需要 key ,还需要另一个字段怎么办?假设我有一个名为 TPImage 的实体:

    Long idPic; //this is my key
    String title; //this is the field I want to retrieve together with the key
    ... // other properties

如何在单个高效查询中检索 idPic 和标题?

类似

    Query q = new Query("select idPic, title from " + TPImage.class.getName());

但效率更高?

非常感谢!

再见

最佳答案

您遇到的扩展问题是您需要所有键 - 并不是您无法足够有效地获取它们。无论您使用什么系统,这始终至少是 O(n)。

您应该批量完成工作,并使用 cursors,而不是尝试预取所有内容。有效地检索下一组结果。

如果您需要模型中的某个字段,则必须检索整个模型实例 - 它们存储为序列化 blob,因此无法仅检索一个字段。

关于java - GoogleAppEngine 上的 JDO : How to efficiently retrieve a subset of fields from a huge number of records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7430750/

相关文章:

java - 为什么通常 Map<X, X> = new HashMap<X, X>() 而不是 HashMap<X, X> = new HashMap<X, X>()?

java - java中用于比较不同类的instanceof运算符

java - bufferedreader 不会移动到下一行

python - ndb 数据存储查询游标和索引问题

java - 自加入谷歌应用程序引擎(java)

java - 如何使用junit测试java中的注释

google-app-engine - 定义了一个带有绑定(bind)参数但得到 404 的 Goji 路由

google-app-engine - 如何在 GAE Standard Go 中缩小到 0 个实例

java - JDO 无主多对多关系

jpa - JPA和JDO之间的区别?