- tenemos que tener cuidado y ejecutar sólo en el orden en que se recibieron las órdenes
Los datos del mercado suele seguir el patrón de una forma de series de tiempo, por lo que es, naturalmente, ordenado por una marca de tiempo que llega hasta una precisión de un picosegundo en este momento.
Dependiendo de la tecnología en la que confíe, si no tiene inconveniente en pagarla, iría con OneTick, que es un DB de serie temporal que ya tiene una cartera de pedidos incorporada con un libro de niveles de profundidad/precio , CEP y mucho más.
En caso de que quiera construirlo usted mismo (o confiar en productos gratuitos), eche un vistazo a OpenTSDB que es un código abierto de serie de tiempo DB con una licencia LGPLv3 +. Sería más lento que OneTick, por supuesto, pero como solo necesitas miles (OneTick maneja miles de millones) dependiendo de tus requisitos de velocidad, puede funcionar.
En cuanto al modelo de datos de OrderBook, dependerá de cómo exactamente va a utilizar el libro: p. Ej. ¿te importan los múltiples niveles de precios? ¿Arriba del libro? ¿Es necesario para que coincida con las ofertas/pide a las órdenes reales, etc ..
Pero se puede comenzar con el diseño de un esquema que grabaría eventos cartera de pedidos como:

El ejemplo es de LMAX Protocol Reference Guide