首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工业数据传感器的Cassandra保存时间序列

工业数据传感器的Cassandra保存时间序列
EN

Stack Overflow用户
提问于 2014-11-18 09:54:06
回答 2查看 1.1K关注 0票数 3

我目前正在开发一个项目,并研究从工业工厂传感器中检索数据的最佳方法,这些传感器连接到PLC(工厂中的机械控制器,例如控制电机、速度、开关等)。)。

我会解释所要达到的目标,而我认为我的论点可以外推到很多不同类型的行业:

  1. 我有几个PLC,它们给了我很多不同的数据值。(其中许多值只是布尔值,而其他值则是模拟值,例如真正的类型。)
  2. 我将在一家工厂里拥有10.000多个传感器。
  3. 我希望至少每秒钟为模拟值检索数据(例如马达rmp、温度、湿度.)。
  4. 对于数字值,当事件出现时,数据将使用时间戳保存。

我想使用卡桑德拉与时间序列,因为它看起来是最有希望和更快的技术来做到这一点。

我的问题是每秒钟都要存储模拟值。是否最好有一个类似于:的模式?

时间戳,sensor1,sensor2,sensor3,sensor4

和行并按工厂中的部件分组,还是更好?

每个传感器都有自己的桌子。

整个系统将采用Java语言开发,并将数据提供给外部公司进行分析。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-18 10:03:50

不太清楚您的查询是什么。您提到“我希望至少每秒钟检索一次类似值的数据(例如,马达rmp、温度、湿度……)”。

这是否意味着你每秒钟都在查询所有10K传感器?或者是特定的传感器,还是一组传感器?在cassandra中,在查看数据模型之前了解查询内容是至关重要的。如果您正在寻找1秒的粒度,一个选项可能是将传入的数据流提供给Spark流,并将Spark流代码保存到适合您想要查询的Cassandra表中。

至于您提到的选项,很难说不知道查询的确切性质。将一个键放置到第二个键前可能是一个选项--这意味着每个分区大约有10K个条目,假设每个传感器的数据速率或1/s。每个传感器都有一个表可能很奇怪,但是每个传感器可能有一个分区,每个条目都有时间戳。这取决于您的查询。

也许,如果您给我们一个示例,说明您打算如何检索数据,我们可以提供更好的帮助?

票数 3
EN

Stack Overflow用户

发布于 2014-11-19 23:57:07

我怀疑最终您会希望通过传感器和时间来查询数据。您没有理由不使用两个表并将每个数据点写入两个表中。(Twitter将每条推文写入不同的表中,供每个跟踪Twitter的人使用!)

您可能会编写的一些表如下:

代码语言:javascript
复制
CREATE TABLE factory_status (
  date timestamp,
  hour int,
  minute int,
  second int,
  sensor_status_map map<uuid, float>
  PRIMARY KEY ((date, hour, minute, second))
)

此表实质上每秒钟记录工厂中所有传感器的状态。每个分区将包含工厂的快照。这对于查询不太有用,因为您无法有效地获得一定的时间范围(每秒钟将是它自己的查询),但它在工厂进行分析和开发故障模型方面可能非常强大。

代码语言:javascript
复制
CREATE TABLE sensor_status (
  sensor_id uuid,
  date timestamp,
  time timestamp,
  sensor_val float,
  PRIMARY KEY ((sensor_id, date), time)
)

这个表基本上记录了每个传感器的输出。每个日期都是时间的截断版本。否则,传感器每秒钟输入一次就会很快超过卡桑德拉的列限。这将使在特定时间或一段时间内查询传感器的状态变得容易。

如果您在设计“从上到下”时遇到了困难,可以采取迭代的方法,在发现需要运行不符合旧查询模式的新查询时添加新表。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26991287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档