java - MPTT,如何使用JDO在Google App Engine中实现?

标签 java google-app-engine jdo mptt

我正在从 PHP/MySQL 迁移到 Google App Engine,并使用 JDO 作为数据存储的接口(interface)。将启用修改的预序树遍历 (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 数据存储上的分层数据存储的一些有用链接如下:

关于java - MPTT,如何使用JDO在Google App Engine中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979334/

相关文章:

python - 请求 https ://www. googleapis.com/bigquery/v2/projects/publicdata/queries?alt=json 时出现 HttpError 403 返回“访问被拒绝:作业 publicdata:

javax.jdo.JDOException : Unexpected error during precommit 异常

java - Google Datastore - 更新实体时出现问题

google-app-engine - nginx 代理太慢

tomcat 服务器上的 javax.net.ssl.SSLHandshakeException

java - 需要替代 java Robot 类以在 Linux 服务器中使用

Java App Engine - 排名计数器

java - PHP + Android XML加密/解密

java - Jersey:LogginFeature 在哪里记录?