【问题标题】:manual serialization / deserialization of AppEngine Datastore objectsAppEngine Datastore 对象的手动序列化/反序列化
【发布时间】:2013-02-28 23:04:51
【问题描述】:

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

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

【问题讨论】:

  • 您可以将您的内容序列化为 BlobProperty 或 ByteStringProperty。例如,显然您无法对这些新数据进行查询。
  • 这也是我已经考虑过的,但我希望能够在数据存储查看器中检查我的数据

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2013-02-22
    • 2016-10-14
    • 2014-12-24
    相关资源
    最近更新 更多