Проверяет понимание принципов master-slave репликации в базах данных и правил распределения запросов между master и slave узлами.
Master-slave репликация — это архитектура баз данных, где один узел (master) является источником истины для всех изменений, а один или несколько узлов (slave) получают копии данных через асинхронную или синхронную репликацию. Master принимает все операции записи (INSERT, UPDATE, DELETE), а slave-узлы обслуживают операции чтения (SELECT). Это позволяет масштабировать систему горизонтально, увеличивая пропускную способность чтения.
К master следует обращаться в следующих случаях:
Slave-узлы предназначены для:
В приложении на Node.js с использованием PostgreSQL можно настроить два пула соединений:
const { Pool } = require('pg');
const masterPool = new Pool({ host: 'master-host', user: 'app', password: 'secret', database: 'db' });
const slavePool = new Pool({ host: 'slave-host', user: 'app', password: 'secret', database: 'db' });
async function getUser(id) {
// Чтение через slave
const res = await slavePool.query('SELECT * FROM users WHERE id = $1', [id]);
return res.rows[0];
}
async function updateUser(id, name) {
// Запись через master
await masterPool.query('UPDATE users SET name = $1 WHERE id = $2', [name, id]);
}Master-slave репликация полезна для систем с высокой нагрузкой на чтение и относительно низкой частотой записи. Она повышает производительность и отказоустойчивость, но требует продуманного маршрутизации запросов и учета возможной задержки данных на slave. Применяйте её, когда нужно масштабировать чтение и обеспечить резервирование без усложнения транзакционной логики.