- мы должны быть осторожны и выполнять только в том порядке, в котором были получены заказы
Рыночные данные обычно моделируются в виде временных рядов, следовательно, они естественным образом упорядочиваются по временной метке, которая в настоящий момент достигает точности с точностью до пикосекунды.
В зависимости от того, на какую технологию вы полагаетесь, если вы не возражаете платить за нее, я бы выбрал OneTick , то есть БД временного ряда, в которой уже есть встроенная книга заказов с Закажите глубину / уровень цен, CEP и многое другое.
Если вы хотите создать его самостоятельно (или полагаться на бесплатные продукты), взгляните на OpenTSDB , который является базой данных с временным рядом с открытым исходным кодом и лицензией LGPLv3 +. Конечно, он будет медленнее, чем OneTick, но, поскольку вам просто нужны тысячи (OneTick обрабатывает миллиарды), в зависимости от ваших требований к скорости, он может работать.
Что касается модели данных OrderBook, это будет зависеть от того, как именно вы собираетесь использовать книгу: например, Вы заботитесь о нескольких уровнях цен? Верх книги? Вам нужно сопоставить ставки / запросы с реальными заказами и т. Д.
Но вы можете начать с разработки схемы, которая будет записывать события OrderBook, такие как:
Пример взят из Справочное руководство по протоколу LMAX