Механизм хранения рабочих мест, который не является MySQL?
Я делаю много заданий на сайте. Я использую mysql для хранения результатов этих заданий, а также всех промежуточных шагов. Задания могут выполняться с или без mysql. Проблема заключается в том, что если mysql отключается в любой момент времени, текущие состояния заданий портятся, и их результаты бесполезны (так как они кодируются в различных местах).
Существует ли какой-то механизм распределенного хранения, который я мог бы использовать для хранения промежуточных данных и конечных результатов в качестве резервной копии в mysql, чтобы я мог разобраться в результирующих данных, если mysql решит их потерять.
2 ответа
Базы данных nosql предназначены для обеспечения высокодоступной подсистемы распределенных хранилищ - однако я обнаружил, что отсутствие реляционных возможностей довольно ограничительно.
sqlite - это простой внутрипроцессный инструмент для реляционных баз данных.
Я полагаю, многое зависит от того, что вы используете для реализации своей логики - и с чем она будет говорить.
Я должен признать, что я немного удивлен, что у вас, похоже, проблемы с надежностью mysql - я использовал его для некоторых довольно серьезных / больших объемов материала и нашел его очень стабильным - единственные проблемы, с которыми я столкнулся, это:
1) когда я запускал старую версию поверх md-raid - иногда происходило повреждение после больших удалений
2) проблемы с блокировкой на уровне таблицы при обновлении больших наборов данных в myisam (можно избежать с помощью innodb)
Возможно, вы захотите продолжить работу с mysql, но используя репликацию master-master и добавив отказоустойчивый слой сверху - например, mysqlproxy
Если честно, это звучит как проблема всей вашей архитектуры, но если вы ищете альтернативные механизмы хранения, есть из чего выбирать. Вот краткий список вещей, которые могут подойти, в зависимости от того, какое именно приложение. Многие другие перечислены здесь.
CouchDb, Hadoop, MemcacheDB, Волдеморт