1

是否可以手动定义用于 AppEngine Datastore 的序列化逻辑?

我假设谷歌正在使用反射以一种通用的方式来做到这一点。这行得通,但证明很慢。我愿意编写(和维护)相当多的代码来加速数据存储对象的序列化/反序列化(我有大对象,这会占用相当多的时间)。

4

1 回答 1

1

数据存储在内部使用 Protocol-Buffers,并且没有办法绕过,因为它是您的应用程序可以与数据存储通信的唯一方式。(实现可以在 SDK/google/appengine/datastore/entity_pb.py 中找到)如果您认为(反)序列化在您的情况下太慢,您可能有两个选择

  • 移动到较低的 DB API。在 google.appengine.datastore 的两个文档齐全的 ext.db 和 ext.ndb API 旁边还有另一个 API。这不是所有花哨的模型材料,而是提供了一个简单的(希望是快速的)类字典 API。这将使您的数据存储布局与其他两个数据库 API 兼容。
  • 自己序列化对象,并将其存储在仅由文本字段组成的虚拟条目中。但是您可能需要将数据复制到基本条目中,因为您无法按自序列化文本中的数据进行过滤/排序。
于 2013-03-01T10:25:28.860 回答