Однако это не универсальная концепция. Supabase и Aurabase, которые предоставляют выделенные экземпляры Postgres, не предоставляют один и тот же механизм одинаковым образом. В этой статье подробно описано, что на самом деле документирует Neon при холодном запуске, как сравниваются Vercel Postgres и Supabase и где подходит модель Aurabase, проверенная непосредственно в коде поставщика, а не выведенная из маркетинговой страницы.
Самое необходимое
- Бессерверный холодный запуск означает задержку, добавляемую в тот момент, когда приостановленная база данных должна разбудить свои вычислительные ресурсы перед ответом на первый запрос.
- Neon разделяет хранение и вычисления: компьютер переходит в спящий режим после задокументированного периода бездействия (5 минут по умолчанию в бесплатном плане, настраивается в платных планах).
- Neon документирует перезагрузку, обычно занимающую от нескольких сотен миллисекунд до нескольких секунд. Эта цифра публикуется издателем и может быть измерена в реальном времени с помощью инструмента сообщества neon-latency-benchmarks.vercel.app.
- Vercel Postgres опирается на инфраструктуру Neon: поведение пробуждения следует той же механике, но под другим брендом.
- Supabase предоставляет выделенную базу данных для каждого проекта без холодного запуска для каждого соединения. Только бесплатный план приостанавливает неактивные проекты с возможностью восстановления вручную.
- Aurabase выделяет выделенную базу данных Postgres для каждого проекта, выделенный кластер CNPG или выделенную базу в общем кластере: это не бессерверная модель Neon, проверенная в коде поставщика.
Что такое холодный запуск бессерверной базы данных Postgres?
Холодный запуск происходит, когда компьютер, на котором работает ваша база данных, был переведен в спящий режим из-за бездействия, и новый запрос должен сначала перезапустить его перед запуском. Это не обычная сетевая задержка типичного соединения TCP/TLS: сейчас самое время запустить новый процесс Postgres и восстановить его состояние еще до того, как начнет выполняться первый запрос.
Этот термин в широком смысле происходит от бессерверных вычислений, где обнуленная среда выполнения должна перезапуститься перед обработкой запроса, будь то функция сервера или среда выполнения WebAssembly на периферии. Мы подробно рассказываем об этом механизме на стороне пограничных функций в нашей статье о холодном запуске WebAssembly с контейнерами. Для базы данных механика другая: запускается не скомпилированный двоичный файл, а полноценный сервер Postgres, который должен повторно открыть свои файлы, проверить свое состояние, а затем принять новые соединения.
1. Вход клиента
Запрос поступает в проект, вычисления которого приостановлены.
2. Обнаружение сна
Платформа замечает, что вычисления больше не активны.
3. Перезапуск компьютера
Процесс Postgres перезапускается, необходимое состояние восстанавливается.
4. Запрос обработан
Соединение успешное, запрос выполняется нормально.
Иллюстрация механизма холодного запуска, упрощенная последовательность, без измеренного значения времени.
Почему Neon переводит свои компьютеры в спящий режим и с какой скоростью
Neon разделяет архитектуру своей базы данных на два отдельных уровня: постоянное хранилище, в котором хранятся данные, и вычислительный процесс Postgres, который можно остановить и перезапустить независимо. Согласно официальной документации, такое разделение позволяет Neon приостанавливать вычисления неактивного проекта, не затрагивая данные, а затем перезапускать его по требованию.
В бесплатном плане Neon документирует время бездействия по умолчанию, равное 5 минутам, прежде чем переводить компьютер в спящий режим. Платные планы позволяют настроить этот порог или даже значительно увеличить его для использования при постоянном трафике. Этот тип настроек по умолчанию меняется с обновлениями продукта: проверяйте актуальность документации Neon на момент чтения, а не этот отдельный рисунок.
Этот дизайн служит определенной цели, эфемерной среде. База данных на каждую ветку Git, среда предварительного просмотра по запросу на вытягивание, тестовая база данных, которая используется всего несколько минут в день: непрерывная обработка вычислений для этих целей обходится дорого и не приносит никакой реальной выгоды. Приостановка вычислений между двумя использованиями снижает затраты без удаления данных. Это центральный аргумент бессерверной модели Neon.
Сколько работает неоновый будильник и как его проверить самостоятельно
Neon указывает в своей документации, что перезапуск вычислений обычно занимает от нескольких сотен миллисекунд до нескольких секунд, в зависимости от размера проекта и объема журналов транзакций, которые необходимо воспроизвести до того, как вычисления будут готовы. Это цифра, опубликованная самим издательством, а не независимым аудитом: относитесь к ней как к документально подтвержденному порядку величины, а не как к договорной гарантии.
Для реальных измерений общедоступный инструмент сообщества neon-latency-benchmarks.vercel.app регулярно опрашивает приостановку проектов Neon и отображает наблюдаемую задержку пробуждения. Это тот тип методологии, который имеет большее значение, чем просто цифры в документации: условия тестирования остаются видимыми, а не скрыты за средними маркетинговыми показателями. Мы применяем тот же принцип в нашей собственной методологии тестирования серверной части : публикуйте протокол перед публикацией рисунка.
| Размер проекта | Большее количество связей и том WAL, требующие проверки, делают перезапуск более длительным. |
|---|---|
| Регион и расстояние сети | Увеличивает задержку соединения независимо от самого холодного запуска. |
| Тарифный план | Платные планы позволяют вам настроить или расширить порог неактивности. |
| Частота подключений | Вычисления, которые по-прежнему запрашиваются регулярно, никогда не испытывают такой задержки. |
Vercel Postgres и Neon: один и тот же движок под другим брендом?
Vercel создала свое предложение базы данных Postgres на основе инфраструктуры Neon. О партнерстве было объявлено в 2024 году. На момент написания эта интеграция Postgres предлагается на Vercel Marketplace в качестве варианта хранения наряду с другими поставщиками. Посетите обновленную страницу продукта Vercel: этот тип партнерства быстро развивается на рынке, который меняется каждый квартал.
В частности, поведение сна и пробуждения базы данных Postgres, предоставленной через Vercel, следует той же механике, что и описанная выше непосредственно для Neon. Это не отдельный двигатель со своей собственной моделью холодного запуска, это та же инфраструктура, которая реализована за счет интеграции Vercel.
Имеет ли Supabase аналогичный холодный запуск?
Нет, не таким же образом. Supabase выделяет выделенный экземпляр Postgres для каждого проекта, а не приостанавливает бессерверные вычисления для каждого соединения. Таким образом, в отличие от модели Neon, к каждому новому сеансу после нескольких минут бездействия не добавляется задержка пробуждения.
Однако в бесплатном плане существует другой механизм: Supabase документирует автоматическую приостановку неактивных проектов после длительного периода, порядка недели, согласно его документации, с ручным восстановлением с панели управления, а не с автоматическим пробуждением по первому запросу. Это порог, измеряемый днями, а не минутами, и явное действие, а не прозрачное восстановление: два структурных различия с холодным запуском Neon, а не простая вариация одного и того же механизма. Для полного сравнения архитектуры наше подробное сравнение Aurabase и Supabase документирует и другие расхождения.
И модель Aurabase: почему сравнение не применимо как есть
Aurabase не предлагает бессерверную модель, такую как Neon. Проверено в коде поставщика (aura-provisioner, открытый исходный код на github.com/daylami555/aurabase): каждый проект получает либо выделенный кластер Postgres, управляемый CloudNativePG, оператором Kubernetes CNPG, либо выделенную базу в кластере CNPG, совместно используемую несколькими проектами одной организации, в зависимости от выбранного плана. В обоих случаях это не один компьютер, который приостанавливается и выходит из спящего режима при каждом подключении: это полноценный кластер Postgres с первичными и возможными репликами.
На стороне Aurabase существует механизм гибернации, но он служит другой цели. При длительном бездействии (по умолчанию 7 дней, настраиваемом с помощью переменной среды, пороговое значение проверяется в коде) поставщик переводит неактивные экземпляры в спящий режим, чтобы освободить ресурсы, а не оптимизировать задержку прерывистого использования. Пробуждение спящего кластера CNPG воссоздает его модули из постоянных томов, что структурно более тяжелый механизм, чем простой перезапуск бессерверного процесса.
На сегодняшний день Aurabase не опубликовала никаких данных о задержке пробуждения, ни для того, чтобы заявить о быстром времени пробуждения, ни для сравнения с Neon. Это не тот же продукт, и было бы нечестно выдавать его за таковой без опубликованных измерений.
Эта выделенная архитектура имеет прямой аналог с точки зрения изоляции и предсказуемости производительности: проект не использует свои вычислительные ресурсы совместно с другим проектом, в отличие от общего кластера небольшого размера. Мы подробно рассказываем об этом споре в отдельной статье: выделенная и общая база, реальное влияние на производительность и изоляцию.
Выбирайте в соответствии с вашим вариантом использования
Бессерверная модель Neon предназначена для конкретного случая использования: множество эфемерных сред или сред с очень прерывистым трафиком, где оплата за вычисления, которые работают непрерывно, не имеет экономического смысла. База данных на каждую ветку Git, среда предварительного просмотра по запросу, прототип, тестируемый несколько раз в неделю: случайный холодный запуск становится приемлемым компромиссом по сравнению со счетом, пропорциональным фактическому использованию.
И наоборот, выделенная, постоянно работающая архитектура Postgres становится предпочтительнее, когда задержка при первом соединении должна оставаться предсказуемой: производственный API с регулярным трафиком, серверная часть, которая не может позволить себе случайный скачок задержки при запросе пользователя, или система, где p99 имеет большее значение, чем стоимость изолированной тестовой ветки.
| Поставщик | Модель расчета | Триггер сна | Типичный будильник |
|---|---|---|---|
| Неон | Бессерверные вычисления отделены от хранилища | Бездействие, от 5 мин (бесплатный план) | Автоматический, от доли секунды до секунды (заявлено редактором) |
| Версель Постгрес | Неоновая инфраструктура (партнерство) | То же, что Неон | То же, что Неон |
| Супабаза | Выделенный орган для каждого проекта | Длительное бездействие, только бесплатный план | Вручную, восстановление с панели управления |
| Аурабаза | Выделенный или общий кластер CNPG | Длительное бездействие, по умолчанию 7 дней. | Не предназначено для субсекунд, не опубликовано |
Неоновый будильник: порядок величин задокументирован издателем, не прошел независимую проверку. Порог гибернации Aurabase: проверено в aura-provisioner, переменная HIBERNATE_INACTIVITY_DAYS, по умолчанию 7 дней.
Часто задаваемые вопросы
Что следует помнить
Бессерверный холодный запуск Postgres не является универсальной концепцией: это прямое следствие архитектуры Neon, которая разделяет хранилище и вычисления, чтобы приостановить последние между двумя использованиями. Vercel Postgres унаследовал его напрямую благодаря партнерству с Neon. Supabase и Aurabase, которые предоставляют выделенные экземпляры Postgres, предоставляют другой механизм, измеряемый днями, а не минутами, не предназначенный для той же цели.
Прежде чем выбирать провайдера только по этому критерию, проверьте три вещи: фактический порог бездействия, задокументированный провайдером, можно ли его настроить в вашем плане и оправдывает ли трафик вашего приложения приостановку вычислений. Для использования с реальным прерывистым трафиком, тестовыми ветвями или предварительным просмотром бессерверная модель имеет явное экономическое преимущество. Для производства с регулярным трафиком выделенная архитектура просто устраняет этот вопрос.