Базы данных в HighLoad. Советы и рекомендации по работе с БД в крупных проектах
Автор: Константин Козловский
Загружено: 2024-07-28
Просмотров: 10490
Мы работаем в большой высоконагруженной транзакционной системе, что добавляет определенные особенности в процесс разработки. Путём проб и ошибок, мы вывели для себя ряд стандартов и правил для работы с реляционными базами данных, которых придерживаемся уже длительное время. Эти рекомендации позволяют значительно снизить количество инцидентов и сосредоточиться на решении бизнес задач.
Тайминги:
00:00 Вступление
01:12 Naming
02:32 Первичные ключи
06:51 Внешние ключи
10:07 Триггеры и курсоры
10:35 Nullable и Default поля
13:16 Связи "многие ко многим"
14:12 Комментарии
14:34 Служебные поля
17:44 Для разработчиков
24:12 Заключение
Пример DDL, которое обещал в видео:
create table sample_schema.sample_entities
(
id uuid
constraint sample_entities_pk
primary key,
field_one int,
field_two varchar,
create_time sample_schema.bigint not null,
create_user varchar not null,
last_modify_time sample_schema.bigint not null,
last_modify_user varchar not null
);
comment on table sample_schema.sample_entities is 'Пример таблицы';
comment on column sample_schema.sample_entities.id is 'PRIMARY KEY';
comment on column sample_schema.sample_entities.field_one is 'Комментарий к полю 1';
comment on column sample_schema.sample_entities.field_two is 'Комментарий к полю 2';
comment on column sample_schema.sample_entities.create_time is 'Указывается однократно в момент добавления записи и больше не меняется. При этом: Тип поля - целое число, которое содержит значение Unix-время. Такой тип исключает разную интерпретацию разными back разработчиками видов времени (со смещением или без). Для возможности увидеть "человеческое представление данных" в SQL запросе можно использовать функцию to_timestamp(create_time / 1000)';
comment on column sample_schema.sample_entities.create_user is 'Строка (поле типа varchar), в котором хранится идентификатор пользователя/клиента, который добавлял запись';
comment on column sample_schema.sample_entities.last_modify_time is 'Устанавливается при добавлении записи и обновляется при каждом изменении записи Требования совпадают с create_time. Для возможности увидеть "человеческое представление данных" в SQL запросе можно использовать функцию to_timestamp(last_modify_time / 1000)';
comment on column sample_schema.sample_entities.last_modify_user is 'Строка (поле типа varchar), в котором хранится идентификатор пользователя/клиента, который добавлял/редактировал запись.';
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: