基于gsCurrentTime()的GridDB时序容器Rowkey
Rowkey for time-series container of GridDB based on gsCurrentTime()
我有来自各种传感器的输入,每个传感器只产生一两行输入,因此为每个传感器创建一个新容器毫无意义。数据按不应丢失的顺序出现,因此我考虑过在输入行出现时枚举并相应地分配数字。然后我想提供有关数据输入之间间距的其他信息。在首先将 id 调整为不再是连续的之后,我现在将时间戳视为行键,并在将数据写入一行时分配它们。我发现关于其他数据库的提及可能会导致问题,因为数据现在包含的信息在技术上与它没有直接关联。
所以基本上 rowkey 设置为:gsSetRowFieldByTimestamp(row, 0, gsCurrentTime());
使用上述时间函数为时间序列提供行键是否合适?任何可预见的问题,除了可能明显的问题之外,这实际上阻碍了 gsCurrentTime() 解析的插入?
首先,即使传感器只有几列,我相信数据模式仍然应该是每个设备一个容器。是的,这看起来很浪费,但这是 GridDB 的方式。如果使用集群,GridDB 需要多个容器在其节点之间分区数据。使用多查询将消除应用程序读取端的任何性能问题。
现在,如果您坚持使用单一容器,请务必注意您的数据收集器必须是单线程的,以避免理论上的行键冲突,是的,请在 [= 中使用 gsCurrentTime() 或 TimestampUtils.current 15=].
我有来自各种传感器的输入,每个传感器只产生一两行输入,因此为每个传感器创建一个新容器毫无意义。数据按不应丢失的顺序出现,因此我考虑过在输入行出现时枚举并相应地分配数字。然后我想提供有关数据输入之间间距的其他信息。在首先将 id 调整为不再是连续的之后,我现在将时间戳视为行键,并在将数据写入一行时分配它们。我发现关于其他数据库的提及可能会导致问题,因为数据现在包含的信息在技术上与它没有直接关联。
所以基本上 rowkey 设置为:gsSetRowFieldByTimestamp(row, 0, gsCurrentTime());
使用上述时间函数为时间序列提供行键是否合适?任何可预见的问题,除了可能明显的问题之外,这实际上阻碍了 gsCurrentTime() 解析的插入?
首先,即使传感器只有几列,我相信数据模式仍然应该是每个设备一个容器。是的,这看起来很浪费,但这是 GridDB 的方式。如果使用集群,GridDB 需要多个容器在其节点之间分区数据。使用多查询将消除应用程序读取端的任何性能问题。
现在,如果您坚持使用单一容器,请务必注意您的数据收集器必须是单线程的,以避免理论上的行键冲突,是的,请在 [= 中使用 gsCurrentTime() 或 TimestampUtils.current 15=].