Google App Engine的数据存储区ndb.BlobProperty
有一个选项compressed=True,在写入和读取数据存储区时,它会使用zlib压缩数据,从而节省存储空间。
但是,在存储了一些具有此类ndb.BlobProperty
的实体之后,我发现了这一点。
添加compressed=True
是否安全?是否正确读取现有实体(未压缩)?
我在Cloud Playground尝试了一些它似乎有效,但由于我无法在文档中找到它,我不完全确定。
答案 0 :(得分:3)
是的,它会被正确阅读。但请注意,如果您不更新此属性,实体将不会被压缩。
因此,在添加compressed=True
之后,要压缩所有现有实体,您应该将作业运行到:
entity.compressed_value = entity.compressed_value
entity.put()
如果您只是“重新放置”所有这些内容,它将无效。
使用len(entity._to_pb().Encode())
检查尺寸,以便了解它是否已压缩。