加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库设计 – 什么是最有效的方式来存储和查询树?

发布时间:2020-12-12 08:32:59 所属栏目:MsSql教程 来源:网络整理
导读:我需要分析1 TB的Web访问日志,特别是我需要分析有关URL(子分支)的请求的URL和子集的统计信息.如果可能的话,我希望查询能够快速地覆盖数据的小数据集(例如1000万个请求). 例如,给定访问日志,请求以下URL: /ocp/about_us.html/ocp/security/ed-209/patches/urg
我需要分析1 TB的Web访问日志,特别是我需要分析有关URL(子分支)的请求的URL和子集的统计信息.如果可能的话,我希望查询能够快速地覆盖数据的小数据集(例如1000万个请求).

例如,给定访问日志,请求以下URL:

/ocp/about_us.html
/ocp/security/ed-209/patches/urgent.html
/ocp/security/rc/
/ocp/food/
/weyland-yutani/products/

我想做一些查询,如:

>计算“/ ocp”下面的所有内容的请求数.
>与上述相同,但只计数/ ocp / security下的子节点请求
>返回前5个最常请求的URL.
>与上述相同,除了任意深度的组外,

例如对于上面的最后一个查询,数据的深度2将返回:

2: /ocp/security/
1: /ocp/
1: /ocp/food/
1: /weyland-yutani/products/

我认为理想的方法可能是使用列DB并对URL进行标记,以便URL中的每个元素都有一列.但是,如果可能的话,我真的很想找到一个开源应用程序的方法. HBase是一种可能性,但查询性能似乎太慢,无法用于实时查询(同样,我也不希望重新实现SQL)

我知道有这样的分析的商业应用程序,但由于种种原因,我想自己实现这一点.

解决方法

在将关键数据库之前设计分层数据结构投入太多时间之前,请考虑在Bill Karwin的优秀演示文稿“SQL反模式”中阅读 “Naive Trees” section (starting at slide 48). Bill概述了开发层次结构的以下方法:

>路径枚举(幻灯片55)>嵌套集(幻灯片58)>关闭台(幻灯片68)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读