node-postgres (pg), запустите его локально командой wrangler dev и развернёте на workers.dev.
Предварительные требования
- Аккаунт Cloudflare. Hyperdrive доступен на тарифах Workers Free и Paid.
- Node.js версии 20 или выше. Это руководство проверено с Node.js 24.21.0, Wrangler 4.145.0,
create-cloudflare2.73.1,pg8.23.1 и Postgres 18. - Аккаунт ClickHouse Cloud.
psqlдля создания базы данных и таблицы. SQL-операторы также можно выполнить в консоли SQL.
Создание сервиса ClickHouse Managed Postgres
В консоли ClickHouse Cloud нажмите New service и выберите Postgres. Инстанс будет готов через несколько минут. Пошаговые инструкции приведены в кратком руководстве.Получение сведений о подключении
Нажмите Connect на левой боковой панели вашего сервиса. Оставьте выбранным вариант Directly и включите Use SSL. URL теперь заканчивается наsslmode=verify-full&sslrootcert=<service-name>-ca-certificate.pem. Нажмите Download CA certificate, чтобы скачать CA‑сертификат для вашего инстанса. Его также можно скачать в разделе Settings → CA Certificate.
В этом руководстве Hyperdrive подключается напрямую через порт 5432, а не через встроенный PgBouncer на порту 6432:
- Hyperdrive сам является пулером соединений и работает в режиме транзакций. Он поддерживает небольшой пул долгоживущих соединений с базой данных и распределяет их между всеми запросами Worker, то есть берёт на себя ту работу, которую иначе выполнял бы PgBouncer. Cloudflare рекомендует указывать для Hyperdrive строку прямого подключения, а не подключения через пул.
- Направить Hyperdrive на порт
6432тоже можно, но цепочка из двух пулеров в режиме транзакций добавляет лишний сетевой переход и ещё одно место, где нужно настраивать размеры пулов, при этом не увеличивая пропускную способность. - Hyperdrive открывает не более примерно 20 соединений на одну конфигурацию в тарифе Workers Free и около 100 — в тарифе Paid. Это укладывается в значение
max_connectionsпо умолчанию, равное 500. Если на одном инстансе работают несколько конфигураций Hyperdrive или другие клиенты, суммируйте их соединения и при необходимости изменитеmax_connectionsв разделе Settings или лимит соединений с источником в Hyperdrive.
Если вы используете IP Access List, учтите, что Hyperdrive подключается из диапазонов IP-адресов Cloudflare, поэтому их необходимо разрешить.
Создание базы данных
Переименуйте загруженный сертификат вca-certificate.pem. Затем создайте базу данных и таблицу notes. Замените <PASSWORD> и хост на значения из модального окна Подключение:
Создание проекта Worker
Создайте Worker на TypeScript из шаблона «Hello World» с помощьюcreate-cloudflare и установите pg:
ca-certificate.pem в каталог проекта. Если вы ещё не работали с Wrangler, выполните npx wrangler login, чтобы авторизовать его в своём аккаунте Cloudflare.
Создание конфигурации Hyperdrive
Hyperdrive всегда шифрует соединение с базой данных, но по умолчанию не проверяет сертификат по CA вашего инстанса. Чтобы добиться поведения, аналогичногоsslmode=verify-full, сначала загрузите CA‑сертификат в свой аккаунт Cloudflare:
ID из вывода команды. В строке подключения указываются порт 5432 и база данных guide_cloudflare, параметры SSL в ней не задаются: TLS настраивается с помощью флагов --sslmode и --ca-certificate-id:
--sslmode verify-full он проверяет, что сертификат сервера подписан загруженным вами CA и соответствует имени хоста. Если хотя бы одна из проверок не пройдена, команда завершается ошибкой, например cert verification failed - unable to get local issuer certificate, и конфигурация не создаётся. Пароль хранится в конфигурации Hyperdrive в вашем аккаунте Cloudflare, а не в проекте.
--binding HYPERDRIVE --update-config добавляет конфигурацию в wrangler.jsonc, чтобы ваш Worker мог обращаться к ней через env.HYPERDRIVE. Если в проекте используется wrangler.toml, Wrangler этот файл не изменяет — вставьте в него фрагмент [[hyperdrive]], который выводит команда.
Настройка Worker
Для работыpg требуется слой совместимости с Node.js. Откройте wrangler.jsonc и добавьте флаг nodejs_compat рядом с compatibility_date. Соответствующий фрагмент файла будет выглядеть так:
wrangler.jsonc
wrangler.toml, добавьте строку compatibility_flags = ["nodejs_compat"] под compatibility_date. Если в файле уже есть compatibility_flags, добавьте nodejs_compat в этот список.
Заново сгенерируйте типы TypeScript, чтобы для env.HYPERDRIVE был определён тип:
@cloudflare/workers-types, команда wrangler types выведет инструкции по переходу на сгенерированные типы.
Выполнение запросов к базе данных
Замените содержимоеsrc/index.ts кодом Worker, который создаёт заметку при запросе POST /notes и возвращает список всех заметок при запросе GET /notes. Если у вас уже есть Worker, просто добавьте такую же обработку /notes в свой обработчик fetch:
src/index.ts
env.HYPERDRIVE.connectionString указывает на Hyperdrive, а не на ваш инстанс. Связь между Worker и Hyperdrive не выходит за пределы Cloudflare, поэтому параметры SSL для неё не нужны. Проверенное TLS‑соединение с Postgres устанавливает сам Hyperdrive.
Hyperdrive работает в режиме транзакций, как PgBouncer: каждая транзакция может использовать отдельное соединение с Postgres. Параметризованные запросы, транзакции и именованные подготовленные операторы из
pg полностью поддерживаются. Не рассчитывайте на сохранение состояния сеанса между запросами (например, SET на уровне сеанса) — вместо этого используйте SET LOCAL внутри транзакции.Локальный запуск
wrangler dev запускает Worker на вашем компьютере. При локальном запуске Hyperdrive не использует пул соединений: привязка подключается напрямую к базе данных, указанной в CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING>. Укажите в этой переменной строку прямого подключения с параметром sslmode=verify-full и путём к CA‑сертификату, после чего запустите Worker:
sslrootcert задаётся относительно каталога, из которого вы запускаете wrangler dev.
Во втором терминале создайте заметку:
pg возвращает столбцы типа bigint в виде строк, поэтому значение id — "1", а не 1.
Развертывание
Разверните воркер:workers.dev. Создайте заметку с помощью развернутого Worker:
https://hyperdrive-notes.<your-subdomain>.workers.dev/notes в браузере — там должны отобразиться обе заметки. Ответ будет выглядеть так:
Проверка в консоли
Откройте консоль SQL на левой боковой панели вашего сервиса, развернитеguide_cloudflare, затем public и выберите таблицу notes. В ней будут обе заметки:
Очистка ресурсов
Чтобы удалить всё, что вы создали в аккаунте Cloudflare, удалите Worker, конфигурацию Hyperdrive и CA‑сертификат:wrangler cert delete выдаёт ошибку Certificate cannot be deleted while in use, подождите минуту после удаления конфигурации Hyperdrive и повторите команду.
Дальнейшие шаги
- Подключение: строки подключения, PgBouncer и TLS
- Настройки: параметры Postgres, например
max_connections - Реплики для чтения: масштабирование нагрузки на чтение
- Документация Hyperdrive: кэширование запросов, настройка пула соединений и обсервабилити