Используются ли значения IdGeneratorStrategy.Identity после удаления jdo - PullRequest
1 голос
/ 21 февраля 2011

Я использую Google App Engine.

Если IdGeneratorStrategy.Identity генерирует поле Длинного ключа, а затем объект удаляется из хранилища данных, есть ли вероятность повторного использования ключа другим объектом того же класса?

PaperCrane на Reddit пишет:

Документация для GenerationType.IDENTITY говорит, что это означает постоянный провайдер ( база данных) предоставит уникальный идентификатор. Так что это полностью зависит от вашей базы данных программное обеспечение, если оно решит повторно использовать идентификаторы из удаленных записей. Не зная что-нибудь еще о вашей проблеме я бы сказать, что это возможно, но я не могу думать любой веской причины для базы данных сервер для отслеживания, какие идентификаторы использовать и утилизировать старые. Тот кажется много накладных расходов на очень мало пользы.


А Марк Росс в группах Google пишет о том, как создаются идентификаторы GAE:

Поскольку хранилище данных в prod состоит из нескольких бэк-эндов, мы использовать заколдованный подход к пособию по безработице идентификаторы, чтобы нам не пришлось беспокоиться о разной раздаче бэк-эндов тот же идентификатор. Таким образом, конец А может быть работая от пула идентификаторов в диапазоне от 0 до 100, и конец B может быть работая от пула идентификаторов в диапазоне от 101 до 200 и тд. Если твой вставки попали в другое хранилище данных Back-end вы получите идентификаторы, которые прыгают вокруг немного. Вы можете зависеть от этих Идентификаторы уникальны, но не монотонно возрастающий.

Теперь я думаю, что очень маловероятно, что значения идентичности используются повторно, но все равно было бы хорошо получить четкий окончательный ответ.

1 Ответ

3 голосов
/ 22 февраля 2011

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

...