Как долго (максимум символов) может быть имя ключа сущности хранилища данных? Разве это плохо, если вы используете очень длинные имена ключей? - PullRequest
22 голосов
/ 01 апреля 2010

Какое максимальное количество символов можно использовать для определения имени ключа объекта хранилища данных?

Разве плохо иметь длинные ключи?

Например: Допустим, мы используем key_names из 170 символов, что составляет длину сообщения Twitter 140, плюс 10 числовых символов для широты и 10 для долготы и 10 для метки времени.

(Причина такого имени ключа: поэтому, используя такое имя ключа, мы можем легко и быстро быть уверенными в отсутствии повторяющихся сообщений, поскольку одно и то же сообщение не должно приходить из одного места и времени более одного раза.)

Ответы [ 2 ]

43 голосов
/ 27 января 2011

на самом деле, имена ключей ограничены 500 символами, так же как и значения строковых свойств. см. например Key.to_path(), который вызывает ValidateString():

http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/datastore_types.py#413

по умолчанию от max_len до _MAX_STRING_LENGTH, что составляет 500:

http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/datastore_types.py#87

12 голосов
/ 01 апреля 2010

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

Плохо иметь очень длинные имена ключей, однако: кроме сохранения и извлечения, каждая запись индекса содержит имя ключа, на которое ссылается, поэтому более длинные имена ключей означают более высокие издержки индексации. Если вы хотите обеспечить уникальность большого текста, лучше всего указать имя ключа как сумму MD5 или SHA1 для ввода, что обеспечит как уникальность, так и короткое (-ish) имя ключа.

...