0

我正在用 Python 构建一个金融应用程序来对证券价格(除其他外)进行时间序列分析。繁重的工作将在 Python 中完成,主要使用 Numpy、SciPy 和 pandas(pandas 有 SQLite 和 MySQL 的接口)。使用 Web 界面呈现结果。将有几百 GB 的数据。

我很好奇在性能、访问数据(查询)的易用性以及与 Python 的接口方面,数据库的更好选择是什么。我已经看过关于 SQLite v. MySQL 的一般优缺点的帖子,但我正在寻找更具体到 Python 应用程序的反馈。

4

3 回答 3

10

正确答案是PostgreSQL。对于大多数平台,它与 MySQL 一样易于安装,但它是一个更好的数据库,尤其是在处理大量数据时,它是对 MySQL 的改进,您正在这样做。

我什至不会开始考虑在 SQLite 中处理几百 GB 的数据。

于 2013-01-24T19:53:18.827 回答
0

SQLite 非常适合嵌入式数据库,但对于一次需要多个进程访问的任何东西来说,它并不是很好。因此,您的申请不能被认真对待。

MySQL 是一个更好的选择。我也同意 Postgres 将是一个更好的选择。

于 2013-01-24T20:16:09.460 回答
0

对于许多面向“研究”的时间序列数据库加载,在数据库中进行尽可能多的分析比将数据复制到客户端并使用常规编程语言对其进行分析要快得多。通过网络复制 10G 比从磁盘读取要慢得多。

关系数据库本身不支持时间序列操作,因此在 MySQL 和 SQLite 中生成像从证券价格中获得安全回报这样简单的东西要么是不可能的,要么非常困难。

Postgres 有窗口操作,其他几个类似关系的数据库也有。权衡是他们每秒不做那么多交易。许多其他人使用 K 或 Q。

我见过的金融服务网络应用程序使用了多个数据库;原始数据存储在“研究”数据库中,这些数据库经过多重索引并为灵活性而设计,而 Web 应用程序直接与内存缓存和更高速的 RDB 交互;权衡是必须将数据从“研究”数据库复制到“生产”数据库。

于 2013-01-25T03:00:58.427 回答