我应该在哪里存储匹配的引擎数据?

问题描述 投票:0回答:2

我正在使用 python 研究与匹配引擎相关的特定算法,我想知道在哪里存储数据(orderbook)? 有没有一种快速的方法(读取和写入)数据到存储而不是数据库?考虑到匹配引擎必须快速读取和写入存储位置的数据。

我尝试将数据保存在常用数据库(postgres)中,但它的写入、读取和更新似乎很慢

python database postgresql matching cryptocurrency
2个回答
1
投票

我曾经参与过一个财务匹配引擎。我们可以管理数据量的唯一方法是放弃 dbms。实时数据保存在内存中,订单簿更改的仅附加日志保存在本地文件系统的平面文件中。实际交易存储在一个适当的(强大的)数据库中,但它们比订单变化少几个数量级。

重启时,内存中的订单簿将从日志数据中重建。这是 S.L.O.W.在正常操作中,不需要从存储中读取。我们进行了分片以分散订单簿以保持内存需求可管理,并且每个分片都有多个并行实例以防止重启缓慢。


0
投票

基于语言、算法、数据结构、体系结构等多参数匹配引擎速度。在您的情况下,python 很慢并且没有很好的方法来处理大订单和并发。 Cython 比那更好。正如 Peder Klingenberg 所说,我们不使用 dbms。例如你可以使用这个架构:

为了获得更好的性能,请参阅 LMAX 算法、并发方法和 this 论文。

© www.soinside.com 2019 - 2024. All rights reserved.