【问题标题】:MySQL v. SQLite for Python based financial web app [closed]MySQL v. SQLite 用于基于 Python 的金融网络应用程序 [关闭]
【发布时间】:2013-01-08 16:35:45
【问题描述】:

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

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

【问题讨论】:

    标签: python mysql sqlite pandas


    【解决方案1】:

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

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

    【讨论】:

    • 当“财务”或“分析”在需求中时,当然不是。
    • @IgnacioVazquez-Abrams:没错。
    • +1。虽然普遍同意答案 - OP 已经说明了他考虑 MySQL 和 SQLite 的原因。在他的情况下,我会投票给 MySQL。
    • 我也怀疑 SQLite 处理所有并发用户的能力。据我所知,它使用锁定,而不是 MVCC 之类的东西。
    • @IgnacioVazquez-Abrams 肯定不是用于金融应用的 SQLite?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        • 2016-04-05
        • 1970-01-01
        相关资源
        最近更新 更多