【问题标题】:What is the most efficient way to store large arrays of floating point data in mysql for access through django?在mysql中存储大量浮点数据以通过django访问的最有效方法是什么?
【发布时间】:2011-08-15 00:36:33
【问题描述】:

我是一名机械工程师,已经掌握了一些功能性编程知识,但我缺乏透彻的洞察力。我搜索了这个问题的答案,但找不到任何东西。

我正在制作一个 django Web 应用程序来搜索和过滤存储在 mysql 数据库中的测试数据。我的问题是关于存储数据的最佳方法?

数据是大型数字数组,长度可能为 5,000 个值,每个数字看起来像这样 0.000012341245345。这些是从加速度计上进行的测量。我不知道所有这些重要数字有多准确,但我想存储我得到的所有内容。

问题:我会使用哪种 Django 字段类型?该字段不必是可搜索的。我只想在调用时提取数据。

django 中的所有内容似乎都是 unicode。我一直在阅读包装数字作为双精度二进制数。但是,如果我存储一个像 '\x1e1\x1d6\xea\X00a2' 这样的 unicode 字符串,那真的能帮助我降低内存需求吗?

谢谢。任何帮助表示赞赏。

【问题讨论】:

  • 你是只打算读数据,还是想读/写?
  • 输入数据后,只需读取即可。
  • 您是通过 Django 界面输入数据还是网页界面仅用于显示数据?如果您已经在其他地方填充了数据并且只想通过网络显示它,那么这个问题变得非常容易。如果您想通过 Web 界面输入值,这会稍微困难一些。
  • @Nick 我将在别处编写另一个 python 脚本来自动化数据输入,但我一直在使用 django api。我创建了一个 Django 模型,它具有以下字段:signal-a fk reference to a signal_log table、start_time、dt-time increment、title-for reference,以便您可以确定结果与您的查询匹配,以及数据。所以我会使用这样的东西来输入数据:Time_Signals(signal=,start_time=,dt=,title=,data=)。我将如何定义 django 中的 data 文件?我在想这样的事情:data = models.CharField(max_length=20000)? len需要设置吗?

标签: mysql django math binary floating-point


【解决方案1】:

大多数现代系统的内存都绰绰有余,因此在这里不遗余力地节省几个字节,不值得在开发中进行复杂性和投资。

数据库double 对于这样的值来说绰绰有余。显然,有比传感器准确提供的更多有效数字。如果存在某种形式的证据监管链,则将该值存储为字符串。如果需要计算,它可以即时转换为 floatdouble

【讨论】:

  • 是的,现在内存很充裕,但是您建议如何存储这些长长的数字字符串?在 django 中,我需要为每个字段类型设置一个 max_length 吗?
  • Django 通常配置有标准的 SQL 数据库后端。如果您使用字符串,varchar(30) 可能足以满足任何类似的值。否则使用double
  • 我想存储可能包含多达 24,000 个值的整个时间历史。大多数包含大约 2000 个值。因此,作为字符串,典型数组的长度大于 6000 个字符。你会如何设置这个字段?如果你熟悉 Django,我正在考虑 TextField (docs.djangoproject.com/en/1.3/ref/models/fields/#textfield)
  • @sequoia:5k 个值的 24k 个样本是 1.2 亿个值。每个存储为 30 个字节,即只有 3.6 GB。一张 10 美元的存储卡可以轻松容纳它。存储为 8 字节双精度,小于 1 GB。有什么大不了的?
  • 哇,抱歉,我会尽量提高效率
【解决方案2】:

django sn-ps 上有许多 sn-ps 可以帮助你做你想做的事。

http://djangosnippets.org/snippets/1669/

http://djangosnippets.org/snippets/1597/

【讨论】:

  • 谢谢,这是帮助。我会研究这些建议。
  • Rory,我使用了 django sn-p (1669)。它运作良好。我能够存储 numpy 数组,而无需进行逐个值的字符串转换以将数组的内容放入 unicode django 文本字段。如果有人觉得这很有用,这是我从数据库中提取后从 base64 数据中恢复数组的方法:stackoverflow.com/questions/6485790/…
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2021-08-05
  • 2010-10-22
  • 2011-06-05
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多