在App Engine中存储的字符串的最大长度是多少?

12

在使用App Engine存储String字段时:

  • App Engine datastore能够处理的String的最大length()是多少?
  • 同时,如果使用Objectify,这个最大长度是否相同,还是Objectify会进行某些处理影响了最大长度?
4个回答

9

Objectify会自动将长度超过500个字符的字符串转换为原生Text存储。如果您正在索引字符串,请注意;Text对象不会被索引,因此长度超过500个字符的字符串将无法被索引。


如果String超过500个字符并且被索引,保存操作将失败。com.googlecode.objectify.SaveException: Error saving Call Info=: At path 'notes': Request to index a value that cannot be indexed:. 是否有解决方法? - Patrick Jackson

5
我认为这个问题的回答已经过时了,所以我来更新一下。我正在使用GAE版本1.9.22,并在错误日志中收到以下信息:
字符串属性必须小于1500字节。相反,请使用com.google.appengine.api.datastore.Text,该对象可以存储任意长度的字符串。
使用com.google.appengine.api.datastore.Text非常好用,只需将String对象转换为Text(例如,在代码的服务器端上使用new Text(thisString))。任何对com.google.appengine.api.datastore.*库的引用都不适用于客户端代码。类未找到。

4
根据文档,每个实体的属性值最多可以有500个字符。而且,Objectify只是一个包装器,不会修改您的数据,因此数据大小限制保持不变。

1
根据2016年10月更新的Google Datastore文档,以下是限制:
最大索引字符串属性的UTF-8编码大小:1,500字节
未索引属性的最大大小:1,048,487字节(1 MiB - 89字节)
因此,您可以在未索引的String属性中存储接近1MB大小的字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接