在键值数据库中存储目录层次 struct /树(在我的例子中是MongoDB,但不是其中任何一种)的干净/高效的方法是什么?
例如树 struct
- Cars
+ Audi
+ BMW
- M5
+ Ford
- Color
+ Red
- Apple
- Cherry
+ Purple
- Funny
我现在使用的方法是,每个对象都链接到其父对象
{
dir: "red"
parent-dir: "color"
}
这使得插入和重新排序树的任何方面非常高效/快速(例如,如果我想将Red及其所有子项移动到Cars目录).
但是,当我想要递归地删除给定目录的所有子目录及其子目录时,这种方法很糟糕.为了提高解析效率,我可以使用一个 struct
{
dir: "red"
children: "audi, bmw, ford"
}
{
dir: "bmw"
children: "m5"
}
但是如果我想修改这棵树,需要touch 和修改一大堆对象.
在KV存储中存储目录 struct 还有其他方法吗?