Ответ
Вертикальное шардирование (вертикальное партиционирование) — это метод разделения таблицы базы данных по столбцам, при котором разные группы атрибутов хранятся в отдельных таблицах, часто на разных физических носителях или серверах.
Принцип работы: Исходная широкая таблица разбивается на несколько узких таблиц, связанных по первичному ключу. Часто используемые столбцы ("горячие данные") отделяются от редко запрашиваемых ("холодные данные").
Пример на SQL:
-- Исходная таблица
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
password_hash VARCHAR(255),
email VARCHAR(100),
profile_text TEXT,
last_login TIMESTAMP,
metadata JSON
);
-- После вертикального шардирования:
-- Таблица для частых операций (авторизация)
CREATE TABLE users_core (
id INT PRIMARY KEY,
username VARCHAR(50),
password_hash VARCHAR(255),
email VARCHAR(100),
last_login TIMESTAMP
);
-- Таблица для редко используемых данных
CREATE TABLE users_profile (
user_id INT PRIMARY KEY REFERENCES users_core(id),
profile_text TEXT,
metadata JSON
);
Преимущества:
- Увеличение производительности чтения — уменьшается объем данных, загружаемых в память при частых запросах
- Улучшение кэширования — "горячие" данные эффективнее помещаются в кэш
- Возможность разного хранения — разные типы данных можно хранить на оптимальных для них носителях (SSD для частых запросов, HDD для архивных данных)
- Безопасность — чувствительные данные можно изолировать
Недостатки:
- Усложнение JOIN-запросов — для получения полных данных требуются соединения таблиц
- Нарушение атомарности операций — обновления нескольких таблиц требуют транзакций
- Сложность поддержки целостности — необходимы внешние ключи и каскадные операции
Типичные сценарии использования:
- Разделение часто и редко запрашиваемых атрибутов (логин/пароль vs. биография)
- Изоляция BLOB/CLOB данных (изображения, документы) в отдельные таблицы
- Реализация multi-tenant архитектуры с общими и tenant-specific данными
- Оптимизация под column-oriented СУБД (ClickHouse, Vertica)