Я размышлял о избыточности данных и хотел просто выбросить все в письменном виде, прежде чем я продолжу это (и, кроме того, дважды проверить, была ли эта идея уже реализована).Сжатие с распределенным файлом
Хорошо, поэтому здесь идет.
Интернет заполнен избыточными данными, включая текст, изображения, видео и т. Д. В результате в gzip и bzip2 на сжатие и декомпрессию по HTTP в результате много усилий. Крупные сайты, такие как Google и 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
.
Я, вероятно, поставлю щедрость на это (в зависимости от приема), потому что я думаю, что это очень интересная проблема с реальными последствиями.
Не могли бы вы рассказать о том, что именно выполняют функции chunk и comb? – Vitaliy
Просто добавил несколько предложений о том, что именно они делают. –