Я ищу решение для масштабируемой базы данных для серверной части моего сайта. В последнее время я читал о дизайне баз данных и, похоже, сам разработал идею, которая может сработать. Я думаю, что это новый способ поддержки n баз данных с синхронизированными данными, но я могу ошибаться. Поэтому я прошу ТАК оценить идею и сказать, сумасшедшая она или нет. (или если он уже существует и реализован)
В этой схеме есть группа узлов сервера. На одном узле выполняется балансировщик нагрузки запросов (назовем его A ), а на остальных выполняется типичная dbms, давайте назовем эти узлы N вместе.
Каждый N отключен от других. то есть) узлу в N не нужно связываться ни с кем другим. Каждый N имеет подключение только к A .
Процесс работает следующим образом
- Все запросы к базе данных проходят через A . (Давайте предположим, что A имеет бесконечную пропускную способность и способность к обработке)
- A проверяет каждый запрос ( Q ) и определяет, является ли это операцией, которая будет читать из базы данных, или запросом, который будет записывать в базу данных. (в sql чтение будет выбрано и запись будет обновление)
- Если Q является операцией read , перенаправьте ее на один узлов в N
- , если Q - операция write , перенаправьте ее на все узлов в N
Если все реализовано правильно, это приводит к тому, что все узлы в N имеют синхронизированный контент базы данных. Запросы, которые только читают данные, должны быть отправлены на один узел.
Эта идея, кажется, работает особенно хорошо для меня, потому что в моей системе очень мало операций записи, менее 1%.
Итак, несколько вопросов по этой идее
- Имеет ли подобная схема смысл с теоретической точки зрения?
- Если это имеет смысл, есть ли уже реализованное решение, коммерческое или бесплатное?