gpt4 book ai didi

database-design - 存储和查询树的最有效方法是什么?

转载 作者:行者123 更新时间:2023-12-04 01:43:38 26 4
gpt4 key购买 nike

我需要分析 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 的业务)

    我知道有一些商业应用程序可以进行这种类型的分析,但出于各种原因,我想自己实现这一点。

    最佳答案

    在花费太多时间在关系数据库之上设计分层数据结构之前,请考虑阅读 "Naive Trees" section (starting at slide 48)在 Bill Karwin 的精彩演讲 SQL Anti-Patterns Strike Back 中。 Bill 概述了以下开发层次结构的方法:

  • 路径枚举(幻灯片 55)
  • 嵌套集(幻灯片 58)
  • 闭合表(幻灯片 68)
  • 关于database-design - 存储和查询树的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/836833/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com