标签: hierarchical-data

在数据库中实现分层数据结构

我知道有两种方法:邻接列表和嵌套树.据说由于大量查询,邻接列表在遍历上使用会很慢.但我不知道这方面的任何实际数字.我正在制作的网站将有200页.遍历生成(例如)站点地图需要花费超过0.3秒的时间吗?

使用LAMP堆栈在MySQL(innoDB)上运行.

如果可能的话,我更愿意实现邻接,因为设计更简单.

谢谢.

mysql database hierarchical-data

12
推荐指数
2
解决办法
2万
查看次数

树表的SQL查询

我有一个树结构的表:

id parentId name
----------------
1  0        Category1
2  0        Category2
3  1        Category3
4  2        Category4
5  1        Category5
6  2        Category6
7  3        Category7
Run Code Online (Sandbox Code Playgroud)

在SQL查询resut我需要一个像这样的表:

id parentId level name
----------------------
1  0        0     Category1
3  1        1     Category3
7  3        2     Category7
5  1        1     Category5
2  0        0     Category2
4  2        1     Category4
6  2        1     Category6
Run Code Online (Sandbox Code Playgroud)

谁能帮我写ms-sql查询?谢谢!

sql sql-server hierarchical-data sql-server-2008

12
推荐指数
2
解决办法
3万
查看次数

如何可视化分层数据?

我有一些如下数据:

A A1 12
A A2 23
A A3 AA1 1
A A3 AA2 2
B B1 2
B B2 1
Run Code Online (Sandbox Code Playgroud)

有没有办法在ggplot中可视化这些信息?我正在寻找这样的东西:

   |--A1---12
   |--A2---23
A--|--A3--AA1--1
      |---AA2--2

B--|--B1---2
   |--B2---1
Run Code Online (Sandbox Code Playgroud)

有什么建议?

visualization r graph hierarchical-data ggplot2

12
推荐指数
1
解决办法
3114
查看次数

在SQL中管理层次结构:MPTT /嵌套集与邻接列表与存储路径

有一段时间我一直在努力解决如何最好地处理SQL中的层次结构.由于邻接列表的限制和MPTT /嵌套集的复杂性而感到沮丧,我开始考虑简单地存储密钥路径,作为一个简单的node_key/node_key/...字符串.我决定编译这三种技术的优点和缺点:

创建/删除/移动节点所需的呼叫数:

  • 邻接= 1
  • MPTT = 3
  • Path = 1(用包含该路径的所有节点上的新节点路径替换旧节点路径)

获取树所需的调用次数:

  • 邻接= [子级数]
  • MPTT = 1
  • 路径= 1

获取节点/祖先路径所需的调用次数:

  • 邻接= [超级数]
  • MPTT = 1
  • 路径= 0

获取子节点数所需的调用次数:

  • 邻接= [子级数]
  • MPTT = 0(可以从右/左值计算)
  • 路径= 1

获取节点深度所需的调用次数:

  • 邻接= [超级数]
  • MPTT = 1
  • 路径= 0

需要DB字段:

  • 邻接= 1(父)
  • MPTT = 3(父,右,左)
  • 路径= 1(路径)

结论

除了一个用例之外,存储的路径技术使用与每个用例中的其他技术相同或更少的调用.通过这种分析,存储路径是明显的赢家.更不用说,它实现起来要简单得多,人类可读等等.

所以问题是,不应该将存储路径视为比MPTT更强大的技术吗?为什么存储路径不是更常用的技术,为什么不在给定实例中使用它们而不是MPTT?

另外,如果您认为此分析不完整,请告诉我们.

更新:

这里至少有两件事MPTT可以开箱即用,存储的路径解决方案不会:

  1. 允许计算每个节点的子节点数,而无需任何其他查询(如上所述).
  2. 在给定级别的节点上强加订单.其他解决方案是无序的.

sql data-modeling mptt adjacency-list hierarchical-data

12
推荐指数
1
解决办法
3124
查看次数

(ID/ParentID)列表到分层列表

MyClass包括ID ParentIDList<MyClass>作为Children

我的名单MyClass像这样

ID  ParentID
1   0
2   7
3   1
4   5
5   1
6   2
7   1
8   6
9   0
10  9
Run Code Online (Sandbox Code Playgroud)

输出(分层列表)为 List<MyClass>

1 __ 3
 |__ 5__ 4
 |__ 7__ 2__ 6__ 8
     |__ 11

9 __10
Run Code Online (Sandbox Code Playgroud)

在linq中实现这一目标的最简单方法是什么?
PS:ParentID没有排序

编辑:
我的尝试:

class MyClass
{
    public int ID;
    public int ParentID;
    public List<MyClass> Children = new List<MyClass>();
    public MyClass(int id, int parent_id)
    {
        ID = id; …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-objects list hierarchical-data

12
推荐指数
2
解决办法
2万
查看次数

分层数据模型:邻接列表与嵌套集

我有一个产品目录.每个类别由不同数量(深度)的子类别组成.等级(深层)的数量是未知的,但我确信它不会超过5,6等级.数据变化很少读取.

问题是:什么类型的分层数据模型更适合这种情况.该项目基于Django框架,应该考虑它的特点(管理员i-face,模型处理......).

非常感谢!

database django hierarchy django-models hierarchical-data

11
推荐指数
1
解决办法
6124
查看次数

MongoDB对层次类型查询的适用性

我有一个特定的数据操作要求,我已经解决了如何在SQL Server和PostgreSQL中做.但是,我对速度不太满意,所以我正在调查MongoDB.

描述查询的最佳方法如下.描绘美国的分层数据:国家,州,县,市.假设一个特定的供应商可以为整个加州服务.另一个可能只服务于洛杉矶.可能有数十万个供应商,他们都可以从这个层次结构中的某些点进行服务.我并没有把它与Geo混淆 - 我用它来说明需要.

使用递归查询,可以很容易地获得可以为特定用户提供服务的所有供应商的列表.如果他是在说帕萨迪纳,美国加利福尼亚州洛杉矶,我们会走到层次得到应用的ID,然后查询回落,找到供应商.

我知道这可以优化.同样,这只是一个简单的查询示例.

我知道MongoDB是一个文档存储.这非常适合我的其他需求.问题是它对我描述的查询类型有多适合?(我知道它没有连接 - 这些是模拟的).

我知道这是一个"一段字符串多长时间"的问题.我只是想知道是否有任何人有使用MongoDB做这种事情的经验.从0到测试可能需要一段时间,如果MongoDB不适合这个,我希望节省时间.

当地的电影商店"A"可以在斯普林菲尔德供应Blu-Rays.具有全州分布的连锁店"B"可以向所有IL提供Blu-Rays.按需下载商店"C"可以供应给所有美国用户.

如果我们想要获得伊利诺斯州斯普林菲尔德的所有适用电影供应商,那么答案将是[A,B,C].

换句话说,在层次结构上有许多不同级别的供应商.

hierarchical-data mongodb mongodb-.net-driver

11
推荐指数
1
解决办法
9430
查看次数

数据库中的分层数据:递归查询与闭包表与图数据库

我正在开始一个有一些分层数据的新项目,我正在查看目前存储在数据库中的所有选项.

我正在使用PostgreSQL,它允许递归查询.我还研究了关系数据库的设计模式,比如闭包表,我看了一下图形数据库解决方案,比如neo4j.

我发现很难在这些选项之间做出决定.例如:假设我的RDBMS允许递归查询,那么使用闭包表是否仍然有意义?在可维护性和性能方面,它与图数据库解决方案相比如何?

任何意见/经验将不胜感激!

postgresql rdbms hierarchical-data neo4j transitive-closure-table

11
推荐指数
1
解决办法
3189
查看次数

MySQL中的分层查询

我试图找到任何深度的特定领域的所有父母,祖父母等.例如,给定以下结构,如果我提供5,则返回的值应为1,2,3和4.

| a  | b  |
-----------
| 1  | 2  |
| 2  | 3  |
| 3  | 4  |
| 4  | 5  |
| 3  | 6  |
| 4  | 7  |
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

mysql hierarchical-data

11
推荐指数
1
解决办法
2万
查看次数

Pandas:使用循环和分层索引将多个csv文件导入数据框

我想从目标目录中读取多个CSV文件(具有不同数量的列)到单个Python Pandas DataFrame中,以便有效地搜索和提取数据.

示例文件:

Events 
1,0.32,0.20,0.67
2,0.94,0.19,0.14,0.21,0.94
3,0.32,0.20,0.64,0.32
4,0.87,0.13,0.61,0.54,0.25,0.43 
5,0.62,0.21,0.77,0.44,0.16
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

# get a list of all csv files in target directory
my_dir = "C:\\Data\\"
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
    filelist.append(files)

# read each csv file into single dataframe and add a filename reference column 
# (i.e. file1, file2, file 3) for each file read
df = pd.DataFrame()
columns = range(1,100)
for c, f in enumerate(filelist) :
    key = "file%i" % c …
Run Code Online (Sandbox Code Playgroud)

python csv hierarchical-data pandas

11
推荐指数
1
解决办法
2万
查看次数