Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 所有值都是一个表,还是每个值都有单独的表?_Database Design - Fatal编程技术网

Database design 所有值都是一个表,还是每个值都有单独的表?

Database design 所有值都是一个表,还是每个值都有单独的表?,database-design,Database Design,我们正在设计一个数据库(SQLServer2005)来存储来自我们仪器的测量数据。每秒钟,每个仪器都将返回5个不同的值(所有浮点值)-例如max、min、avg等。在设计数据库时,最好将所有这些值存储在一个表中(每行包含时间戳、类型和值),还是将它们存储在单独的表中(即:avgtable、maxtable、mintable)每一行都包含一个时间戳和值?我们将存储多达100台仪器的数据,这些仪器将一次运行数月,因此数据将变得相当大 一种设计是否比另一种设计提供更好的性能 多谢使用all-in-1表

我们正在设计一个数据库(SQLServer2005)来存储来自我们仪器的测量数据。每秒钟,每个仪器都将返回5个不同的值(所有浮点值)-例如max、min、avg等。在设计数据库时,最好将所有这些值存储在一个表中(每行包含时间戳、类型和值),还是将它们存储在单独的表中(即:avgtable、maxtable、mintable)每一行都包含一个时间戳和值?我们将存储多达100台仪器的数据,这些仪器将一次运行数月,因此数据将变得相当大

一种设计是否比另一种设计提供更好的性能


多谢使用all-in-1表格会更好,否则您必须将表格连接在一起以查看单个测量值,并重复日期时间和其他字段,这也可能导致更大的数据库。加入表格是昂贵的一点。还建议使用主键字段,如bigint标识(1,1)因此,您也可以按ID引用记录,以加快搜索速度。

您最好使用all-in-1表,否则您必须将这些表连接在一起以查看单个测量值,并重复日期-时间和可能的其他字段,这也将导致更大的数据库。加入表格是昂贵的一点。还建议使用主键字段,如bigint标识(1,1),这样您也可以按ID引用记录,以便更快地搜索。

存储每个测量值可能不是一个好主意。大多数(并非所有)时间序列数据具有高度重复性,通常仅记录测量的开始时间和结束时间的变化,或采用其他压缩和编码方法即可


查看Process Historian和复杂事件处理(CEP)系统,了解正在使用的不同系统以及您可以使用的技术。有很多工具和技术用于支持您的场景类型。OSISoft、StreamBase和Oracle CEP是一些可用的软件包。由于您是Microsoft客户,您可能还对Microsoft针对SQL Server的CEP产品感兴趣:StreamInsight。

存储每个度量值可能不是一个好主意。大多数(并非所有)时间序列数据具有高度重复性,通常仅记录测量的开始时间和结束时间的变化,或采用其他压缩和编码方法即可


查看Process Historian和复杂事件处理(CEP)系统,了解正在使用的不同系统以及您可以使用的技术。有很多工具和技术用于支持您的场景类型。OSISoft、StreamBase和Oracle CEP是一些可用的软件包。由于您是Microsoft客户,您可能还对Microsoft针对SQL Server的CEP产品感兴趣:StreamInsight。

如果我将所有内容都存储在一个表中,则每个度量值需要5行,而每行仍需要时间戳和类型标识符。由于收集的数据的性质,并非所有仪器都会返回所有5种数据类型,因此我们不希望一个条目包含5个字段,而是希望数据点有一个条目。把所有的东西都存储在一起还有意义吗?这要看你怎么读。如果您一次只访问一条信息,那么无论如何,每个度量类型使用一个表,那么表名也会告诉您度量的类型。如果您希望一次读取所有5个相关度量值以进行显示或搜索,则1个表(带有时间戳)和5个列(针对5个度量值类型适当命名)以及所有允许为空的列都可以实现。如果我将所有内容存储在一个表中,则每个度量值需要5行,而且每一行仍然需要一个时间戳和一个类型标识符。由于收集的数据的性质,并非所有仪器都会返回所有5种数据类型,因此我们不希望一个条目包含5个字段,而是希望数据点有一个条目。把所有的东西都存储在一起还有意义吗?这要看你怎么读。如果您一次只访问一条信息,那么无论如何,每个度量类型使用一个表,那么表名也会告诉您度量的类型。如果您想一次读取所有5个相关测量值以进行显示或搜索,那么1个带有时间戳的表和5个为5个测量值类型适当命名的列以及所有允许为null的表就可以了。