维护100亿个URL
生活随笔
收集整理的這篇文章主要介紹了
维护100亿个URL
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://s.sousb.com/2011/04/19/%E7%BB%B4%E6%8A%A4100%E4%BA%BF%E4%B8%AAurl/
題目:url地址 比如http://www.baidu.com/s?wd=baidu 的屬性,包括定長(zhǎng)屬性(比如其被系統(tǒng)發(fā)現(xiàn)的時(shí)間)和不定長(zhǎng)屬性(比如其描述)實(shí)現(xiàn)一個(gè)系統(tǒng)a.儲(chǔ)存和維護(hù)100億個(gè)url及其屬性。b.實(shí)現(xiàn)url及其屬性的增刪改。c.查一個(gè)url是否在系統(tǒng)中并給出信息。d.快速選出一個(gè)站點(diǎn)下所有url
提示:因?yàn)閿?shù)據(jù)量大,可能存儲(chǔ)在多臺(tái)計(jì)算機(jī)中。
分析:這是一道百度的筆試題,這道題比較難,筆者只能給出幾個(gè)認(rèn)識(shí)到的點(diǎn)。
- 首先,這些url要經(jīng)過(guò)partition分到X臺(tái)機(jī)器中:考慮使用一個(gè)hash函數(shù)hash(hostname(url))將url分配到X臺(tái)機(jī)器中,這樣做的目的:一是數(shù)據(jù)的分布式存儲(chǔ),二是同一個(gè)站點(diǎn)的所有url保存到同一臺(tái)機(jī)器中。
- 其次,每臺(tái)機(jī)器應(yīng)該如何組織這些數(shù)據(jù)?一種思路是用數(shù)據(jù)庫(kù)的思路去解決,這里提供另外一種思路。考慮將url直接放在內(nèi)存,接將url組織成樹(shù)狀結(jié)構(gòu),對(duì)于字符串來(lái)說(shuō),最長(zhǎng)使用的是Trie tree,由于所占空間由最長(zhǎng)url決定,在這里絕對(duì)不適用,再加上很多url擁有相同的屬性(如路徑等)這樣,使用trie tree 的一個(gè)變種radix tree,相比會(huì)非常節(jié)省空間,并且不會(huì)影響效率。
- 最后,給出了存儲(chǔ)模型,上面的abcd四問(wèn)該怎么回答,這里就不一一解答了。
總結(jié)
以上是生活随笔為你收集整理的维护100亿个URL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 设计海量key-value数据的存储查询
- 下一篇: Map的并发处理(ConcurrentH