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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python16 417
  • Облачные технологии13 174
  • QA вакансии3 433
  • Backend вакансии2 035
  • Инженер данных1 666
  • Продакт-менеджер1 162

Разработка

  • Android1 816
  • iOS1 666
  • AI вакансии937
  • Fullstack вакансии892
  • Frontend вакансии717
  • Mobile вакансии38

По стеку

  • Go8 561
  • Java6 090
  • Node.js1 889
  • Kotlin1 554
  • .NET1 545
  • Rust1 432
  • PHP640
  • C#562
  • C++498

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

  • Kubernetes7 303
  • DevOps вакансии5 594
  • Linux-инфраструктура5 291
  • Terraform / IaC4 014
  • CI/CD2 557
  • Мониторинг и Observability1 735
  • SRE548
  • Кибербезопасность398

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

  • Data Scientist1 033
  • Бизнес-аналитик868
  • Аналитик данных829
  • Системный аналитик134

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

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

По регионам

  • Вакансии в США44 779
  • Вакансии в Европе21 327
  • Вакансии в Канаде4 450
  • Работа в России3 877

По формату

  • Удалённые вакансии73 902
  • Релокация в США44 794
  • Гибридная работа11 412
  • Офисная работа6 956

По уровню

  • Senior вакансии41 197
  • Middle вакансии20 361
  • Junior вакансии6 638

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

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab136 вакансий
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • 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