我需要批量加载表中的所有实体。(对于高速按需图遍历算法,它们需要在内存中而不是按需加载。)
我需要将其并行化以提高加载速度。所以,我想在并行线程中运行多个查询,每个查询大约拉。来自数据库的 800 个实体。
QuerySplitter用于此目的,但我们在灵活环境中运行,因此使用的是 Appengine SDK 而不是客户端库。
已经提到了 MapReduce,但这并不是针对简单的数据加载到内存中。Memcache 有点相关,但对于高速访问,我需要在我自己的应用程序的 JVM 的 RAM 中的密集网络中的所有这些对象。
MultiQueryBuilder可能会这样做。它在并行运行部分查询时提供并行性。
无论使用这三种方法中的哪一种或其他方法,最难的部分是定义过滤器或其他形式的拆分,将表(种类)粗略地划分为大约 800 个实体的块?我会创建说“对象 1 到 800”、“801 到 1600,...”的过滤器,但我知道这是不切实际的。那么,如何做到这一点呢?