1

是否可以手动定义用于AppEngine数据存储的序列化逻辑?AppEngine数据存储对象的手动序列化/反序列化

我假设谷歌正在使用反射以通用的方式做到这一点。这有效,但证明是相当缓慢的。我愿意编写(并维护)相当一些代码,以加快数据存储对象的序列化/反序列化(我有大对象,这会消耗相当多的时间百分比)。

+0

您可以将您的内容序列化到BlobProperty或ByteStringProperty。例如,显然你不能对这个新数据进行查询。 – 2013-02-28 23:09:08

+0

这是我已经考虑过的,但我更愿意能够在数据存储区查看器中检查我的数据 – Daniel 2013-02-28 23:13:46

回答

1

数据存储在内部使用协议缓冲区,并且没有办法,因为它是您的应用程序可以与数据存储进行通信的唯一方式。 (实现可以在SDK中找到/谷歌/ AppEngine上/数据存储/ entity_pb.py) 如果你认为,(反)串行化你的情况太慢,你可能有两种选择

  • 移到一个较低的DB API。在google.appengine.datastore中,有两个充分记录的ext.db和ext.ndb API旁边还有另一个API。这并不是所有的花式模型,并提供了一个简单的(有希望快速)字典式的API。这将使您的数据存储区布局与其他两个数据库API保持兼容。
  • 自己序列化对象,并将其存储在仅由文本字段组成的虚拟条目中。但是您可能需要将数据复制到基本条目中,因为您无法按自我序列化文本中的数据进行过滤/排序。