history - una - si editas un comentario en facebook llega notificacion
¿Cómo almacena uno el historial de ediciones de manera efectiva? (1)
Solo me preguntaba por sitios como stackoverflow y wikipedia, guardan el historial de ediciones indefinidamente y permiten al usuario deshacer las ediciones. ¿Alguien puede recomendar recursos / libros / artículos sobre cómo hacer esto usando cualquier tecnología adecuada (como bases de datos, etc.)?
¡Muchas gracias!
Hay muchas opciones; el más simple, por supuesto, es simplemente registrar todas las versiones de forma independiente. Para un sitio como , donde las publicaciones generalmente no se editan muchas veces, esto es apropiado. Sin embargo, para algo como wikipedia, uno necesita ser más inteligente para ahorrar espacio.
En el caso de wikipedia, las páginas se almacenan inicialmente con cada versión separada, en la tabla de texto . Periódicamente, varias revisiones antiguas se comprimen juntas, luego se empaquetan en un solo campo. Como habrá mucha repetición, ahorrará mucho espacio de esta manera.
Es posible que también desee ver cómo lo hacen algunos sistemas de control de versiones; por ejemplo, subversión usa omitir deltas , donde las revisiones se almacenan como una diferencia de una revisión a mitad de camino del historial. Esto significa que habrá que examinar como máximo O (lg n) revisiones para reconstruir la revisión de interés.
Git, por otro lado, usa algo más similar al enfoque de wikipedia. Las revisiones se almacenan como objetos ''sueltos'' individualmente comprimidos al principio, luego periódicamente git toma todos los objetos sueltos, los ordena de acuerdo con una heurística algo compleja, luego construye deltas comprimidos entre objetos ''cercanos'' y vuelca el resultado como un packfile . La cantidad de revisiones que deben leerse para reconstruir un archivo está limitada por un argumento para el proceso de creación del paquete. Esto tiene la propiedad interesante de que los deltas se pueden construir entre objetos que no están relacionados, en algunos casos.