簡體   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