我一直在想一些关于数据冗余的问题,只是想在写完之前把所有东西都写出来(并且仔细检查这个想法是否已经付诸实践)。分布式文件压缩
好的,所以在这里。
互联网充满了冗余数据,包括文本,图像,视频等。因此,通过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