MongoDB - помогает с каскадными иерархиями? - PullRequest
1 голос
/ 24 ноября 2011

Все чаще встречается, когда в моем приложении приходится поддерживать каскадную древовидную структуру.

Дерево определяет разрешения и любые объекты, связанные с ним. Этот каскад, так что его изменение модифицирует (или получает данные) целое поддерево.

С ActiveRecord и SQL довольно сложно иметь дело. Одним из вариантов является его денормализация и использование «путей»: «root / child1 / child2» и SQL like -s для работы с ним.

Но я просто начинаю задаваться вопросом, подходит ли сама база данных для этого, и, возможно, подумать об использовании MongoDB.

Существуют и другие части, которые не могут быть хорошими для использования с MongoDB: транзакции (во время платежей, резервирования).

Итак, мой вопрос: поможет ли переключение на MongoDB решить проблему «каскадной иерархии»?

1 Ответ

0 голосов
/ 26 ноября 2011

Таким образом, мой вопрос заключается в том, поможет ли переключение на MongoDB решить проблему «каскадной иерархии»?

Главное преимущество - честно хранить всю иерархию в одном документе.Затем вы можете «аннотировать» части документа с их разрешениями.Очевидно, что такие «аннотации» на самом деле не существуют, они будут просто полями в документе, так что это потребует от вас создания слоя для всего этого.

Итак, теоретически вполне возможно сделать то, чтоВы хотите, но у него есть некоторые ограничения.

В частности, когда MongoDB запрашивает документ, он запрашивает весь документ.Если вся ваша иерархия вписывается в один документ, то вы получаете всю иерархию одним запросом.Если нет, то вы начинаете переходить обратно к SQL-методу обработки этого.

...