AppEngine数据存储对象的手动序列化/反序列化

时间:2013-02-28 23:04:52

标签: google-app-engine serialization google-cloud-datastore

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

我假设Google正在使用反射以通用方式执行此操作。这可行,但证明是非常慢。我愿意编写(并维护)相当多的代码来加速数据存储对象的序列化/反序列化(我有大对象,这会消耗相当一部分时间)。

1 个答案:

答案 0 :(得分:1)

数据存储区在内部使用协议缓冲区,并且无法循环,因为它是应用程序与数据存储区通信的唯一方式。 (该实现可以在SDK / google / appengine / datastore / entity_pb.py中找到) 如果您认为,(de)序列化在您的情况下太慢,您可能有两个选择

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