Если вы использовали именованные ключи в Google App Engine, это потребует дополнительных затрат? Другими словами, стоит ли создавать новую сущность с именованным ключом, а не со случайно сгенерированным идентификатором?
В аналогичном рассуждении отмечу, что вы можете попросить Google App Engine предоставить вам набор ключей, которые не будут использоваться Google App Engine в качестве автоматически генерируемых ключей? Приведет ли создание большого количества этих ключей к снижению производительности?
Эти вопросы волнуют меня по следующей причине. Допустим, Google App Engine пытается сохранить сущность A, и поэтому он создает ключ для A. Интуитивно кажется, что при случайном генерировании нового ключа Google App Engine необходимо сначала проверить, был ли ключ уже существует. Если ключ уже существует, Google App Engine может потребоваться создать другой случайно сгенерированный новый ключ. Он будет продолжать делать это до тех пор, пока ему не удастся сгенерировать уникальный новый ключ. Затем он назначил бы этот ключ сущности А. Хорошо, это хорошо и хорошо.
Моя проблема с этим, кажется, подразумевает, что ключи вызывают некоторую блокировку уровня приложения? Это было бы необходимо, когда Google App Engine проверяет, существует ли случайно сгенерированный ключ. Это не может быть правильно, так как это вообще не масштабируется? Что плохого в моих рассуждениях?
Итак, так как это было долго, я повторю свои 3 вопроса:
- Создает ли Google App Engine блокировку на уровне приложения при создании новых ключей?
- Несут ли именованные ключи какие-либо дополнительные расходы по сравнению с автоматически генерируемыми ключами? Если да, то какая стоимость (постоянная, линейная, экспоненциальная, ...)?
- Вызывает ли запрос в механизме приложения ключей, которые ядро приложения не использует, приводит к снижению производительности при создании ключа? Если это так, сколько будет стоить это?