Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+717новых вакансий за сутки·60 871вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 951
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 391 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python9 224
  • Облачные технологии4 076
  • QA вакансии1 588
  • Android1 322
  • Инженер данных805
  • Продакт-менеджер368

Разработка

  • Backend вакансии1 317
  • iOS1 239
  • AI вакансии608
  • Fullstack вакансии523
  • Frontend вакансии456
  • Mobile вакансии28

По стеку

  • Go5 445
  • Java3 175
  • Kotlin1 119
  • Node.js1 026
  • Rust949
  • .NET666
  • PHP311
  • C#210
  • C++204

DevOps и инфраструктура

  • DevOps вакансии2 713
  • Kubernetes2 308
  • Linux-инфраструктура1 890
  • Terraform / IaC1 406
  • CI/CD842
  • Мониторинг и Observability645
  • SRE226
  • Кибербезопасность84

Аналитика и данные

  • Аналитик данных483
  • Data Scientist469
  • Бизнес-аналитик349
  • Системный аналитик48

Другие направления

  • Проджект-менеджер139
  • UI/UX дизайн71
  • Ручное тестирование14

По регионам

  • Вакансии в США24 791
  • Вакансии в Европе9 439
  • Работа в России2 924
  • Вакансии в Канаде2 178

По формату

  • Удалённые вакансии43 505
  • Релокация в США24 791
  • Гибридная работа3 370
  • Офисная работа2 525

По уровню

  • Senior вакансии20 898
  • Middle вакансии12 438
  • Junior вакансии3 864

Сейчас нанимают

Все компании
  • Wise191 вакансия
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PostgreSQLВсе вопросы
PostgreSQLMiddleТеория

Что такое enum и в чём его минус по сравнению с lookup-таблицей?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Enum фиксирует упорядоченный набор значений в типе PostgreSQL (легко сравнивать, компактно); lookup-таблица гибче — поддерживает FK, локализацию, управление из UI и удаление значений без DDL-миграции.

Enum в PostgreSQL

PostgreSQL enum — пользовательский тип данных с фиксированным упорядоченным набором строковых меток. Значения хранятся как 4-байтовый OID, занимают меньше места, чем text, и поддерживают сравнение и сортировку по порядку объявления.

-- Создать enum-тип и использовать в таблице
CREATE TYPE order_status AS ENUM ('new', 'paid', 'shipped', 'cancelled');

CREATE TABLE orders (
    order_id   bigserial PRIMARY KEY,
    user_id    bigint NOT NULL,
    status     order_status NOT NULL DEFAULT 'new',
    created_at timestamptz NOT NULL DEFAULT now()
);

-- Запрос с фильтром и сортировкой по enum-порядку
SELECT order_id, status
FROM orders
WHERE status > 'new'   -- работает по порядку объявления
ORDER BY status;

Изменение enum — DDL-операции

-- Добавить новое значение (PostgreSQL 9.1+, не требует rewrite таблицы):
ALTER TYPE order_status ADD VALUE 'refunded' AFTER 'cancelled';

-- Переименовать значение (PostgreSQL 10+):
ALTER TYPE order_status RENAME VALUE 'new' TO 'pending';

-- Удалить значение — НЕЛЬЗЯ напрямую!
-- Нужно: создать новый тип, мигрировать данные, дропнуть старый.

Lookup-таблица — альтернатива

-- Нормализованный вариант через reference table
CREATE TABLE order_statuses (
    status_code  text PRIMARY KEY,
    label_ru     text NOT NULL,
    label_en     text NOT NULL,
    sort_order   smallint NOT NULL,
    is_terminal  boolean NOT NULL DEFAULT false
);

INSERT INTO order_statuses VALUES
    ('new',       'Новый',    'New',       1, false),
    ('paid',      'Оплачен',  'Paid',      2, false),
    ('shipped',   'Отправлен','Shipped',   3, false),
    ('cancelled', 'Отменён',  'Cancelled', 4, true);

CREATE TABLE orders (
    order_id   bigserial PRIMARY KEY,
    user_id    bigint NOT NULL,
    status     text NOT NULL DEFAULT 'new'
                REFERENCES order_statuses(status_code),
    created_at timestamptz NOT NULL DEFAULT now()
);

Когда выбирать enum, когда lookup-таблицу

  • Enum — набор значений стабилен (технические состояния: pending/active/deleted), нет дополнительных атрибутов, не нужна локализация, изменение схемы синхронизируется с релизом кода.
  • Lookup-таблица — значения управляются через UI/admin-панель, нужны локализованные labels, sort_order, флаги (is_terminal, is_visible), история изменений или внешние ключи из других таблиц.

Подводные камни

  • Удалить значение из enum нельзя без создания нового типа и полной миграции таблицы — это блокирующая операция на продакшне.
  • Добавление значения через ADD VALUE не транзакционно до PostgreSQL 12 — откат транзакции не откатывает изменение типа.
  • Enum жёстко связывает релиз приложения и миграцию базы: добавили новое значение в enum — нужно деплоить код, умеющий его обрабатывать, одновременно.
  • ORM и клиентские библиотеки могут кэшировать список значений enum при старте — после ADD VALUE нужен рестарт приложения или очистка кэша соединений.
  • Enum не поддерживает FK к другой таблице — нельзя хранить дополнительные атрибуты на уровне базы без дополнительной таблицы.
  • Lookup-таблица добавляет JOIN к каждому запросу — для hot path с высокой нагрузкой может потребоваться кэширование справочника в приложении.
  • При использовании enum в партиционированной таблице изменение типа затрагивает все партиции — потенциально длительная операция.

Частые вопросы на собеседовании

  • Что делает VACUUM, VACUUM FULL, ANALYZE? Чем они отличаются и какой когда применять?
  • Какие уровни изоляции есть и чем отличаются (READ COMMITTED, REPEATABLE READ, SERIALIZABLE)? Какой по умолчанию в Postgres?
  • Что такое PITR и чем pg_dump отличается от base backup + WAL archive?
  • Каковы типы индексов в PostgreSQL (B-tree, Hash, GIN, GiST, BRIN)?

Типичные ошибки

  • Использовать enum для бизнес-справочника.
  • Не учитывать сложность удаления значений.
  • Забывать про порядок enum-значений.

Что проверяет интервьюер

  • Просит пример стабильного enum.
  • Проверяет migration trade-off.
  • Уточняет, когда нужен FK на справочник.

Как вы знаете этот вопрос?

Проверить себя по теме PostgreSQL →

Источники

  • https://www.postgresql.org/docs/current/datatype-enum.html

Связанные темы

PostgreSQLmigration-designschema-design

Вакансии с этим навыком

PostgreSQL вакансии
  • Системный аналитик
  • Разработчик Python (ИИ-помощник)
  • Lead Cloud Engineer (Azure) — Interview Experts Needed (#5499)
  • Senior DataOps Engineer (#5858)
  • Senior Python Engineer (with TypeScript and Agentic development experience) (#5874)