我一直在想一些關於數據冗餘的問題,只是想在寫完之前把所有東西都寫出來(並且仔細檢查這個想法是否已經付諸實踐)。分佈式文件壓縮
好的,所以在這裏。
互聯網充滿了冗餘數據,包括文本,圖像,視頻等。因此,通過HTTP進行gzip和bzip2即時壓縮和解壓縮的努力已經很多。像谷歌和Facebook這樣的大型網站有整個團隊,致力於讓他們的網頁加載速度更快。
我的「問題」涉及到的事實,壓縮在僅完成每個文件基礎(gzip file.txt
產生file.txt.gz
)。毫無疑問,在互聯網上看似無關的數據之間有許多共同之處。如果可以存儲這些常用塊並將它們(客戶端或服務器端)組合起來以動態生成內容,該怎麼辦?
爲了做到這一點,人們必須在因特網上找到最常見的「數據塊」。這些塊可以是任何大小的(這裏可能是最佳選擇),並且需要能夠表達任何可以想象的數據。
出於說明的目的,假設我們有以下5個常見數據塊 - a, b, c, d, and e
。我們有兩個文件,只有包含這些塊。我們有叫做chunk
和combine
的程序。 chunk
獲取數據,通過bzip2,gzip或其他壓縮算法壓縮數據,並輸出包含所述數據的數據塊(壓縮後)。 combine
展開塊並解壓縮連接結果。下面是他們以何種方式使用:
$ cat gettysburg.txt
"Four score and seven years ago...cont'd"
$ cat test.txt
"This is a test"
$ chunk gettysburg.txt test.txt
$ cat gettysburg.txt.ck
abdbdeabcbdbe
$ cat test.txt.ck
abdeacccde
$ combine gettysburg.txt.ck test.txt.ck
$ cat gettysburg.txt
"Four score and seven years ago...cont'd"
$ cat test.txt
"This is a test"
當發送通過HTTP文件,例如,服務器可以chunk
的數據並將其發送給客戶,誰再有能力combine
分塊的數據,並使其。
有沒有人試過這個?如果不是,我想知道爲什麼,如果是的話,請張貼你如何做這項工作。一個不錯的第一步就是詳細說明你如何弄清楚這些塊是什麼。一旦我們已經想出瞭如何得到這些塊,那麼我們就會弄清楚這兩個程序如何工作,如chunk
和combine
。
我可能會爲此付出代價(取決於接待),因爲我認爲這是一個非常有趣的現實世界問題。
能否詳細說明塊和聯合功能到底是做什麼的? – Vitaliy 2009-12-27 21:47:54
剛剛添加了幾句話,說明他們在做什麼。 – 2009-12-27 21:54:54