Neon
Коротко: Провайдер «бессерверного Postgres» — настоящая база данных PostgreSQL, но без управления собственным сервером, со строкой подключения вместо ручной установки.
Подробнее: В панели вы получаете строку подключения («Connection Details»), которую можно в любой момент просмотреть открытым текстом (в отличие, например, от ключа API, который показывается один раз). Технически он выполняет совершенно обычный SQL, совместимый со стандартными инструментами вроде pg_dump/psql.
Подробности
Разделение хранилища и вычислений
Neon технически разделяет хранилище и вычисления: сами данные живут на распределённом слое хранения (внутри — специально построенная система на основе журнально-структурированного хранения, а не классической раскладки файловой системы Postgres), тогда как «вычислительный» экземпляр — собственно процесс PostgreSQL, отвечающий на запросы, — можно запускать и выключать по необходимости без потери данных. Именно это делает возможным Neon Auto-Suspend, и это принципиальное отличие от классического хостинга «арендуй целый сервер, работающий круглосуточно» (например, классический экземпляр RDS в AWS или самостоятельно управляемый сервер Postgres). Эта архитектура — часть более широкой тенденции в хостинге баз данных последних лет — «бессерверный Postgres» — в которую помимо Neon входят и такие провайдеры, как Supabase (дополнительно объединяющий вокруг Postgres функции аутентификации, хранилища и реального времени) или AWS Aurora Serverless, хотя глубина разделения хранилища и вычислений различается.
Ветвление
Функция, которой в таком виде нет в классической установке Postgres: ветвление (branching). Вы можете в любой момент создать полную копию («ветку») боевой базы данных, которая поначалу практически не требует дополнительного хранилища (copy-on-write — новые блоки пишутся лишь тогда, когда данные в ветке действительно меняются). Это полезно, например, чтобы сначала проверить рискованную миграцию на копии, прежде чем выполнять её на настоящей боевой базе данных, или чтобы автоматически создавать отдельную изолированную копию базы данных для каждого предварительного развёртывания pull request (распространённый шаблон CI/CD: одна ветка на PR, удаляется автоматически после слияния/закрытия PR). Ветки можно создавать как через панель, так и через Neon CLI/API, что хорошо интегрируется в автоматизированные конвейеры развёртывания.
Строка подключения и пулинг
Строка подключения обычно имеет вид:
postgresql://<user>:<password>@<endpoint>.neon.tech/<database>?sslmode=require
sslmode=require в Neon обязателен — незашифрованные соединения отклоняются на стороне сервера, что может привести к загадочному сообщению об ошибке, если вы случайно проверите соединение локально без этого флага. Для соединений из бессерверных сред (например, Vercel Functions, потенциально открывающих новые соединения на каждый запрос) Neon дополнительно предлагает строку «pooled connection» через PgBouncer (отдельный пулер соединений между приложением и собственно экземпляром Postgres) в режиме «transaction pooling». Это важно, поскольку сам Postgres допускает лишь ограниченное число одновременных соединений (обычно порядка сотен для небольших размеров вычислений) — при множестве коротких вызовов бессерверных функций, каждая из которых открывает своё соединение, этот лимит иначе быстро исчерпывался бы («исчерпание соединений»). Недостаток строки с пулингом: некоторые функции Postgres, требующие долгоживущего сеанса (например, LISTEN/NOTIFY, подготовленные операторы через границы сеансов или консультативные блокировки), в режиме transaction pooling работают ненадёжно — для них нужно прямое соединение без пулинга.
В сравнении с альтернативами
По сравнению с Supabase (который значительно шире, включая собственную систему аутентификации и хранилища) Neon намеренно сделан компактным — чистая база данных Postgres с бессерверными свойствами, без дополнительных функций платформы. По сравнению с PlanetScale (основанным на MySQL-совместимом Vitess, а не на настоящем Postgres) Neon сохраняет полную совместимость с экосистемой Postgres — любой инструмент, работающий с «настоящим» Postgres (включая pg_dump/psql, см. pg_dump и psql), работает без изменений.
См. также: pg_dump и psql, Drizzle ORM