Код IT
← Каталог

Надежность и доступность — Стратегии равномерного шардирования

Фрагмент из «Надежность и доступность»: Стратегии равномерного шардирования.

sql projectencyclopedia7-06-proektirovanie-i-arhitektura-design-2134 embed URL статья в энциклопедии
SQL main.sql
-- Плохой ключ: все записи за день попадают в один шард
CREATE TABLE events (
    event_date DATE,
    event_id BIGINT,
    PRIMARY KEY (event_date, event_id)
) PARTITION BY HASH(event_date);

-- Хороший ключ: равномерное распределение по пользователям
CREATE TABLE events (
    user_id BIGINT,
    event_timestamp TIMESTAMP,
    event_id BIGINT,
    PRIMARY KEY ((user_id), event_timestamp, event_id)
) PARTITION BY HASH(user_id);
-- Плохой ключ: все записи за день попадают в один шард
CREATE TABLE events (
    event_date DATE,
    event_id BIGINT,
    PRIMARY KEY (event_date, event_id)
) PARTITION BY HASH(event_date);

-- Хороший ключ: равномерное распределение по пользователям
CREATE TABLE events (
    user_id BIGINT,
    event_timestamp TIMESTAMP,
    event_id BIGINT,
    PRIMARY KEY ((user_id), event_timestamp, event_id)
) PARTITION BY HASH(user_id);