我有一个数据库(MySQL),用于存储来自IoT设备的传感器数据。数据以JSON格式发送到我的API。 数据包含两种类型的数据: 字符串和整数
现在我想存储数据,但是我不知道最好的方法是什么。考虑到性能。该系统将来会变得相当大。数百个设备每10秒发送一次数据。 数据的大部分是整数。字符串数据仅占10%。 我期望数据库中有数百万行。我有一个原型正在运行,它在过去6个月中使用10台设备累积了7000万行数据(现在只有整数)。
我正在扩展系统以存储字符串,因此是我的问题。
现在我可以创建两个表:一个用于整数数据,另一个用于字符串数据,如下所示:
| id | device_id | name | int_value |
| id | device_id | name | string_value |
或者我应该创建一个带有指示数据类型的标志的表:
| id | device_id | name | int_value | string_value | type |
就我的模型而言,最后一个选项更友好。然后我可以做:
$model->data->foobar
foobar是字符串还是int都没关系。
但是,当想到性能时,这可能是一个糟糕的设计?还是不?
否则,我必须检查要检索的数据类型,然后在右表中查找它:
$model->intdata->foobar
or
$model->stringdata->foobar
您认为最好的方法是什么?在性能和数据存储方面。表格上的额外字符串列是否不浪费空间?
可扩展性如何?我现在有两种类型,但是假设将来我还会得到浮动数据吗?在第一种方法中,我必须创建一个新表。 在第二种方法中,我可以创建一个额外的列和一个新的类型定义。