Найти - Пользователи
Полная версия: couchdb и ограничение на выдачу reduce
Начало » Базы данных » couchdb и ограничение на выдачу reduce
1 2
blessmaster
Ну, не забываем, не документом единым жив коуч (да и не только коуч). Можно за основу взять дерево сохранённое в любой предопределённой структуре, которую удобно поддерживать и при этом строить индексы под те выборки, которые мы хотим выполнять.

Вариант со списочным хранилищем дерева можно было бы разнести и по документам.

Плюс хранения одним документом: псевдотранзакции коуча позволяющие контролировать согласованность изменений.

Несомненный минус (особенно раздражающий при больших деревьях) - перестроение всего индекса при малейшем изменении дерева вместо обновления изменившегося фрагмента. Впрочем, при перемещении веток или изменении структуры возле “корня” будет перестроена большая часть индекса независимо от способа хранения.
alexandre
Такой вариант вроде удовлетворяет большинству требований:
{
"_": {
"children": ["3", "6" ],
"parent": null
},
"3": {
"children": ["2", "4"],
"parent": "_"
},
"6": {
"children": [ ],
"parent": "_"
},
"2": {
"children": [ ],
"parent": "3"
},
"4": {
"children": ["5"],
"parent": "3"
},
"5": {
"children": [ ],
"parent": "4"
}
}
Можно узнать всех своих детей например “children”: , знать родителя например “parent”: “3”, пользовательская сортировка вроде тоже присутствует, может я чего то не доглядел в этом варианте?
dimabest
Да, это самый толковый вариант. Каждый узел знает своих родителя и детей.

Только я словарь храню немного иначе, чтобы парсить меньше JSON-а.
{
0: (None, [1, 2, 3]),
1: (0, [11, 12]),
11: (1, [112, 113])
}
Тоесть
pid, childs = tree[id]
И, соответственно, 2 коллекции (MongoDB): ‘tree.rel’ (в одном документе только отношения между узлами) и ‘tree.nodes’ (узлы с данными).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB