архитектура для высокой доступности

У меня такой сценарий:

У вас есть производственная линия, работающая круглосуточно и без выходных. Время простоя очень дорогое. Программное обеспечение, управляющее всеми различными частями, должно использовать общую форму хранения базы данных. Основная причина этого - знать, в каком состоянии находится фабрика. Например, некоторые продукты могут быть смешаны при использовании одного и того же набора оборудования, а другие ОБЯЗАТЕЛЬНО нет.

требования:

  • Я хочу, чтобы программное обеспечение могло обнаруживать, что ошибка в одной части установки должна приводить к остановке какой-либо машины на расстоянии более 1 км. поэтому сохранение данных в ПЛК - это не вариант.
  • Обновления и обновления до заводской среды часты
  • нагрузка (с компьютерной точки зрения) будет действительно низкой.

Система выполняет несколько сотен заданий в день, для которых выполняются расчеты / проверки с последующими инструкциями, отправляемыми заводским машинам. Большую часть времени системы будут скучать. Наиболее важным требованием является то, что центральная компьютерная система должна быть исправной и всегда работать.

Я думал использовать базу данных на основе динамо (riak или cassandra), где данные записываются на несколько машин, причем каждая машина имеет всю базу данных

Когда одна система выйдет из строя, она выйдет из строя самостоятельно. Традиционную базу данных sql может быть сложнее обновить, когда таблицы изменяются, а это главное ведомое устройство сложнее настроить.

Какое было бы ваше решение?

Сеть была сделана избыточной, и большинство других единичных точек отказались. Система базы данных имеет решающее значение, потому что простой БД означает простои всего предприятия, а не только одной из машин, что является приемлемым.

  • Как решить проблему общего состояния.
  • сложность в базе данных не будет проблемой. Я буду больше похож на простое хранилище значений ключей для получения самых актуальных и правильных данных.

person Stephan    schedule 19.01.2011    source источник
comment
это может быть лучший вопрос для serverfault.com   -  person msarchet    schedule 19.01.2011
comment
Я раскололся. Если вы считаете, что его нужно перенести, проголосуйте, или @Stephan может спросить.   -  person    schedule 19.01.2011


Ответы (3)


Я не думаю, что это вопрос sql / nosql. Все Postgres, MySQL и MS SQL Server имеют вариант кластера или горячего резервирования.

Конфигурация - это одноразовая вещь, но любой вариант NoSQL доставит вам головную боль от начала до конца кода, если вы пытаетесь сделать что-то принципиально реляционное на платформе, которая отказалась от реляционных в целях запуска вещей. как Amazon или Facebook. Конфигурация - один раз, кодировка - навсегда.

Так что я бы посоветовал придерживаться проверенного и надежного решения и приступить к горячей репликации.

Это также обеспечивает решение для обновлений. Типичная последовательность действий - «переключиться на резервный», обновить мастер, вернуться к мастеру, обновить резервный и возобновить работу. Конечно, с деталями, специфичными для конкретной ситуации.

person Ken Downs    schedule 19.01.2011
comment
Насколько сложно обновить nosql? Не могли бы вы объяснить, что такое головные боли? - person Stephan; 21.01.2011
comment
Головные боли в коде. NoSQL с его Map / Reduce специально предназначен для документов, без фиксированной структуры для их свойств. Если вы управляете фабрикой, почти невозможно представить, что вы делаете что-то ориентированное на документы. Это реляционный материал. Таким образом, головные боли возникают при попытке насильственно уместить реляционные потребности в ориентированное на документы решение. - person Ken Downs; 22.01.2011

Используйте установленную СУБД, которая изначально поддерживает такие вещи.

Вы действительно хотите, чтобы критически важная система работала круглосуточно и без выходных, на чем-то, что может быть согласованным в любой момент времени?

person gbn    schedule 22.01.2011
comment
какие СУБД поддерживают такие вещи? - person Stephan; 23.01.2011
comment
Oracle, SQL Server, Sybase, не уверен в postgres или mysql - person gbn; 23.01.2011

Вам нужно избегать единой точки отказа.

Все основные игроки в нашем мире dbms предлагают по крайней мере один способ избежать превращения самой базы данных в единую точку отказа. Я могу спросить, могут ли они распространять изменения достаточно быстро для ваших производственных процессов. (Или обновление данных на самом деле не проблема? Не могу сказать из вашего вопроса.) Моя работа с базами данных на производстве ограничена автомобилем и химической промышленностью. Для них микросекунды не имели значения.

Но dbms - не единственное, что может дать сбой. «Всегда работать» означает, что клиенты тоже должны всегда работать. Клиентское оборудование, подключения к сети, сеть и сами сетевые серверы, вероятно, имеют единые точки отказа. Отказоустойчивые серверы имеют несколько источников питания, несколько сетевых карт и т. Д.

«Всегда работать» действительно дорого. У меня такое чувство, что база данных не будет самой большой проблемой для вашей компании.

person Mike Sherrill 'Cat Recall'    schedule 22.01.2011
comment
простой текущей базы данных означает простои всего завода. которые нужно авиаудар. Системы на «краю» системы могут отключиться на несколько часов. - person Stephan; 18.06.2011
comment
Я понимаю о простоях базы данных. Я просто имел в виду, что 24/7 оборудование и связь может быть труднее реализовать, чем 24/7 базу данных. Большинство СУБД SQL корпоративного уровня в настоящее время поддерживают круглосуточную работу без выходных - горячее резервирование, репликация, кластеры и тому подобное. - person Mike Sherrill 'Cat Recall'; 18.06.2011