Je réfléchissais à la redondance des données et je voulais juste tout écrire avant de continuer (et de vérifier si cette idée a déjà été mise en pratique)).Compression de fichiers distribués
Très bien, alors voilà. Internet est rempli de données redondantes, y compris du texte, des images, des vidéos, etc. La compression et la décompression à la volée de gzip et de bzip2 sur HTTP ont donc nécessité beaucoup d'efforts. De grands sites comme Google et Facebook ont des équipes entières qui consacrent leur temps à faire charger leurs pages plus rapidement.
Ma « question » se rapporte au fait que la compression est effectuée uniquement sur un par fichier base (gzip file.txt
cède file.txt.gz
). Sans aucun doute, il existe de nombreux points communs entre des données apparemment sans rapport avec l'Internet. Et si vous pouviez stocker ces fragments communs et les combiner, côté client ou côté serveur, pour générer dynamiquement du contenu? Pour ce faire, il faudrait trouver les «morceaux» les plus communs de données sur Internet. Ces morceaux peuvent être de n'importe quelle taille (il y a probablement un choix optimal ici) et, en combinaison, ils devraient être capables d'exprimer n'importe quelle donnée imaginable. À titre d'exemple, supposons que nous ayons les 5 blocs de données communs suivants: a, b, c, d, and e
. Nous avons deux fichiers qui seulement contiennent ces morceaux. Nous avons des programmes appelés chunk
et combine
. chunk
prend des données, les compresse via bzip2, gzip ou un autre algorithme de compression, et sort les blocs qui contiennent les données (après compression). combine
étend les morceaux et décompresse le résultat concaténé. Voici comment ils pourraient être utilisés:
$ 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"
Lors de l'envoi d'un fichier par HTTP, par exemple, le serveur pourrait chunk
les données et l'envoyer au client, qui a alors la capacité de combine
les données CHUNKED et rendre .
Quelqu'un at-il essayé avant? Si non, je voudrais savoir pourquoi, et si oui, s'il vous plaît poster comment vous pourriez faire ce travail. Un bon premier pas serait de détailler comment vous pourriez comprendre ce que ces morceaux sont. Une fois que nous avons trouvé comment obtenir les morceaux, alors nous comprenons comment ces deux programmes, chunk
et combine
, pourraient fonctionner.
Je vais probablement mettre une prime sur ceci (selon la réception) parce que je pense que c'est un problème très intéressant avec des implications du monde réel.
Pourriez-vous élaborer sur ce que font exactement les fonctions chunk et combine? – Vitaliy
Juste ajouté quelques phrases sur ce qu'ils font exactement. –