用于存储传感器测量的数据库方案

问题描述:

我想读取不同的生物传感器以及平板传感器数据并将它们存储在SQL数据库中。生物传感器数据是例如皮肤电导率,心率,心率变异性等。这些只是数字(与一个单位)。关于平板电脑传感器数据,我有触摸输入,加速度,前凸轮,触控笔输入等。基本上这些也只是除了手写笔和前凸轮之外的其他数字。用于存储传感器测量的数据库方案

关于我想创建一个表中的列时间戳用户ID片剂ID传感器ID单元的SQL数据库方案。的关键将是(时间戳用户ID片剂ID传感器ID),因为可以有在同一时间不同的传感器的测量值。我使用平板电脑记录所有传感器值(也是生物传感器数据),因此总是有平板电脑ID。这也意味着数据库在平板电脑上保留。我正在使用Android。

我不知道这些是否合理。也许每个传感器都有一个单独的表格会很好。你会如何制定这样一个计划,或者是否有另一个提出一个好计划的建议?

其次,我应该如何存储手写输入和前置摄像头(视频)录制?我想将视频记录不是存储在数据库中,而是存储在外部,然后以某种方式将数据库链接到该外部文件(例如通过文件名)。

将会有大量的数据存储。我将在60分钟内收集传感器数据,并且每秒都会写入几个值(例如,对于生物传感器数据每1/10秒就有一个新值)。所以这可能是数据库变得太大或太慢的问题。顺便说一下,我只想写入数据库。读取数据库我会在第二个(离线)步骤中完成。

+0

您的桌子是否需要钥匙?据推测,你只是存储一大堆数据,该数据不会从任何其他表中引用... –

+0

@RB。是的,只有一张桌子我不需要钥匙,但正如我写的,我正在寻求一个更好的方案与多个表。 – machinery

+0

@ dan1111触控笔和前置摄像头输入不仅仅是数字。 – machinery

我会倾向每个传感器的单独表格。原因:

  • 它似乎并不像你通常要分析的数据不同的传感器一起,因为它们代表了不同的东西。
  • 您不必存储设备或传感器ID。如果您正在处理大量传感器读数 - 特别是在存储有限的平板电脑环境中,存储节省可能会很大。
  • 如果您尝试以高速率从多个不同传感器插入记录,则共享表可能存在锁定问题

我还会创建一个表来捕获与设备的一个交互周期。我们称之为“会话”。

这将为其他表格提供一个关键字,还允许您定义视频和手写笔数据文件与该会话关联的内容。

所以,你会是这样的:

session (
    session_id, 
    user_id, 
    tablet_id, 
    video_file, 
    stylus_data_file, 
    session_start_time, 
    session_end_time, 
    ... any other session-level data ... 
) 

然后为每个传感器有一个表,如:

heart_rate_readings (
    session_id, 
    timestamp, 
    value 
) 

注:我不知道有足够的了解手写笔数据给出明智的意见。上面假设它将被存储在一个单独的文件中。但是,如果它只是您接收的坐标流,则可以考虑将其存储在数据库中的单独表中。

+0

非常感谢你的回答。我应该使用交易(如果是,何时提交)还是应该将每个传感器读数放入一个交易中?其次,我应该为处理数据库的每个传感器使用一个线程(插入新行)? – machinery

一些想法:

我假设每个传感器的数据总是使用相同的单位。也就是说,如果今天传感器#7以欧姆为单位给出一个值,明天它不会以毫米为单位给出一个值。更合理的是,我想可能会有一些设置让你在英寸和厘米之间切换等等。但是如果单位总是相同,那么不要将单位存储在同一个表中。有一个单独的“传感器”表,为传感器提供单元,可能还包括有关传感器的其他信息,如名称。

是否每个传感器都有一个表格或每个传感器有单独的表格:一个表格的巨大优势是,如果添加新的传感器,则不必更改模式,只需要数据:添加记录传感器表,你就完成了。如果有很多数据,这个表格可能会变大。但是每个记录都非常小:我认为传感器ID和平板电脑ID可以是int。用户ID可能是一个int或一个GUID。

我从来没有试图将视频存储在数据库中。我存储了图像,与其他数据相比,这些图像非常庞大。视频通常至少为兆字节。我的直觉就是将它们存储为单个文件并存储文件名。我会很乐意屈服于任何想要将视频添加到数据库中的人,并且可以说出结果。

+0

我是否应该使用交易(如果是,何时提交)还是应该将每个传感器读数放入一个交易?其次,我应该为处理数据库的每个传感器使用一个线程(插入新行)? – machinery

+0

我猜测传感器读数是独立有效的。我的意思是,如果你得到心率,但由于某种原因系统无法获得血压,心率可能仍然是一个很好且有用的测量。假设这是事实,它们不应该是交易。如果只有一起阅读才有意义,则可能存在交易的情况。使用交易的正常原因是为了防止不一致的状态,就像试图在两个账户之间转移资金一样,所以你从一个账户中扣除,但是然后未能尝试添加到另一个账户中,所以现在这些钱... – Jay

+0

...刚刚消失。 – Jay