Google Datastore w / JDO: время доступа? - PullRequest
0 голосов
/ 18 апреля 2010

Я сталкиваюсь с тем, что кажется (мне) странным поведением, когда я перетаскиваю данные из хранилища данных Google через JDO. В частности, запрос выполняется быстро (скажем, 100 мс), но нахождение размера результирующего списка <> занимает около одной секунды! Действительно, любая операция, которую я пытаюсь выполнить с результирующим списком, занимает около секунды. Кто-нибудь видел такое поведение? Это ожидается? Необычно? Любой способ обойти это?

PersistenceManager pm = PMF.getPersistenceManager();
Query q = pm.newQuery("select from " + Person.class.getName());
System.out.println("getting all at " + System.currentTimeMillis());
mcs = (List<Person>) q.execute();
System.out.println("got all at " + System.currentTimeMillis());
int size = mcs.size();
System.out.println("size was " + size + " at " + System.currentTimeMillis());
получить все на 1271549139441
получил все на 12715491 39578
размер был 850 при 12715491 41071

-B

1 Ответ

1 голос
/ 18 апреля 2010

Вызов execute () выполняет запрос, но не возвращает все результаты - результаты выбираются по мере необходимости при доступе к списку. Для вызова .size () требуется, чтобы хранилище данных извлекло и подсчитало все результаты, что является очень неэффективной операцией!

...