我有这种情况:
您有一条 24/7 全天候运行的工厂生产线。停机时间非常昂贵。 控制所有不同部分的软件必须使用共享形式的数据库存储 这样做的主要原因是要知道工厂处于哪种状态。例如,当使用同一套设备时,某些产品可以混合使用,而另一些则绝对不能。
要求:
- 我希望软件能够检测到其中一部分的错误 该工厂必须导致 1 公里以外的某些机器停机。所以将数据存储在 plc 中不是一种选择。
- 工厂环境更新升级频繁
- 负载(在计算机方面)会非常低。
系统每天处理数百个任务,完成计算/检查,然后向工厂机器发送指令。大多数时候系统都会感到无聊。最重要的要求是中央计算机系统必须正确且始终运行。
我正在考虑使用基于发电机的数据库(riak 或 cassandra),其中数据被写入多台机器,每台机器都有整个数据库
当一个系统出现故障时,它会在无人注意的情况下出现故障。当表更改时,传统的 sql 数据库可能更难以升级,而且这个主从更难配置。
您的解决方案是什么?
网络已冗余,大多数其他单点故障也已冗余。数据库系统至关重要,因为数据库的停机时间意味着整个工厂的停机时间,而不仅仅是一台可接受的机器。
- 如何解决共享状态问题。
- 数据库的复杂性不会成为问题。我将更像是一个简单的键值存储来获取最新和正确的数据。
最佳答案
我不认为这是一个 sql/nosql 问题。所有的 Postgres、MySQL 和 MS SQL Server 都有某种集群或热备份选项。
配置是一次性的事情,但任何 NoSQL 选项都会让您从代码的顶部到底部感到头疼,如果您试图在一个已经放弃关系的平台上做一些基本的关系运行像亚马逊或 Facebook 这样的东西。配置一次,编码永久。
所以我会说坚持使用经过验证的真实解决方案,让热复制继续进行。
这也提供了升级的解决方案。典型的顺序是“故障转移”到备用数据库,升级主数据库,翻转回主数据库,升级备用数据库,然后恢复。当然还有具体情况的细节。
关于sql - 高可用性架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4737151/