3

我正在为一个项目开发一个带有 riak 的分布式文件系统。我想在 riak 数据库中存储一个树结构,我想在给定路径时获取节点 ID(像 /root/dev/bin 这样的路径)

我想使用物化路径来存储树,其中通过使用节点 id 和根路径来存储树

 A
 / \
B C
/ \ \
DE F

节点 ID | 路径
A _
B A
C A
D A,B
F A,C

因此,要获取路径的 id,一种解决方案是将路径存储为键,将节点 id 存储为值,然后使用 riak 键过滤器获取路径的节点 id,另一种解决方案是将路径存储为值并使用riak 搜索以获取节点 ID。如果我使用 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

那么您对上述解决方案有何看法,或者你们还有其他建议吗?

谢谢你

4

1 回答 1

0

我实现了一个简单的树结构,其中包含插入和删除节点等操作。我已经使用物化路径和邻接列表实现了我的系统。要存储具有邻接列表的树,它需要同时使用链接和二级索引。但是邻接表的缺点是当它需要检索特定节点的子节点时效率非常低。但是如果你使用物化路径来存储树,插入和删除节点真的很容易。Riak 键过滤器和 map reduce 函数可以用来实现这一点。

于 2015-04-29T20:00:45.643 回答