了解 Java API 中 AppEngine 键名的最大长度

Understanding maximum length of an AppEngine key-name in the Java API

我想弄清楚 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, nor KeyFactory.java, nor KeyTranslator.java 似乎都没有对密钥的 name 属性 施加任何限制。因此,如果有限制,它会在其他地方实施。 KeyTranslator调用com.google.storage.onestore.v3.OnestoreEntity.Path.Element.setName(),这可能是实施限制的地方,但不幸的是我无法在任何地方找到这个class的来源...

具体来说,我想知道:

Datastore 在后端实现其所有验证(因为它防止一个客户端中的成功操作在另一个客户端中失败)。数据存储键具有 following restrictions:

  • 一个键最多可以有 100 个路径元素(这些是种类,name/id 对)
  • 每种最多1500字节。
  • 每个名称最多 1500 字节。

500 个字符的限制已转换为 1500 个字节的限制。因此,您之前看到 500 个字符限制的地方(例如@ryan 在链接问题中的回答)现在是 1500 个字节。字符串使用 UTF-8 编码。

重要的是回答你问题的一些细节:

Are the full 500 bytes/characters available for the name of the key or do the other key-components (kind, parent, app-id, ...) deduct from this number?

,每个字段的 1500 字节限制。