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

題目:

有 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






發佈了74 篇原創文章 · 獲贊 76 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章