Python金融Web应用中MySQL与SQLite的选择
我正在用Python开发一个金融应用,主要是对证券价格进行时间序列分析(还有其他功能)。这个应用的主要计算工作会用到Python中的Numpy、SciPy和pandas库(pandas可以和SQLite以及MySQL数据库连接)。我还会做一个网页界面来展示结果。预计会有几百GB的数据。
我想知道在数据库的选择上,哪个更好,主要考虑性能、数据访问的方便性(查询)以及和Python的兼容性。我看到过关于SQLite和MySQL的一般优缺点的讨论,但我更想要一些针对Python应用的具体反馈。
3 个回答
对于很多以“研究”为导向的时间序列数据库来说,直接在数据库里进行分析要比把数据复制到客户端再用普通编程语言分析快得多。因为在网络上复制10G的数据要比从硬盘读取慢得多。
关系型数据库本身不支持时间序列操作,所以在MySQL和SQLite中,像从证券价格计算证券收益这样简单的事情,要么做不到,要么非常困难。
Postgres有窗口操作,其他一些类似的关系型数据库也有;不过这样做的代价是它们每秒能处理的事务数量会少一些。还有很多其他数据库使用K或Q。
我见过的金融服务网页应用使用了多个数据库;原始数据存储在“研究”数据库中,这些数据库有多个索引,设计得很灵活,而网页应用则直接与内存缓存和更快的关系型数据库交互;这样做的代价是数据需要从“研究”数据库复制到“生产”数据库。
SQLite非常适合用在嵌入式数据库中,但如果你的应用需要多个进程同时访问数据库,它就不太合适了。因此,不能把它当作你应用的主要选择。
MySQL是一个更好的替代方案。我也认为Postgres会是一个更棒的选择。
正确的答案是 PostgreSQL。对于大多数平台来说,安装它和安装MySQL一样简单,但它是一个更好的数据库,尤其是在处理大量数据时,比MySQL更出色,而你正是需要处理这样的数据。
我甚至不想考虑在SQLite中处理几百GB的数据。