MPTT, как реализовать в Google App Engine с использованием JDO? - PullRequest
1 голос
/ 08 августа 2011

Я перехожу с PHP / MySQL на Google App Engine и использую JDO в качестве интерфейса с хранилищем данных.Каков рекомендуемый способ переноса таблицы с включенным измененным обходом дерева предварительных заказов (MPTT) в модель JDO?

1 Ответ

1 голос
/ 03 сентября 2011

Потратив некоторое время на поиск различных способов реализации иерархического хранения данных в хранилище данных 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.:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...