En primer lugar, soy consciente de la pregunta tan relacionada ¿Cuál es una estructura de datos eficaz para modelar la cartera de pedidos? pero mi pregunta es un poco diferente aquí.
Quiero guardar los estados del libro de órdenes tras la llegada de cada mensaje, lo que incluye añadir, cancelar y operaciones. Por ejemplo, supongamos que estamos utilizando un B-Tree con listas de doble enlace, después de cada mensaje voy a serializar a disco.
Estas operaciones se realizan fuera de línea mediante la reproducción de datos históricos, por lo que no me preocupa demasiado el rendimiento y no necesito implementar la correspondencia yo mismo. Mi objetivo principal es poder recuperar rápidamente el aspecto de la cartera de pedidos a partir de un mensaje específico y generar una instantánea en futuras investigaciones, de modo que no tenga que reproducir todos los datos cada vez.
Por lo tanto, me interesa sobre todo cómo guardar eficazmente estos estados de la cartera de pedidos para lograr un uso reducido del disco y una carga rápida. Para algunos instrumentos líquidos podría haber millones de mensajes y parece poco realista guardar todas las instantáneas, especialmente cuando son altamente redundantes y correlacionadas en serie. Estoy pensando en guardar sólo los cambios de los libros de órdenes como secuencias como algo así como "precio 100 + vol 1000, precio 101 - vol 100", pero entonces sería dependiente de la ruta.
¿Alguna sugerencia?