NDB BlobProperty'压缩'选项,之后可以设置吗?

时间:2014-12-10 04:14:51

标签: python google-app-engine google-cloud-datastore app-engine-ndb

Google App Engine的数据存储区ndb.BlobProperty有一个选项compressed=True,在写入和读取数据存储区时,它会使用zlib压缩数据,从而节省存储空间。

但是,在存储了一些具有此类ndb.BlobProperty的实体之后,我发现了这一点。

添加compressed=True是否安全?是否正确读取现有实体(未压缩)?

我在Cloud Playground尝试了一些它似乎有效,但由于我无法在文档中找到它,我不完全确定。

1 个答案:

答案 0 :(得分:3)

是的,它会被正确阅读。但请注意,如果您不更新此属性,实体将不会被压缩。 因此,在添加compressed=True之后,要压缩所有现有实体,您应该将作业运行到:

entity.compressed_value = entity.compressed_value
entity.put()

如果您只是“重新放置”所有这些内容,它将无效。

使用len(entity._to_pb().Encode())检查尺寸,以便了解它是否已压缩。