Voy a presionar periódicamente un conjunto de datos basados en texto de una página web a un servidor, probablemente como JSON.¿Cómo presionar diffs de datos (posiblemente JSON) a un servidor?
Por cada inserción, ninguno, algunos o todos los datos pueden haber cambiado. Para reducir la cantidad de datos que tengo que enviar por el cable, me gustaría enviar solo una diferencia de los cambios en cada inserción.
¿Conoce alguna soluciones/herramientas/librerías pre-hechos que:
- construir dinámicamente un diff de JSON como los cambios se hacen a él (para evitar el almacenamiento de oldJson y newJson y haciendo una completa diff every push) escrito en JavaScript (es decir, para el lado del cliente)
- Parche un fragmento existente de JSON con un diff de JSON en el lado del servidor, escrito en cualquier plataforma que no sea Java o .NET^(necesita para ejecutar en Linux, Java no es una opción para el entorno en el que estoy, tampoco lo es Mono).
Además, ¿es esta la mejor manera de resolver este problema en particular? ¿Hay alguna forma mejor de enviar fragmentos de datos de texto?
Editar: Algunas aclaraciones:
- El stucture datos probable sería básicamente una bastante plana (en el sentido de que está conectado hightly por lo que cualquier enlaces serán referencias a base de identificación no los datos anidados reales) colección de nodos. Los nodos contienen una colección de árboles, las hojas de estos árboles contienen datos reales "primitivos", como números, cadenas e Id. La mayoría de los cambios de datos estarán en las hojas.
- La mayoría de los datos de hoja serán muy pequeños (primativos o menos que un párrafo de texto) pero algunos serán muy largos (páginas de texto "enriquecido").
- Por el momento podemos considerar esto estrictamente uno-a-uno, es decir, solo hay un cliente conectado (en lectura/escritura) a cualquier estructura de datos en particular.
- Sería bueno mantener el servidor lo más bajo posible en términos de complejidad, la idea es alejarse de tener un servidor tanto como sea posible. Mientras que HTML5 está todavía en su mayoría no soportado todavía necesito uno para almacenar datos con aunque ...
^ Eso que se puede esperar en alojamiento compartido al azar. Estoy hablando de tus buenos amigos PHP, Python, PERL, Ruby, esos fullas. O, algo que podría instalarse fácilmente en el alojamiento compartido aleatorio.
Cualquier plataforma no Java o .NET? ¿Qué hay de REBOL? – BobbyShaftoe
@Bobby ... ok, tal vez solo de idiomas de los que he oído hablar. Puesto actualizado ... – SCdF
@Bobby, en realidad, después de leer acerca de REBOL no estoy seguro de si realmente bromeas allí. No dude en dar una respuesta con REBOL, siempre y cuando comience con la diferenciación en JS – SCdF