c - 基于 gsCurrentTime() 的 GridDB 时间序列容器的 Rowkey
问题描述
我有来自各种各样的传感器的输入,每个传感器只产生一两行输入,因此为每个传感器创建一个新容器几乎没有意义。数据按不应该丢失的顺序出现,因此我考虑在输入行到来时枚举输入行并相应地分配数字。然后,我想提供有关数据输入之间间距的更多信息。在首先将 id 调整为不再是连续的之后,我现在将时间戳视为行键,并在将数据写入一行时分配它们。我发现其他数据库提到这可能会导致问题,因为数据现在包含在技术上与它没有直接关联的信息。
所以基本上rowkey是由以下设置的:gsSetRowFieldByTimestamp(row, 0, gsCurrentTime());
使用上述时间函数为时间序列提供行键是否合适?任何可预见的问题,除了可能明显的问题,这有效地阻碍了 gsCurrentTime() 的解析?
解决方案
首先,即使传感器只有几列,我相信数据模式仍然应该是每个设备一个容器。是的,这似乎很浪费,但它是 GridDB 的方式。如果使用集群,GridDB 需要多个容器在其节点之间分区数据。使用多查询将消除应用程序读取端的任何性能问题。
现在,如果您坚持使用单个容器,请务必注意您的数据收集器必须是单线程的,以避免理论上的行键冲突,是的,在 Java 中使用 gsCurrentTime() 或 TimestampUtils.current。
推荐阅读
- flutter - 带有资产图像和文本的卡片
- sql - 查询以按值并排获取总不同值
- javascript - 如何让我的汉堡菜单响应式?
- java - 如何将 TextureAtlas 用于动画而不是 TextureRegion?-libgdx
- sql - 如何读取 DataBaseRoom 并显示 textView
- visual-studio-code - VSCode 中的 Ctrl+shift+箭头不会选择整个单词
- azure-ad-b2c - Azure B2C 中的 KMSI 实际上有什么作用?
- c - 警告 C6386:写入数据时缓冲区溢出 (c) 在 0x00F622D9 处引发异常
- javascript - 如何增加/减少在固定容器内滚动的元素的不透明度
- python-3.x - pydoc 模块不显示 codecs.py 的所有文档