1

NDB自帶了大量的屬性類型,可以用於存儲結構化數據:有什麼不同的方式來存儲的AppEngine NDB結構化數據的優勢/劣勢?

ndb.StructuredProperty 我可以看到,這可能是有益的存儲其他模型實例,在情況下,它不是有用將模型存儲在應用程序引擎中。 但也有在LocalStructuredProperty。該文檔僅指出該值存儲爲不透明的值,但具有哪些優點?

JSONProperty和PickledProperty 是數據的人類可讀性存儲數據JSON唯一的優勢?

+1

JSONProperty和PickledProperty。我認爲你的意思是缺點,因爲數據是序列化的。 – voscausa

回答

3

類LocalStructuredProperty的文檔字符串:

子結構是序列化到不透明的斑點。

這看起來像Python端的StructuredProperty,但是在數據存儲區中寫入的內容類似於BlobProperty,它的格式爲
。它不是編入索引, 你不能查詢子屬性。另一方面,磁盤上的 表示更有效率,並且通過傳遞compressed = True可以使效率更高, 通過使用 gzip壓縮blob數據。

JSON和鹹菜沒有預定義的結構。

+5

請注意,JsonProperty派生自BlobProperty,因此數據存儲區查看器不會實際顯示內容。 (有些情況下數據實際上不是UTF-8,這就是爲什麼。)StructuredProperty和LocalStructuredProperty之間的區別在於,對於SP,每個字段都被索引(每寫一個字段需要額外的成本)並且可以在數據存儲區查看器中單獨查看; LSP沒有索引(即更便宜),並且在數據存儲查看器中不能很好地顯示。 SP和LSP都強制執行給定Model子類的結構; JSONP和PickledP可以存儲任何可以使用JSON或pickle序列化的內容。 –

相關問題