我试图弄清楚Java API中AppEngine key name的最大长度是多少。
在此之前,这个问题的深度要小得多:
How long (max characters) can a datastore entity key_name be? Is it bad to haver very long key_names?
并收到了两个相互矛盾的答案(对于我来说,被接受的答案似乎不太可信...)
@ryan能够在his answer中提供指向相关Python API源的链接,而我一直在尝试在Java API中找到类似的东西。
但是Key.java,KeyFactory.java和KeyTranslator.java似乎都不对密钥的name
属性强加任何限制。因此,如果有限制,则可以在其他地方实现。 KeyTranslator
调用com.google.storage.onestore.v3.OnestoreEntity.Path.Element.setName()
,这可能是实现限制的地方,但是不幸的是我无法在任何地方找到该类的源代码...
具体来说,我想知道:
最佳答案
数据存储区在后端实施所有验证(因为它可以防止一个客户端中的成功操作在另一个客户端中失败)。数据存储区键具有following restrictions:
500个字符的限制已转换为1500个字节的限制。因此,您之前看过500个字符限制的地方(如链接问题中的@ryan的答案)现在为1500个字节。字符串是使用UTF-8编码的。
重要的是要回答您的问题中的一些细节:
密钥名称是否可以使用完整的500个字节/字符,还是要从该数字中减去其他密钥组件(种类,父项,应用程序ID等)?
否,每个字段限制为1500字节。