私はPHP/MySQLからGoogle App Engineに移行し、データストアとのインターフェイスとしてJDOを使用しています。変更されたPreorder Tree Traversal(MPTT)対応テーブルをJDOモデルに移行するための推奨される方法は何ですか?MPTT、JDOを使用してGoogle App Engineで実装する方法は?
答えて
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で操作を完了しなければならない時間制限と組み合わされているため、この解決法はあまり魅力的ではありません。
より効率的であると思われるもう1つのアプローチは、階層内の各ノードの親と子の完全なリストを格納することです。
GAEデータストア上の階層データストレージ上のいくつかの便利なリンクは以下の通りです:
あなたのキーはエンコードされた文字列として保存するべきではありません。代わりに 'Key'オブジェクトとして保存してください。 –
私はエンコードされた文字列を使用する理由は、可能性の低い変更でアプリケーションエンジンの外にアプリケーションを移動できるようにするためです。キーオブジェクトはアプリエンジン固有のものですが、エンコード文字列を使用することで、引き続きインデックスエンジンのアプリエンジンが利用できます。 –
エンコードされた文字列を使用すると、マスター/スレーブからHRDへの移植など、別の問題に遭遇します。 –
- 1. Google App Engine JDO 3
- 2. Google App EngineでPythonでcsvwriterを実装する方法
- 3. Google App Engineでインターネットのハイスコアを実装する方法
- 4. Google App Engineでホットリンク防止を実装する方法
- 5. Google App Engineを使用してAndroidでログイン機能を実装する
- 6. Google App EngineでJDOを使用しているクエリでキャストエラーが発生するのはなぜですか?
- 7. PythonでGoogle App Engineのデータストアフィルタに 'OR'を実装する方法は?
- 8. Google Compute EngineでphpにGoogle App Engine SDKを使用する方法
- 9. マイクロサービスを使用してGoogle App Engineアプリケーションを実行する
- 10. Unowned relationshipの実装Google App Engine
- 11. Pythonを使用してGoogle App Engine内でJavaプログラムを実行
- 12. Google App Engine内で「Paypal Subscriptions Service」を「実行する」方法は?
- 13. Google App Engine(Java)でIMAPを使用する方法
- 14. Google App Engineでujsonを使用する方法
- 15. Google App Engine(Python)でnumpyを使用する方法
- 16. Google App EngineデータストアでNOT IN句を使用する方法
- 17. Google App EngineでHunchを使用する
- 18. Google App Engineでフィードパーサーを使用する
- 19. GoogleでGoogle App Engineのチュートリアルを使用しているTodoリスト
- 20. ユニットテストApp Engine JavaでのXGクロスグループトランザクションJava JDO
- 21. Google App Engine/JDO:セッションキャッシュがありますか?
- 22. Google App Engine HashMap子フィールドを持つJDO永続性
- 23. Google App Engine:順序付きリストのコレクションを実装する
- 24. Google App Engine Intellijのアイデアを実装する
- 25. Google App Engineでjs/cssをミニドキュメント化してバージョンアップする方法
- 26. Google App Engine Pythonでgoogle cloud visionを使用するには?
- 27. JDOとGoogle App Engineデータストア:コード内の重要な表現
- 28. Google App Engineを使用したWebサービス
- 29. Google App Engineを使用したマルチユーザータイマー
- 30. Google App Engineローカルデータストアを使用したIllegalStateException
なぜMPTT?おそらく、祖先のリストは、ほとんどの場合、より良い選択肢です。 –