38 votes

Comment stocke-t-on l'historique des modifications efficacement?

Je me demandais juste pour des sites comme stackoverflow et wikipedia, ils stockent indéfiniment l'historique des modifications et permettent à l'utilisateur d'annuler les modifications. Quelqu'un peut-il recommander des ressources / livres / articles sur la façon de procéder à l'aide de toute technologie appropriée (telle que des bases de données, etc.)?

Merci beaucoup!

21voto

bdonlan Points 90068

Il y a un certain nombre d'options; le plus simple, bien sûr, étant de simplement enregistrer toutes les versions de façon indépendante. Pour un site comme stackoverflow, où les postes ne sont généralement pas édité de très nombreuses fois, ce qui est approprié. Toutefois, pour quelque chose comme wikipédia, il faut être plus malin pour économiser de l'espace.

Dans le cas de wikipédia, les pages sont d'abord stockées avec chaque version séparée, dans le texte de la table. Périodiquement, un certain nombre de révisions antérieures sont comprimées ensemble, puis emballé dans un seul champ. Car il y aura beaucoup de répétitions, vous économisez beaucoup d'espace de cette façon.

Vous pouvez également regarder comment certains systèmes de contrôle de version de le faire - par exemple, subversion utilise ignorer les deltas, où les révisions sont stockées sous la forme de différence à partir d'une révision à mi-chemin de l'histoire. Cela signifie que l'on devra examiner au plus O(lg n) révisions de reconstruire une révision de l'intérêt.

Git, d'autre part, utilise quelque chose de plus semblable à celle de wikipédia de l'approche. Les révisions sont stockés en tant individuellement compressé "lâche" des objets, d'abord, puis périodiquement git prend tous les objets en vrac, les trie selon une certaine complexité heuristique, puis génère des compressé deltas entre "proximité" des objets et retourne le résultat sous la forme d'un packfile. Le nombre de révisions qui doivent être lus à la reconstruction d'un fichier délimité par un argument du pack processus de construction. Ce qui a la propriété intéressante que les deltas peuvent être construits entre les objets qui ne sont pas liés, dans certains cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X