我正在通过 MNE Python 读取多组科学数据(EEG 数据的欧洲数据文件文件)。每个 EDF 都可以使用包含时间基准的 Numpy 数组读取,例如 0.00、0.01、0.02、0.03... 和通道数,每个 Numpy 数组表示沿该时间基准的测量值 [-3.00, 4.40, 2.20, 3.40] 用于通道“FZ-CZ”,[1.24, 1.34, 1.00, 3.11] 用于通道“CZ-PZ”。这些频道具有在记录中唯一的文本标签,但可能因记录而异。
背景
我的非理想想法是将这些放在普通 Postgres DB 中的表中,但通道标签可能不一致,对于具有数十个通道的文件来说,这将是几分钟的很多行. 也许有一个“频道”表,我可以在其中保留所有文件的所有频道的运行列表并避免重复,但这再次违背了我的更好判断。
|PatientId|Channel|Time|Voltage|
--------------------------------
| 1| FZ-CZ |0.00|-3.00 |
| 1| FZ-CZ |0.01| 4.40 |
| ... | ... |... | ... |
| 1| CZ-PZ |0.00| 1.24 |
| 1| CZ-PZ |0.01| 1.34 |
更让我不寒而栗的是,为不同的记录提供不同的表格,其中包含可变数量的列,这些列由通道的电压值组成。
我找到了一篇关于欧洲数据文件主题的完整论文(链接直接下载 PDF),这似乎鼓励使用将这些跟踪作为二进制数据存储在表中。我不介意将此作为次要选项,但我希望能够直接查询数据。
在搜索该站点时,我发现以下 3 个问题很有帮助,并且更倾向于寻求时间序列数据库解决方案。 时间序列科学数据的设计选项
科学数据设计。具有数百列的数据表或具有通用值列和数百行 (EAV) 的数据表?
问题
从那一点研究中,我决定追求像QuestDB或Timescale甚至 Amazon Timestream 这样的东西,但似乎所有这些解决方案都面向 a.) 每个数据点都有准确的时间戳(比如“01/01/ 2022 00:00") 和 b.) 在进行测量时将数据点增量添加到表中。否则,这些解决方案似乎是存储此类数据的理想选择。
除了将我的数据的相对时间点转换为绝对时间戳之外,有没有办法让它与时间序列数据库一起使用?如果不是,我是否“卡住”了将这些数据存储为字节/blob,甚至像 JSON 这样的数据存储在表中,甚至只是将文件保存在 S3 存储桶中并根据需要读取/写入它们?
根据此处的时间刻度文档,时间刻度还支持整数值: