繁体   English   中英

分层数据的数据库设计

[英]Database Design for hierarchical Data

我正在尝试设计一个数据库来存储大量的URL。 现在,我想对部分URL之间的不同组合进行计数。 例如,flipkart有多少次男士专区? 翻车了多少次了? 任何想法如何有效地设计?

添加带有索引的“域”列

create table URLS(
    id longint primary key,
    full_url varchar(255), 
    domain varchar(100)
    page_name varchar(100));
create index on URLS (domain);
create table parameters(
    id longint foreign key referencing URLS(id),
    param_name varchar(100),
    param_value varchar(100));

select count(a.full_url)
from URLS a, parameters b
where a.id=b.id
    and (b.param_name='user' and b.param_value='Jack');

您可以使用类似于@rjhdby发布的结构。 但是除此之外,您还需要以编程方式整合所谓的“部分”的URL路径。 根据站点的不同,某些工具的作用不是真的。 因此,您需要一个可以扩展/构建的映射,然后定期进行过滤以确定您认为有用的URL哪些部分。 这可能会自动发生,因为通用部分会重复出现,并且对于该站点的URL是唯一的。 但是,您还需要考虑将身份验证密钥或其他令牌包含在URL中间的站点,并且需要避免这些站点。 它们将始终是唯一的,并且在此分析中没有用。

假设您要针对一组已知的有限站点进行构建,则可以这样做。 但是,如果您说的是,在ISP的入口,您将获得大量的独特站点。 任何映射/过滤以确定其路径的正确唯一部分将是一项艰巨的任务。

作为出现在URL中的“键”的示例,采用Twitter状态: https://twitter.com/aneroidx/status/427684072920342528https://twitter.com/aneroidx/status/427684072920342528链接 )。
在这里,第一部分是domain ,然后是用户名(但不是真正的“ path”),然后是“ status ”(您知道的一部分是要监视的部分),然后是唯一的“ tweet ID”(您不会)考虑一个部分。 因此,您可能需要先确定这些正确的唯一部分,然后再将它们放入数据库中,或者将它们放入原始位置并运行一个单独的程序,以便根据上述过滤器/规则为唯一部分创建正确的条目。

这与分层数据非常相关,因为它与正确过滤URL路径和节有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM