我想弄清楚 AppEngine 的最大长度是多少key name https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Key#getName--位于 Java API 中。
这个问题以前曾被问过,但深度要低得多:
数据存储实体 key_name 可以有多长(最大字符数)? key_name 太长是不是不好? https://stackoverflow.com/questions/2557632/how-long-max-characters-can-a-datastore-entity-key-name-be-is-it-bad-to-haver
并收到了两个相互矛盾的答案(对我来说似乎不太可信的一个是被接受的答案......)
@ryan 能够提供相关 Python API 源的链接他的回答 https://stackoverflow.com/questions/2557632/how-long-max-characters-can-a-datastore-entity-key-name-be-is-it-bad-to-haver/4813780#4813780我一直在尝试在 Java API 中找到类似的东西。
但两者都没有Key.java https://code.google.com/p/googleappengine/source/browse/trunk/java/src/main/com/google/appengine/api/datastore/Key.java, nor KeyFactory.java https://code.google.com/p/googleappengine/source/browse/trunk/java/src/main/com/google/appengine/api/datastore/KeyFactory.java, nor 密钥翻译器.java https://code.google.com/p/googleappengine/source/browse/trunk/java/src/main/com/google/appengine/api/datastore/KeyTranslator.java似乎对name
密钥的属性。因此,如果有限制,则在其他地方实施。KeyTranslator
calls com.google.storage.onestore.v3.OnestoreEntity.Path.Element.setName()
,这可能是实现限制的地方,但不幸的是我在任何地方都找不到此类的来源......
具体来说,我想知道:
数据存储区在后端实现其所有验证(因为它可以防止一个客户端中的成功操作在另一客户端中失败)。数据存储密钥具有以下限制 https://github.com/google/googleapis/blob/master/google/datastore/v1beta3/entity.proto#L54:
- 一个键最多可以有 100 个路径元素(这些是种类、名称/ID 对)
- 每种最多 1500 字节。
- 每个名称最多可为 1500 字节。
500 个字符的限制已转换为 1500 个字节的限制。因此,您之前看到的 500 个字符限制的地方(如链接问题中 @ryan 的答案)现在是 1500 个字节。字符串使用 UTF-8 编码。
重要的是回答您问题中的一些细节:
是否有完整的 500 个字节/字符可用于密钥名称,或者是否从该数字中扣除其他关键组件(种类、父级、应用程序 ID 等)?
No,每个字段的 1500 字节限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)