Riak хранит древовидную структуру

Я разрабатываю распределенную файловую систему с помощью riak для проекта. Я хочу сохранить древовидную структуру в базе данных riak и получить идентификатор узла, когда указан путь (путь, например /root/dev/bin)

Я думал использовать материализованные пути для хранения дерева, в котором дерево хранится с использованием идентификатора узла и пути от корня.

A
/ \
B C
/ \ \
D E F

Идентификатор узла | Путь
A _
B A
C A
D A,B
F A,C

Таким образом, чтобы получить идентификатор пути, одним из решений является сохранение пути в качестве ключа и идентификатора узла в качестве значения, а затем использование ключевых фильтров riak для получения идентификатора узла для пути, другое решение — сохранить путь в качестве значения и использовать riak search, чтобы получить идентификатор узла. Если я использую поиск riak, должен ли я сохранить путь как массив json или сохранить его как простую строку?

Кроме того, я хочу выполнять такие операции, как

1. Get childrens of a node(all files in a directory)
2. Add new children(add files or folders)
3. Traverse the tree

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

Спасибо


person Sameera Kumarasingha    schedule 16.01.2014    source источник
comment
У меня похожая проблема. Я хочу хранить дерево в Riak и ищу хорошее решение. Кажется, что ссылки могут работать, но я не уверен на 100%.   -  person Javier    schedule 19.01.2014


Ответы (1)


я реализовал простую древовидную структуру с такими операциями, как вставка и удаление узлов. Я реализовал свою систему, используя как материализованные пути, так и список смежности. Чтобы сохранить дерево со списками смежности, необходимо использовать как ссылки, так и вторичные индексы. Но недостатком списков смежности является то, что они действительно неэффективны, когда нужно получить дочерние элементы определенного узла. Но если вы используете материализованные пути для хранения дерева, вставка и удаление узлов очень просты. Для этого можно использовать ключевые фильтры Riak и функции уменьшения карты.

person Sameera Kumarasingha    schedule 29.04.2015