Я создаю приложение App Engine, которое использует OAuth для получения данных пользователя из внешнего API.Пользователь назначает числовой идентификатор внешним API.Я рассматривал вопрос о предоставлении моей модели User поля идентификатора, в котором будет храниться копия идентификатора внешнего пользователя.Потом я вспомнил, что записям хранилища данных могут быть присвоены ключи с назначенным вручную числовым идентификатором.
external_id = int(api_response['user']['id'])
handmade_key = db.Key.from_path('User', external_id)
Путем ручного создания ключа перед созданием записи я смог бы получить запись, используя только этот идентификатор.
user = User.get_by_id(external_id)
Однако я понимаю, что мне нужновыделить весь диапазон идентификаторов, которые может использовать API.
allocate_ids(User, 10000)
Мой первый вопрос:когда я должен вызвать allocate_ids?Похоже, мне нужно будет выполнить его только один раз, но если он будет выполняться каждый раз, когда экземпляр моего приложения запускается, это повлияет на производительность?Если я никогда не помещаю сущности пользователя без ключа, созданного вручную, нужно ли мне использовать allocate_ids?
Второй вопрос:я сумасшедший !?Делать это обычным способом не намного труднее
user = User.all().filter('external_id =', external_id)
Стоит ли выделять идентификаторы, чтобы избежать этого запроса хранилища данных?