[英]MPTT, how to implement in Google App Engine using JDO?
我正在從 PHP/MySQL 遷移到 Google App Engine,並使用 JDO 作為數據存儲的接口。 將已修改的預排序樹遍歷 (MPTT) 啟用的表遷移到 JDO 模型的推薦方法是什么?
在花了一些時間搜索在 GAE 數據存儲上實現分層數據存儲的不同方法之后,我決定嘗試直接 MPTT 實現。 以下代碼片段展示了模型:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class MPTTObject {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String encodedKey;
@Persistent
private String parentEncodedKey;
@Persistent
private int left;
@Persistent
private int right;
如果數據存儲操作是讀取密集型的,則該解決方案工作得很好,但是當操作是寫入密集型時,它會非常“繁重”。 這一事實與必須在 GAE 中完成操作的時間限制相結合,使得該解決方案的吸引力降低。
另一種似乎更有效的方法是存儲層次結構中每個節點的父子節點的完整列表。
以下是有關 GAE 數據存儲上分層數據存儲的一些有用鏈接:
您可以查看 MPTT 的這個 JPA 實現並將相同的想法應用於 JDO:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.