【问题标题】:Python, computationally efficient data storage methodsPython,计算效率高的数据存储方法
【发布时间】:2016-09-11 19:05:52
【问题描述】:

我正在通过来自服务器的 http 请求检索结构化数字数据(浮点数 2-3 个小数位)。数据以一组数字的形式出现,然后将其转换为数组/列表。然后我想将每组数据本地存储在我的计算机上,以便我可以进一步对其进行操作。

由于需要收集的这些数据集非常多,简单地将每个数据集写入 .txt 文件似乎效率不高。另一方面,我知道有各种解决方案,例如 mongodb、python 到 sql 接口……等等,但我不确定我应该使用哪个解决方案,以及哪种解决方案最适合和最有效。

此外,创建的数据库必须能够与不同语言(例如 MATLAB)进行交互和查询。

【问题讨论】:

  • 你在处理什么样的数据?它有多大?
  • 温度数据。每个数据集代表一个完整的 24 小时测量周期。总体而言,大约有大约 300 万个数据集,每个数据集大约有 500-1000 个数字,具体取决于该特定集合的测量频率@AnthonyE

标签: python sql arrays mongodb database


【解决方案1】:

如果您只是想将它存储在某个地方以便 MATLAB 可以使用它;从数据库supported by matlab 中选择您的选择,然后为该数据库安装适当的 Python 驱动程序。

Python 中的所有数据库都有一个标准 API(称为 dbapi),因此有一种统一的方式来处理数据库。

由于您没有告诉我们以后打算如何处理这些数据,因此很难提供任何进一步的细节。


我的想法是我希望基本上将所有数据下载到 我的机器,以便我以后可以在本地对其进行操作(运行分析 并对其执行某些数学运算)而不是 不断地从服务器调用它。

为此,您可以使用从文本文件到 MATLAB 支持的任何数据库的任何存储机制 - 因为 MATLAB 支持的所有数据库都受 Python 支持。

您可以选择将数据存储为“文本”,然后在应用程序端(即 MATLAB 端)进行数值计算。或者您可以选择将数据存储为数字/浮点数/小数(取决于您需要的精度),这将允许您在数据库端进行一些计算。

如果您只想将其存储为文本并在应用程序端进行计算,那么最简单的选择是 mongodb,因为它是无模式的。您会将数据存储为 JSON - 这可能是从 Web 检索到的格式。

如果您希望利用某些数学函数或其他功能(例如地理空间计算),那么更好的选择是您熟悉的传统数据库。您必须创建一个模式并为每个传入数据对象定义数据类型;然后适当地存储它们以利用数据库的查询功能。

【讨论】:

  • 这个想法是,我希望基本上将所有数据下载到我的机器上,以便以后可以在本地对其进行操作(运行分析并对其执行某些数学运算),而不必调用它从服务器不断。 @BurhanKhalid
  • 感谢您的回复,您说的传统数据库是什么意思?能给我举个例子吗? @BurhanKhalid
  • Oracle、SQL、Postgresql 等关系型数据库。
【解决方案2】:

我可以推荐使用像peewee 这样的轻量级 ORM,它可以使用多个 SQL 数据库作为存储方法。然后就变成了选择你想要的数据库的问题。使用的最简单的数据库是 sqlite,但如果您认为切换到另一个数据库(如 PostgreSQL 或 MySQL)不够快,那是微不足道的。

ORM 的优点是可以使用 Python 语法与 SQL 数据库进行交互,而不必学习任何 SQL。

【讨论】:

    【解决方案3】:

    您考虑过 HDF5 吗?它对于数值数据非常有效,并且受到 Python 和 Matlab 的支持。

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 2014-01-23
      • 2012-05-02
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多