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

b_d*_*dev 22 google-app-engine google-cloud-datastore

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

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

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

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

rya*_*yan 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

  • 为了确认目前,@ryan所说的后端验证仍然是正确的. (2认同)

Nic*_*son 12

没有最大硬度 - 密钥名称的最大长度是密钥的最大长度,减去一些开销,密钥可以变得很长.

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

  • 好吧,通常没有散列 - 也不是MD5,也不是SHA1可以确保唯一性.实际上 - 太阳会比这些哈希碰撞更快爆炸:) (2认同)