Я пытаюсь выяснить, какая максимальная длина для AppEngine key name находится в Java API.Понимание максимальной длины имени ключа AppEngine в Java API
Этот вопрос был задан в гораздо меньшей глубине, перед тем:
и получил две противоречащие друг другу ответы (с той, которая кажется меньше доверия мне быть принятый один ...)
@ryan смог предоставить ссылки на соответствующий источник API Python в his answer, и я пытался найти что-то подобное в Java API.
Но ни Key.java, ни KeyFactory.java, ни KeyTranslator.java, кажется, соблюдение каких-либо ограничений на name
свойстве ключа. Итак, если есть предел, он реализуется в другом месте. KeyTranslator
называет com.google.storage.onestore.v3.OnestoreEntity.Path.Element.setName()
, который может быть место, где реализуется предел, но, к сожалению, я не могу найти источник для этого класса в любом месте ...
В частности, я хотел бы знать:
- ли ограничение 500 символов ограничивает жесткую лимиту, определенную для имен ключей где-то в бэкэнд, или это просто рекомендация, чтобы было достаточным, чтобы убедиться, что полная ключевая строка никогда не превышает 1500-byte limit of a short text property (длинные текстовые свойства с большим количеством байтов не могут быть проиндексированы , если я правильно понимаю).
Если это жесткое ограничение:
- ли 500 символов или 500 байт (т.е. длина после некоторого кодирования)?
- Являются ли полные 500 байтов/символов доступными для имени ключа или других ключевых компонентов (рода, родителя, app-id, ...) вычитаются из этого числа?
Если это рекомендация:
- Достаточно ли во всех случаях?
- Какое максимальное значение я могу использовать, если все ключи расположены в корне моего приложения, а вид - только одна буква? Другими словами: существует ли формула, которую я могу использовать для вычисления предела реального с учетом других ключевых компонентов?
Наконец, если я просто пытаюсь измерить этот предел, пытаясь хранения ключей увеличения длины, пока я не получить исключение, я смогу рассчитывать на пределе, что я считаю, если я только создавать ключи с идентичными пути предков и одинаковые длины в одном приложении? Или есть другие компоненты переменной длины для ключа, который может быть добавлен, и в некоторых случаях уменьшить доступную длину имени ключа? Должно ли быть одинаковым для разработчиков и производственных серверов?
Благодарим за подробный ответ! Это отличная новость! Всегда хорошо слышать от источника. Если бы только я смог связаться с кем-то в группе биллинга Android ...;) Помните, если я укажу вам на другой (старый, но все еще релевантный) вопрос о том, что я считаю «ошибкой» (или, по крайней мере, ненадежной предложение) в официальной документации? Я тем временем нашел обход, но это может вас заинтересовать или человека в вашей команде, который работал над этой темой: http://stackoverflow.com/questions/18264338/google-appengine-server-instance-clock -синхронизация –
О, ничего себе! Просто нашел что-то еще важное в связанном источнике: 'Соответствие имени регулярного выражения '__. * __' зарезервировано/доступно только для чтения' Полезно знать! –