RDBMS或NoSQL用于具有循环和有序操作的复杂计划数据?

时间:2014-08-07 17:33:22

标签: sql mongodb postgresql database nosql

我试图弄清楚如何最好地存储(和建模)自动化系统的调度组件。我需要存储将要执行的计划(灯,泵等)。我还没有尝试在执行时管理日程安排的状态。目前,我对如何存储并让用户使用计划创建感兴趣。

我还没有确定用于存储数据的内容(RDBMS,MongoDB,Cassandra等等)。我认为我更喜欢RDBMS,因为其他大部分数据都是关系型的,我想利用连接,事务,并对数据弹性充满信心。我知道RDBMS并不是镇上唯一能给我这些游戏的游戏,但我的大多数经验都是SQL和最近的MongoDB项目。也就是说,我发现很难用表格和关系来描述模型。以下是我到目前为止所做的事情。

什么是最好的存储方法,其次,对可行模型的任何提示都将不胜感激。

有些需要

  • 行动循环
  • 执行顺序
  • 交易大加

示例时间表

1) [step1] [action] room 1 lights on
2) [step2] [loop] 5x
    2.1 [step2.1] [action] tv on  (ignoring duration of steps)
    2.2 [step2.2] [action] tv off
3) [step3] [action] pool pump on

1 个答案:

答案 0 :(得分:0)

在任何相当复杂的自动化系统中,我认为您确实需要a state machinea way to store state

存储状态相当容易;存储状态机并执行它并不容易。一种方法是在代码中定义状态机并让它在下次需要执行时计算,然后在数据库中为下一个执行时间放置一条记录。然后,您的主循环只是按顺序从数据库中提取事件,等待它有一个到期执行,加载适当的状态机并执行它。在执行期间,状态机可以改变任何变量的状态(包括外部设备的开/关状态),并且可以在事件列表中重新安排自己执行一次或多次。

我链接了一些博客文章,描述了我的自动化系统的工作方式。我的要求比简单的时序循环要复杂得多;它们涉及条件逻辑,基于先前发生的历史的逻辑等等,但我怀疑迟早你会想要超越简单的循环。