数据存储区实体key_name可以有多长(最大字符数)?持有很长的key_names是不是很糟糕?

时间:2010-04-01 01:30:56

标签: google-app-engine google-cloud-datastore

可用于定义数据存储区实体的key_name的最大字符数是多少?

拥有很长的key_names是不是很糟糕?

例如: 假设我们使用170个字符的key_names,这是Twitter消息的长度140加上10个数字字符表示纬度,10表示长度,10个表示时间戳。

(推理这样一个key_name:所以通过使用这样的key_name,我们可以轻松快速地确保没有重复的帖子,因为同一个消息不应该来自同一个地方和时间多次。)

2 个答案:

答案 0 :(得分:43)

实际上,键名限制为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

答案 1 :(得分:12)

没有硬性最大值 - 键名的最大长度是键的最大长度,减去一些开销,键可以变得很长。

但是,拥有很长的密钥名称是很糟糕的:除了存储和检索它之外,每个索引条目都包含它所引用的密钥名称,因此较长的密钥名称意味着更高的索引开销。如果要确保对大文本的唯一性,最好的选择是将键名称作为输入的MD5或SHA1总和,以确保唯一性和短( - )键名称。