【发布时间】:2019-04-08 00:30:31
【问题描述】:
将目录层次结构/树存储在键值数据库(在我的例子中是 MongoDB,但其中任何一个)中的干净/有效方法是什么?
例如树形结构
- Cars
+ Audi
+ BMW
- M5
+ Ford
- Color
+ Red
- Apple
- Cherry
+ Purple
- Funny
我现在使用的方法,每个对象都链接到它的父对象
{
dir: "red"
parent-dir: "color"
}
这使得插入和重新排序树的任何方面变得非常高效/快速(例如,如果我想将 Red 及其所有子项移动到 Cars 目录)。
但是当我想递归地访问给定目录的所有子目录及其子目录时,这种方法很糟糕。为了提高解析效率,我可以有一个结构,例如
{
dir: "red"
children: "audi, bmw, ford"
}
{
dir: "bmw"
children: "m5"
}
但是如果我想修改树,需要触摸和修改一大堆对象。
还有其他方法可以在 KV 存储中存储目录结构吗?
【问题讨论】:
-
真的这个问题更笼统......在KV数据存储中存储任何分层数据的最佳方式是什么......
-
+1:我不知道这个 KV 趋势。我学到了一些新东西,谢谢。
-
PS:对于像我这样的人,这里是一个体面的 KV 阐述:readwriteweb.com/enterprise/2009/02/…
-
MonogoDB 不是键值存储! It's a document oriented database database