關於海量資料常用的資料結構

OpenSoucre發表於2014-07-17

資料結構

應用場景

示例

雜湊表

要求所有鍵值對放入記憶體,查詢可以在常數時間內完成。

l  提取某日誌訪問百度次數最多的IP

l  統計不同電話號碼的個數

插入和調整需要O(logn)時間,n為堆元素的個數,而獲取堆頂元素只需要常數時間。

l  求出海量資料前K大的數

l  求海量資料流的中位數

BitMap

通常記錄整數出現的情況,用來快速查詢、數字判重、刪除元素等。

l  統計不同電話號碼的個數

l  2.5億個整數中查出不同重複的整數個數

雙層桶

兩次定址方式以節省記憶體,通常用在求第K大、中位數和數字判重。

l  2.5億整數找出中位數

l  海量資料的第K大的值

反向索引

通過單詞-文件,屬性-實體建索引,方便後序查詢

l  基於關鍵詞的搜尋

l  搜尋框輸入的自動補全

外排

借用硬碟空間實現海量資料排序

l  1GB大小的檔案,每行是一個詞,記憶體1MB,返回頻率最高的100的詞

字首樹

為集合內所有單詞建立字首樹

l  求出熱門的查詢字串

l  求出重複率較高的詞

MapReduce

分散式處理,將資料交給不同機器去處理,劃分資料,然後規約結果

l  海量日誌分析

l  資料探勘

l  智慧推薦系統

相關文章