【问题标题】:SQL database structure for time series data type时序数据类型的 SQL 数据库结构
【发布时间】:2020-08-05 04:38:56
【问题描述】:

我想知道是否有人可以抽出一分钟时间对我的数据库结构设计提出一些建议。

我有时间序列格式 (10Hz) 的传感器数据(例如温度、湿度……),它们安装在不同城市不同房屋的不同楼层。所以让我们这样说:

*City Paris-->House A -->Floor 1 --> Sensor Humidity & temp --> csv 文件,包含小时、天、年的时间序列

City Paris-->House B -->Floor 3 --> Sensor Humidity --> csv 文件,包含小时、天、年的时间序列*

所以现在我想回答这些问题: 1-存储数据A sql数据库的最有效方法是什么? 2-将时间戳数据存储在sql数据库中但将传感器数据存储在CSV文件中然后将它们链接到sql数据库是否有意义? 3- 可扩展性和添加新传感器的可能性如何?

非常感谢您提前提供的帮助和建议,

【问题讨论】:

    标签: mysql sql database time-series


    【解决方案1】:

    至少你不应该一次将数据库中的 csv 保存为 varchar 或 text。你应该把一切都分解成尽可能小的部分。我的建议是你先创建一个这样的表

    CREATE TABLE measurements (measurement_id INT PRIMARY KEY, floor_id INT, type VARCHAR(50), value FLOAT)
    

    然后为楼层创建一个表

    CREATE TABLE floors (floor_id INT PRIMARY KEY, building_id INT, floor_name INT)
    

    至少与建筑物的连接

    CREATE TABLE buildings (building_id INT PRIMARY KEY, building_name VARCHAR(200), building_city VARCHAR(200))
    

    您应该创建从floors.floor_idmeasurements.floor_idbuildings.building_idfloor.building _id 的外键。

    如果你愿意,你甚至可以分解成更多的表格来拥有自己的城市和/或地址。

    【讨论】:

    • 谢谢克劳斯。所以您是否也同意 CSV 文件可以作为链接存储在单独的文件中?您如何看待时间序列数据库(例如 MongoDB)?对于这些类型的数据,这是一个更好的选择吗?
    【解决方案2】:

    如果您的目标是运行时间序列分析,我建议您分解数据,以便每个读数都在一行中并使用时间序列数据库。

    前面提出的架构很好。但我个人认为将数据存储在 3 个表中过于复杂,因为您需要跨 3 个不同的表编写/检查约束,并且您的大多数查询都需要 JOIN 子句。

    有一些方法可以简化此架构,例如利用 QuestDB 中的 symbol 类型。 Symbol 将重复的字符串存储为整数映射。表面上你是在操作字符串,但是存储成本和操作复杂度是 int 的。

    这意味着您可以将所有数据存储在一个更简单的表中,而不会降低性能或存储空间。这将简化您只写入一个表时的摄取,并通过消除执行多个连接的需要来简化查询。

    这是 DDL 的样子。

    CREATE TABLE measurements (
    id INT,
    ts TIMESTAMP,
    sensor_name SYMBOL,
    floor_name SYMBOL,
    building_name SYMBOL,
    building_city SYMBOL,
    type SYMBOL,
    value DOUBLE
    ) timestamp (ts)
    

    如果您想添加更多传感器或建筑物,您只需写入同一张表即可。

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 2018-01-27
      相关资源
      最近更新 更多