【问题标题】:Riak store a tree structureRiak 存储树结构
【发布时间】:2015-05-20 18:54:52
【问题描述】:

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

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

 A
/ \
B  C
/ \   \
D E F

节点 ID |路径
一个           _
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

那么您对上述解决方案有何看法或您认为 小伙伴们还有什么建议吗?

谢谢

【问题讨论】:

  • 我也有类似的问题。我想在 Riak 中存储一棵树,我正在寻找一个好的解决方案。似乎links 可能有效,但我不是 100% 确定。

标签: tree riak materialized-path-pattern


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多