这是一个概念层面的问题。
我正在构建一个小规模的算法交易软件,我想知道我应该如何在该系统中设置数据收集/检索。系统应该是完全自主的。
目前我想要实时交易的算法是在非常低的频率上进行交易,但是我希望将来能够以更高的频率进行交易,因此我认为使用websocket设置数据收集将是一个好主意,以便立即获得实时交易。如果需要,我可以在以后汇总这些内容。
我的第一个问题是:考虑到数据将是实时的,我是否可以在开始时使用CSV文件进行存储,或者您是否会建议使用更实质性的文件?
在任何情况下,数据收集都将作为我的应用程序中的一个守护进程进行。
我的第二个问题是:有没有可用的框架来处理实时传入的数据,以保持数据库不变,而其余的软件正在查询它,以避免冲突?
我的第三个也是最后一个问题是:您认为在这种情况下使用websocket是一种明智的方法,还是每次应用程序需要数据时查询都会更好?
发布于 2019-06-26 17:54:10
CSV是一种很好的交换格式,但由于它是基于文本文件的,所以不适合实时更新。这只是我的观点,但我想不出比数据库更喜欢它的理由。
为了处理实时冲突,您稍后将需要一个专业等级数据库。PostgreSQL有着健壮的名声,MariaDB可能也是一个正确的选择。您可以在像SQLite这样的开发模式下使用公升数据库,但要注意其中的细微差别:很容易编写在一个数据库上可以工作,但在另一个数据库上会崩溃的代码。另一方面,如果跨数据库的可移植性很重要,那么您至少应该使用两个数据库:一个在开发时,另一个在集成时。
一个要立即问自己的问题是,您是想要关系数据库还是noSQL数据库。前者确保ACID (原子性、一致性、隔离性、持久性)事务,后者提供更大的可扩展性。
发布于 2019-06-28 20:17:19
作为算法交易的主要参与者之一,曼氏集团已经开放了他们的名为Artic的数据存储,这是专门为时间序列和节拍数据设计的。你可以在here上找到它。
https://stackoverflow.com/questions/56769559
复制相似问题