我面临着可扩展性的小问题。我正在使用 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/