騰訊筆試題 1000億條記錄中查詢內容

2021-08-18 03:46:10 字數 811 閱讀 8652

題目:

有 1000 億條記錄,每條記錄由 url、ip、時間 組成,設計乙個系統能夠快速查詢以下內容:

1、給定url和時間段(精確到分鐘)統計url的訪問次數

2、給定ip和時間段(精確到分鐘)統計ip的訪問次數

請描述你的解決方案!

解答:首先,1000億條記錄全部放到記憶體肯定不夠,那就是分成小檔案了,然後整合;

公共的時間段,因為精確到分鐘,我們把這每一分鐘建成乙個小檔案,每個小檔案肯定會有許多重複的ip,url;

現在統計每個小的檔案中url的訪問量和ip的訪問次數,方法就是建立索引;

(建立索引的目的是為了減少查詢次數,但是隨著索引級數增多也會造成花更多的時間在建立索引上);

建立url的索引,假如是www.nowcoder.com/question,可以分別給www.nowcoder.com和question建立索引,那麼來了一條url,先看一級索引是不是匹配,匹配再看二級索引,相同的話就是我們要的url目標;

ip的索引也是一樣,ip分成4段建立索引;

所以這裡影響效率的就是在索引建立這塊,索引建立好那就是查詢的事了的,就會變得非常快。

假定給定了某個時間段,找出url的訪問量,那麼先找到給定的時間段,對應著剛開始分割的小的檔案(每乙個分鐘)中搜尋,通過索引找到相同的url之後,開始統計,直到搜尋完所有的給定時間段內的所有的小的檔案;

求ip的訪問次數也是一樣,按照給定的時間段,找到對應的小的檔案,通過索引找到相同的ip後統計,直到搜尋完了給定時間段內的所有的小的檔案。

good luck!

write by jimmy.li

從mysql中查最後一條記錄

select from table order by id desc limit 1 mysql select from 表名 or der by 表 id desc limit 1 sqlserver oracle select top 1 from 表名 order by 表 id desc 首...

2019騰訊實習筆試題部分記錄 兩次電話面試筆記

有n層的一座塔,每層高度不一樣,現在小q去爬塔,有如下特性 他爬塔的速度恆定,也就是說爬每一層的用時和這一層的高度成正比。但是他有乙個能力 他可以有一種魔法,這個魔法可以跳過一層或者兩層塔,但是每跳躍一次,都要停下來爬至少一層才能繼續跳躍。需要你規劃出一條方案,讓他能夠最短的時間爬到塔頂 最後如果跳...

sql 查資料庫中時間最新的一條記錄

下策 查詢出結果後將時間排序後取第一條 select from a where create time 2017 03 29 19 30 36 order by create time desc limit 1這樣做雖然可以取出當前時間最近的一條記錄,但是一次查詢需要將表遍歷一遍,對於百萬以上資料查...