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保持兼容。
  • 自己序列化對象,並將其存儲在僅由文本字段組成的虛擬條目中。但是您可能需要將數據複製到基本條目中,因爲您無法按自我序列化文本中的數據進行過濾/排序。