在Django中,存储大型浮点数数组以便通过MySQL进行访问的最有效方式是什么?
在Django中,存储大型浮点数数组以便通过MySQL进行访问的最有效方式是什么?
我是一名机械工程师,懂一些编程的基本知识,但缺乏深入的了解。我搜索了这个问题的答案,但没有找到任何相关信息。
我正在制作一个Django网络应用程序,用于搜索和筛选存储在MySQL数据库中的测试数据。我的问题是关于如何最好地存储这些数据?
这些数据是大型的数字数组,可能有5,000个值的长度,每个数字看起来像这样0.000012341245345。这些是从加速度计上获取的测量数据。我不知道所有这些有效数字有多准确,但我想把获取到的所有数据都存储起来。
问题:我应该使用哪种Django字段类型?这个字段不需要可搜索性,我只是想在调用时提取数据。
在Django中,似乎所有东西都是unicode的。我一直在阅读关于将数字打包为双精度二进制数的内容。但如果我存储一个像这样的unicode字符串'\x1e1\x1d6\xea\X00a2',这样做真的能帮助我减少内存需求吗?
谢谢。感谢任何帮助。
在Django中,有一些代码片段可以帮助你实现你想要的功能。其中一个是http://djangosnippets.org/snippets/1669/,另一个是http://djangosnippets.org/snippets/1597/。这些建议很有帮助,我会研究一下。
Rory,我使用了这个Django代码片段(1669),效果很好。我能够存储numpy数组,而不需要将数组的内容逐个转换为字符串,然后将其放入Unicode的Django文本字段中。如果有人觉得有用的话,我在这里分享一下从数据库中取出base64数据后如何将其恢复为数组的方法:stackoverflow.com/questions/6485790/…
最有效的方法是在MySQL中存储大型浮点数据数组以通过Django进行访问?
现代系统的内存通常足够,因此在这里节省几个字节并不值得复杂和开发投资。
对于这样的值,数据库的double已经足够。显然,有效数字远远超过传感器能够提供的准确值。如果存在某种证据的责任链,那么将该值存储为字符串。如果需要进行计算,它可以在需要时转换为float或double。
是的,现在的内存很充裕,但是您如何建议存储这些长字符串的数字?在Django中,我需要在每个字段类型上设置max_length吗?
Django通常配置了一个标准的SQL数据库后端。如果您选择使用字符串,则varchar(30)
可能足够存储任何这样的值。否则,请使用double
。
我想存储可能包含多达24,000个值的完整时间历史记录。大多数包含约2000个值。因此,作为字符串,典型数组的长度大于6000个字符。您会如何设置此字段?如果您熟悉Django,我正在考虑使用TextField(docs.djangoproject.com/en/1.3/ref/models/fields/#textfield)
:24k个样本,每个样本包含5k个值,共计1.2亿个值。以每个样本30字节的存储,只需3.6 GB。一个10美元的存储卡可以轻松容纳。以8字节的double存储,不到1 GB。有什么大不了的?
哇,抱歉,我只是尝试更加高效一些。