Новое: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 источников: карьерные страницы компаний и джоб-борды.

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

Какие ошибки делают команды, когда прячут сложность базы данных за Prisma?

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

Главные ошибки: N+1 при итерации с запросами внутри цикла, SELECT * без явного select, блокирующие миграции без CONCURRENTLY, отсутствие транзакций там, где они нужны, и нехватка индексов на полях фильтрации.

Ошибка 1: игнорирование N+1

Самая распространённая проблема. Разработчик пишет:

const users = await prisma.user.findMany();
for (const user of users) {
  const posts = await prisma.post.findMany({
    where: { authorId: user.id },
  });
}

100 пользователей = 101 запрос к БД. Prisma не объединяет эти запросы автоматически. Правильно — использовать include или select с вложенными связями:

const users = await prisma.user.findMany({
  include: {
    posts: true,
  },
});

Но даже include не всегда генерирует JOIN — Prisma может делать отдельный SELECT для связей типа «один-ко-многим». Это нужно проверять через лог.

Когда Prisma становится абстракцией над хаосом

Prisma отлично снижает порог входа — не нужно писать SQL руками, схема читается как документация, типы генерируются автоматически. Но именно эта лёгкость провоцирует паттерны, которые превращают базу данных в узкое место в продакшене.

Ошибка 2: SELECT * везде

По умолчанию Prisma выбирает все поля. Если в таблице есть avatar bytea, description text или JSON-колонки, они тянутся при каждом запросе. В API, который возвращает список из 50 строк, это могут быть мегабайты лишних данных.

// Плохо
const users = await prisma.user.findMany();

// Хорошо
const users = await prisma.user.findMany({
  select: {
    id: true,
    name: true,
    email: true,
  },
});

Ошибка 3: миграции без анализа плана выполнения

Команды запускают prisma migrate deploy в продакшене и не думают о блокировках. Добавление NOT NULL колонки без DEFAULT блокирует таблицу. Создание индекса через миграцию без CONCURRENTLY блокирует запись.

-- Prisma сгенерирует это:
CREATE INDEX "User_email_idx" ON "User"("email");

-- Нужно вручную заменить на:
CREATE INDEX CONCURRENTLY "User_email_idx" ON "User"("email");

Prisma не поддерживает CONCURRENTLY в схеме — это нужно делать через raw SQL в кастомных миграциях.

Ошибка 4: транзакции везде и нигде

Два крайних случая: либо весь код без транзакций (данные в несогласованном состоянии при сбое в середине операции), либо гигантские транзакции, которые держат блокировки секундами. Prisma не навязывает транзакционную модель — разработчик должен думать о границах сам.

// Без транзакции — опасно
await prisma.order.create({ data: orderData });
await prisma.inventory.update({ where: { id }, data: { stock: { decrement: 1 } } });

// С транзакцией
await prisma.$transaction([
  prisma.order.create({ data: orderData }),
  prisma.inventory.update({ where: { id }, data: { stock: { decrement: 1 } } }),
]);

Ошибка 5: отсутствие индексов на часто используемых полях фильтрации

Prisma генерирует WHERE по любому полю — но индекса там нет, если он не указан в схеме явно. Многие команды не добавляют @@index вовремя:

model User {
  id        String   @id @default(cuid())
  email     String   @unique
  teamId    String
  createdAt DateTime @default(now())

  // Забыли добавить:
  @@index([teamId, createdAt])
}

Ошибка 6: использование Prisma для аналитических запросов

Агрегации, оконные функции, CTE — Prisma поддерживает только базовые groupBy и aggregate. Команды пытаются реализовать аналитику через JS вместо SQL, что убивает производительность. Правильно — использовать $queryRaw для сложных запросов.

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

  • Prisma не предупреждает об N+1 в runtime — нужно явно включать логирование и смотреть количество запросов.
  • Миграции Prisma в продакшене могут блокировать таблицы — нужен review каждого SQL в папке migrations/ перед деплоем.
  • Отсутствие connection pooling на уровне приложения при serverless деплое приводит к исчерпанию соединений PostgreSQL — нужен Prisma Accelerate или pgBouncer.
  • prisma.$transaction с callback (interactive transaction) держит соединение всё время выполнения — долгие операции внутри приводят к пулу исчерпания.
  • Soft delete через middleware — популярный паттерн, но легко забыть применить его везде, особенно в include-запросах.
  • Prisma не поддерживает partial indexes и expression indexes в schema.prisma — их нужно добавлять вручную в кастомных миграциях.
  • Команды путают скорость разработки с производительностью — Prisma ускоряет первые, но не гарантирует вторую.

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

  • Как Prisma Client обеспечивает типобезопасность? Как генерируются типы?
  • Что такое транзакции в Prisma? Как использовать prisma.$transaction() для интерактивных и batch-транзакций?
  • Что такое Prisma Migrate? Чем отличаются prisma migrate dev и prisma migrate deploy?
  • Как определить связи один-к-одному, один-ко-многим и многие-ко-многим в Prisma?

Что портит ответ

  • Перечислять ошибки без объяснения причин
  • Не отличать beginner mistakes от production failure modes
  • Не предлагать процесс, который предотвращает повторение ошибок

Что слушает интервьюер

  • Знает типичные ошибки при работе с Prisma
  • Понимает причины ошибок
  • Предлагает практики prevention и early detection

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

Проверить себя по теме Prisma →
←Предыдущий вопросКак понять, что проблема в приложении связана с Prisma, а не с индексами, схемой, isolation level или плохим SQL?Следующий вопрос→Какая mental model Prisma важнее всего: unit of work, change tracking, query generation, migrations или generated client?

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

Prismatechnical-communicationtechnology-selectiontrade-off-analysis