Гарантируется ли, что числовой автоматически увеличиваемый идентификатор новой сущности всегда больше существующих идентификаторов? - PullRequest
2 голосов
/ 17 декабря 2011

Гарантируется ли, что автоматически увеличиваемый идентификатор новой сущности всегда больше существующих идентификаторов?

В основном я хочу периодически помещать сущности (например, комментарии) в фоновой задаче в большие двоичные объекты по мере их создания клиентами.

Так что, если сейчас есть 100 сущностей, я сохраню их в BLOB-объекте и создам вспомогательную сущность для этого BLOB-объекта, например

class BlobRange
{
    long fromId;    // Comment.id
    long toId;      // Comment.id
    String blobKey;
}

В следующий раз фоновая задача найдет самый большой BlobRange.toId и получит новый кусок Comment, чей id больше BlobRange.toId, что в этом примере будет больше 100.

1 Ответ

3 голосов
/ 17 декабря 2011

Афайк, нет. Кажется, идентификаторы распределены в блоках (см. здесь ). Я лично видел идентификаторы, выделенные примерно так: 1001, 2001, 1002, 3001, 2002 и т. Д. Кажется, что они непрерывно увеличиваются внутри блока, но параллельно используется несколько блоков.

Так что вы не можете полагаться на это, чтобы проверять наличие новых объектов.

Вместо этого используйте Курсоры запросов для этого. Создайте свойство отметки времени (может быть отметкой времени unix типа long) для комментария, который записывается при создании комментария. Затем используйте запрос и курсоры для обнаружения новых объектов.

...