tree - Riak 存储树结构

标签 tree riak materialized-path-pattern

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

我想用物化路径来存储树,其中使用节点id和从根开始的路径存储一棵树

一个
/\
B C
/\\
D E F

节点编号 |路径
一个 _
B A
C A
D A,B
F A,C

因此,要获取路径的 id,一种解决方案是将路径存储为键,将节点 id 存储为值,然后使用 riak key filters 获取路径的节点 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

那么对于以上的解决方案,你怎么看呢? 大家还有什么建议吗?

谢谢

最佳答案

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

关于tree - Riak 存储树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21159716/

相关文章:

python - 声明式 SQLAlchemy 中的具体化路径关系

sql - 在保持结构的同时对树进行排序

mysql - 物化路径按日期+路径排序

java - 在 BFS 中遍历时如何存储每个节点的级别?

hadoop - 数据分析用什么

java - Java中如何输入二叉树

indexing - Couchbase 或 Riak 作为搜索引擎的数据存储

java - Riak 和 Java - com.fasterxml.jackson.core.JsonParseException : Unexpected character ('<' (code 60))

python - 树的广度优先遍历,Python

algorithm - 路径压缩和按等级合并如何相互补充?