Как хранилище данных appengine (java - JDO) хранит и возвращает данные, то есть это FIFO или LIFO?Если это FIFO или НИ, ни как я могу сделать это LIFO? - PullRequest
0 голосов
/ 13 февраля 2011

Мне было просто интересно, если я буду хранить некоторые данные в хронологическом порядке, будут ли они возвращены в порядке самых последних или самых недавних ИЛИ наименее недавних или самых последних? Например, Если я введу данные в следующем порядке: A[1], B[2], ..., если я сделаю простой select запрос к таблице, он вернет список как {A, B, ...} или {..., B, A}? Предположим, что я не установил никаких индексов, т. Е. Индексирование автоматически устанавливается appengine. Важная часть дизайна моей системы зависит от этой информации, поэтому я хочу подтвердить эту информацию, прежде чем продолжить. Любая помощь будет высоко оценена. Мне нужно, чтобы данные были в формате LIFO, как я могу это обеспечить?

  • FIFO - первый на первом
  • LIFO - последний на первом

Ответы [ 3 ]

1 голос
/ 13 февраля 2011

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

1 голос
/ 14 февраля 2011

Порядок сортировки по умолчанию для сущностей, возвращаемых App Engine - если вы не укажете другую, - сначала по неравенству, по которому вы фильтровали, а затем по ключу. Если вы хотите упорядочить по дате, вы должны включить поле даты и явно отсортировать его.

Совершенно верно фильтровать поле сущности в запросе keys_only.

1 голос
/ 13 февраля 2011

Я почти уверен, что хранилище данных движка приложений не определяет какой-либо гарантированный порядок, и что используемая вами среда персистентности (JPA? JDO?) Тоже не имеет.Поэтому, если это критично, сохраните отметку времени вместе со всеми вставляемыми данными и добавьте в свои запросы предложение order by, чтобы убедиться, что вы извлекаете объекты в соответствующем порядке.

...