1

PHP/MySQLからGoogleAppEngineに移行し、データストアとのインターフェイスとしてJDOを使用しています。変更されたプレオーダーツリートラバーサル(MPTT)対応のテーブルをJDOモデルに移行するための推奨される方法は何ですか?

4

2 に答える 2

1

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データストアの階層データストレージに関するいくつかの便利なリンクは次のとおりです。

于 2011-09-03T11:05:43.870 に答える
0

このMPTTのJPA実装を見て、同じアイデアをJDOに適用できます。

https://github.com/hacker-works/mptt-jpa

于 2020-07-01T13:22:49.733 に答える