В AppEngine (JDO) чем отличается равенство (==) элемента со списком и функцией ()? - PullRequest
0 голосов
/ 23 марта 2011

Например, если у меня есть: List A; и String B;

Какая разница в JDO (AppEngine) между следующими двумя условиями в запросе: B == A; и A.contains(B);?

Кроме того, эффективно ли работает запрос в слайдах 23-25 ​​из http://dl.google.com/io/2009/pres/W_0415_Building_Scalable_Complex_App_Engines.pdf в AppEngine (JDO) для более чем 30 получателей? Как это так, тем более что я прочитал в документации AppEngine, что каждый запрос () может содержать максимум 30 элементов в списке. Разве я не использую запрос contains () для имитации вышеуказанных слайдов (написанных на Python)? Если нет, то как мне добиться таких же результатов в JDO?

Любые предложения / комментарии приветствуются. Я пытаюсь создать систему обмена сообщениями в AppEngine, но не могу привыкнуть к платформе.

Спасибо.

1 Ответ

0 голосов
/ 24 марта 2011

Нет никакой разницы - в App Engine проверки на равенство в списках аналогичны проверкам на наличие содержимого из-за способа индексации вещей в хранилище данных.

Под запросом на слайдах 23-25, я полагаю, вы имеете в виду этот?

indexes = db.GqlQuery(
    "SELECT __key__ FROM MessageIndex "
    "WHERE receivers = :1", me)
keys = [k.parent() for k in indexes]
messages = db.get(keys)

Это работает просто отлично, так как это проверка списка, как описано выше, и приводит к одному запросу хранилища данных. Ограничение, о котором вы думаете, обратное: если у вас есть список и вы хотите найти запись, содержащую какой-либо элемент в этом списке, то для каждого элемента в списке будет создан подзапрос.

...