У меня есть проект GAE, написанный на Java, и у меня есть некоторые мысли о HRD и проблема, которую я не знаю, как решить.Google App Engine HRD запрос без предка
В основном у меня есть пользователи в моей системе. Пользователь состоит из идентификатора пользователя, имени пользователя, электронной почты и пароля. Каждый раз, когда я создаю нового пользователя, я хочу проверить, что еще нет пользователя с тем же идентификатором пользователя (никогда не должно быть), именем пользователя или электронной почтой.
Идентификатор пользователя является ключом, поэтому я думаю, что выполнение этого будет непротиворечивым. Однако, когда я делаю запрос (и использую фильтр), чтобы найти возможных пользователей с одинаковым именем пользователя или электронной почтой, я не могу быть уверен, что результаты будут согласованы. Поэтому, если кто-то создал пользователя с тем же именем пользователя или электронной почтой пару секунд назад, я, возможно, не найду его с моим запросом. Я понимаю, что предки используются для решения этой проблемы, но что, если у меня нет предка для использования в запросе? У пользователя нет родителя.
Я был бы рад услышать ваши мысли об этом, и то, что считается лучшей практикой в таких ситуациях. Я использую Objectify для GAE, если это что-то меняет.
Я задал вопрос, который может оказаться очень полезным. (http://stackoverflow.com/questions/6584435/how-can-i-create-two-unique-queriable-fields-for-a-gae-datastore-data-model) Мне тоже нужно было хранить уникальную информацию для моих пользователей. В моем случае мне нужно было сохранить как уникальный адрес электронной почты, так и уникальный идентификатор пользователя для каждого пользователя. Это немного сложно с HRD, но я пришел к надежному решению. ... cont ... – RLH
Единственная проблема с моей ситуацией в том, что моя реализация создания учетной записи (см. мой ответ) не будет хорошо масштабироваться. Это было хорошо в моих обстоятельствах, потому что мое приложение GAE очень мало и имеет медленную рутину новых пользователей (1 или 2 месяца). Кроме того, эта информация находится на Python, но код прост - вы должны иметь возможность повторно -транслировать его на Java с относительной легкостью. – RLH
@RLH Спасибо за ваш вклад, всегда интересно видеть разные решения, но я не думаю, что ваше решение будет хорошо работать в моем случае. – Joel