KseniiaKarpova / Auth_sprint_2

Спринт 7
0 stars 0 forks source link

Партицирование в PostgreSQL #5

Closed KseniiaKarpova closed 8 months ago

KseniiaKarpova commented 9 months ago

Задание Партицируйте таблицу с пользователями. Подумайте, по каким критериям вы бы разделили её. Важно посмотреть на таблицу не только в текущем времени, но и заглядывая в некое будущее, когда в ней будут миллионы записей. Пользователи могут быть из одной страны, но из разных регионов. А ещё пользователи могут использовать разные устройства для входа и иметь разные возрастные ограничения.

KseniiaKarpova commented 9 months ago

_sqlalchemy.exc.DBAPIError: (sqlalchemy.dialects.postgresql.asyncpg.Error) <class 'asyncpg.exceptions.FeatureNotSupportedError'>: unique constraint on partitioned table must include all partitioning columns DETAIL: PRIMARY KEY constraint on table "user_history" lacks column "userid" which is part of the partition key. [SQL: CREATE TABLE user_history ( uuid uuid DEFAULT gen_random_uuid() NOT NULL, user_id uuid NOT NULL REFERENCES users(uuid), user_agent VARCHAR(255) NOT NULL, refresh_token TEXT NOT NULL, is_active boolean NOT NULL, created_at DATE NOT NULL, updated_at DATE, PRIMARY KEY (uuid) ) PARTITION BY HASH(user_id); ]

KseniiaKarpova commented 9 months ago

https://github.com/KseniiaKarpova/Auth_sprint_2/blob/aaf7fdd4ca565c47a37a5c5511efbb814b5fe9df/AuthAPI/alembic/versions/00d695e6331f_initial.py#L58

BigDeepBlue commented 9 months ago

Оно и ругается, что ключ партицирования, должен быть включен в PRIMARY KEY constraint Вот как это сделано в моем примере

Снимок экрана 2024-02-08 в 23 22 52