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

+1 183новые вакансии за сутки·93 833вакансии открыты сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 230
  • Облачные технологии14 171
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 801
  • Продакт-менеджер1 247

Разработка

  • Android1 858
  • iOS1 698
  • Fullstack вакансии996
  • AI вакансии955
  • Frontend вакансии755
  • Mobile вакансии44

По стеку

  • Go8 752
  • Java6 593
  • Node.js2 036
  • .NET1 739
  • Kotlin1 618
  • Rust1 472
  • C#717
  • PHP690
  • C++579

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

  • Kubernetes7 787
  • DevOps вакансии6 095
  • Linux-инфраструктура5 508
  • Terraform / IaC4 287
  • CI/CD3 272
  • Мониторинг и Observability1 792
  • SRE566
  • Кибербезопасность454

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

  • Data Scientist1 138
  • Бизнес-аналитик921
  • Аналитик данных858
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США44 166
  • Вакансии в Европе24 014
  • Вакансии в Канаде4 535
  • Работа в России3 867

По формату

  • Удалённые вакансии75 005
  • Релокация в США44 166
  • Гибридная работа12 485
  • Офисная работа7 090

По уровню

  • Senior вакансии42 643
  • Middle вакансии20 960
  • Junior вакансии6 708

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

В чём разница между колонками SERIAL и GENERATED AS IDENTITY?

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

SERIAL — устаревший псевдотип, создающий независимую последовательность; GENERATED AS IDENTITY (SQL:2003) жёстко привязывает последовательность к колонке через системный каталог и поддерживает OVERRIDING SYSTEM VALUE.

SERIAL vs GENERATED AS IDENTITY

SERIAL — это псевдотип, появившийся в ранних версиях PostgreSQL. При его использовании движок неявно создаёт отдельную последовательность (SEQUENCE) и устанавливает на колонку дефолт через DEFAULT nextval('...'). Колонка при этом имеет тип integer, а связь между ней и последовательностью существует лишь через именование — никакой настоящей зависимости нет.

GENERATED AS IDENTITY (SQL:2003, поддерживается с PostgreSQL 10) — это стандартный SQL-синтаксис. Последовательность создаётся автоматически и жёстко привязана к колонке через системный каталог (pg_depend). При удалении колонки последовательность удаляется вместе с ней. Поддерживаются два варианта:

  • GENERATED ALWAYS AS IDENTITY — PostgreSQL всегда генерирует значение; вставить произвольное число можно только явно указав OVERRIDING SYSTEM VALUE.
  • GENERATED BY DEFAULT AS IDENTITY — можно передать своё значение без дополнительных оговорок; поведение схоже с SERIAL.
-- Старый способ
CREATE TABLE orders_old (
    id SERIAL PRIMARY KEY,
    amount numeric
);

-- Современный способ (рекомендуется)
CREATE TABLE orders_new (
    id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    amount numeric
);

-- Посмотреть привязанную последовательность
SELECT pg_get_serial_sequence('orders_new', 'id');
-- Результат: pg_catalog.orders_new_id_seq

-- Принудительная вставка с OVERRIDING
INSERT INTO orders_new (id, amount)
OVERRIDING SYSTEM VALUE
VALUES (999, 100.50);

-- Изменить параметры последовательности через ALTER
ALTER TABLE orders_new
    ALTER COLUMN id
    SET GENERATED BY DEFAULT
    SET START WITH 1000
    RESTART WITH 1000;

Ключевые практические отличия:

  • Управление последовательностью: у SERIAL последовательность живёт отдельно и может случайно «потеряться» при DROP COLUMN — последовательность при этом остаётся. У IDENTITY зависимость зарегистрирована в каталоге и каскадно удаляется.
  • Права: для SERIAL приходится отдельно выдавать GRANT USAGE ON SEQUENCE; с IDENTITY это не нужно — привилегии на таблицу охватывают и последовательность.
  • pg_dump: дамп SERIAL воспроизводит CREATE SEQUENCE + DEFAULT nextval, тогда как IDENTITY сериализуется чище через стандартный синтаксис.
  • Переносимость: GENERATED AS IDENTITY является частью стандарта ISO SQL и понятен другим СУБД (Oracle, DB2, MariaDB 10.3+).

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

  • При копировании таблицы через CREATE TABLE ... AS SELECT или pg_dump --schema-only атрибут IDENTITY не переносится автоматически — нужно явно пересоздавать колонку.
  • INSERT ... OVERRIDING SYSTEM VALUE не обновляет «водяной знак» последовательности; после ручной вставки большого ID вызовите ALTER SEQUENCE ... RESTART, иначе получите конфликт уникальности.
  • SERIAL создаёт последовательность в той же схеме, что и таблица; при смене схемы (ALTER TABLE SET SCHEMA) последовательность остаётся в старой схеме — неочевидная бомба.
  • У GENERATED ALWAYS нельзя вставить DEFAULT через ORM без явного OVERRIDING — некоторые ORM (ранние версии SQLAlchemy) не справлялись с этим сценарием.
  • Последовательности не транзакционны: «дырки» в значениях неизбежны при откате транзакций; не используйте ID для нумерации документов.
  • При репликации через логическое декодирование IDENTITY-колонки ведут себя корректно, но на подписчике нужно явно устанавливать REPLICA IDENTITY, иначе UPDATE/DELETE упадут.
  • bigserial / BIGINT GENERATED AS IDENTITY предпочтительнее serial для таблиц с высокой нагрузкой — диапазон integer исчерпывается при ~2.1 млрд строк.

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

  • Отвечать про serial и generated as identity как про абстрактный SQL без учета MVCC, WAL, planner или конкретной версии PostgreSQL.
  • Переносить поведение MySQL или ClickHouse на PostgreSQL без проверки документации.
  • Не связывать механизм с последствиями для индексов, транзакций, блокировок или эксплуатации.
  • Показывать синтаксис, который не поддерживается PostgreSQL.

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

  • Кандидат объясняет serial и generated as identity через реальный механизм PostgreSQL, а не общими словами.
  • Приводит корректный SQL или диагностический запрос для этой СУБД.
  • Называет ограничения, версионные отличия или эксплуатационные последствия.
  • Связывает ответ с проектированием приложения, производительностью, надежностью или безопасностью.

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

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

Источники

  • https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-SERIAL
  • https://www.postgresql.org/docs/current/ddl-identity-columns.html

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

PostgreSQLschema-designsql-standard

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

PostgreSQL вакансии
  • Go Architect (Fintech)
  • Fullstack Developer (Java Core & React)
  • Sr Software Engineer - Remote
  • Sr Full Stack Developer-Web Technology
  • Principal Software Engineer (Application Software)

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

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