首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在数据库中存储数组

在数据库中存储数组
EN

Stack Overflow用户
提问于 2018-05-28 16:32:45
回答 2查看 108关注 0票数 2

我有一个2048个双精度的列表,它们代表了信号中不同样本的振幅。我不断地对信号进行重新采样(例如每秒20次),并希望将数据存储在SQL数据库中。

对信号的一个完整测量如下所示:

代码语言:javascript
复制
List<double> sineCurve = new List<double>();

for (int i = 0; i < 2048; ++i)
{
   sineCurve.Add(50 + 50 * Math.Sin(i / Math.PI));
}

存储此数据的最佳方式是什么?最简单的方法似乎是创建一个包含2049列的表,并将每个测量值存储为一个新行:

代码语言:javascript
复制
string sql = "create table sample( measurement_id int not null, sample_value1 double, sample_value2 double, ... sample_value1 double2048 )"; 

这是存储此类数据的首选方式吗?

编辑:我想运行一个测试,在几天内连续收集数据并保存到数据库中。然后,我想通过在每个样本列表中查找特定模式、最小/最大值等来处理数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-28 19:29:49

我会创建一个类似这样的表,在这个表中,您可以在一个BLOB-entry中存储测量中的所有样本:

代码语言:javascript
复制
CREATE TABLE measurement (id (primary key) ,  generated_at (timestamp), sample (blob), SequenceNr (integer));

然后,如果您想要查找给定时间范围内的测量值,它将类似于:

代码语言:javascript
复制
SELECT m.sample FROM measurement m
WHERE m.generated_at BETWEEN startDate AND endDate
ORDER BY m.SequenceNr;
票数 2
EN

Stack Overflow用户

发布于 2018-05-28 17:17:02

你应该提前知道你想对你的数据运行什么样的查询。在保存记录之前找到这些相关值,并放入单独的字段中。否则,将blob字段中的数组保存为二进制。

如果找到其他查询,则必须通过选择所需的值来重新处理BLOB值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50562182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档