← Cloudflare Workers / workers / databases
Подключение к базам данных
Cloudflare Workers может подключаться к вашим данным и выполнять запросы как в SQL, так и в NoSQL базах данных, включая:
- собственный D1, бессерверная база данных на основе SQL.
- Традиционные размещённые реляционные базы данных, включая Postgres и MySQL, с использованием Hyperdrive (рекомендуется), чтобы значительно ускорить доступ.
- Бессерверные базы данных, включая Supabase, MongoDB Atlas, PlanetScale и Prisma.
SQL-база данных D1
D1 является собственной бессерверной SQL-базой данных Cloudflare. Она оптимизирована для глобального доступа из Workers и масштабируется за счёт множества небольших баз данных (до 10 ГБ), например отдельных баз для каждого пользователя, арендатора или сущности. Как и у некоторых других бессерверных баз данных, стоимость D1 складывается из затрат на запросы и хранение.
| База данных | Библиотека или драйвер | Способ подключения |
|---|---|---|
| D1 | привязка Workers, интегрируется с Prisma ↗, Drizzle ↗, и другие ORM | привязка Workers, REST API |
Традиционные SQL-базы данных
Традиционные базы данных используют SQL-драйверы, которые используют TCP-сокеты чтобы подключаться к базе данных. TCP является фактическим стандартным протоколом, который используют многие базы данных, такие как PostgreSQL и MySQL, для подключения клиентов. Эти драйверы также широко совместимы с вашими предпочитаемыми ORM-библиотеками и построителями запросов.
Сюда также входят бессерверные базы данных, совместимые с PostgreSQL или MySQL, например Supabase, Neon, либо PlanetScale (либо MySQL или PostgreSQL), к которому можно подключиться, используя как встроенные TCP-сокеты и Hyperdrive или серверлесс-драйверы на основе HTTP (подробности ниже).
| База данных | Интеграция | Библиотека или драйвер | Способ подключения |
|---|---|---|---|
| Postgres | Прямое подключение | node-postgres ↗,Postgres.js ↗ | TCP-сокет через драйвер базы данных, используя Hyperdrive для оптимальной производительности (необязательно, но рекомендуется) |
| MySQL | Прямое подключение | mysql2 ↗, mysql ↗ | TCP-сокет через драйвер базы данных, используя Hyperdrive для оптимальной производительности (необязательно, но рекомендуется) |
Бессерверные базы данных
Бессерверные базы данных могут предоставлять прямое подключение к базовой базе данных либо HTTP-прокси и драйверы (также известные как serverless-драйверы).
Для бессерверных баз данных PostgreSQL и MySQL можно подключаться напрямую к базе данных, используя привычные драйверы и ORM, а для ускорения подключения и пулинга соединений применять Hyperdrive (рекомендуется). При использовании Hyperdrive пул соединений управляется во всех регионах Cloudflare и оптимизирован для использования из Workers.
Также можно использовать библиотеки бессерверных драйверов для подключения к HTTP-прокси, которыми управляет провайдер базы данных. Они также могут обеспечивать пул соединений для традиционных SQL баз данных и сокращать количество обращений, необходимых для установления безопасного соединения, подобно Hyperdrive.
| База данных | Библиотека или драйвер | Способ подключения |
|---|---|---|
| PlanetScale ↗ | Hyperdrive (MySQL), Hyperdrive (PostgreSQL), @planetscale/database ↗ | mysql2, mysql, node-postgres, Postgres.js, либо через API с помощью клиентской библиотеки |
| Supabase ↗ | Hyperdrive, @supabase/supabase-js ↗ | node-postgres,Postgres.js, либо через API с помощью клиентской библиотеки |
| Prisma ↗ | prisma ↗ | API через клиентскую библиотеку |
| Neon ↗ | Hyperdrive, @neondatabase/serverless ↗ | node-postgres,Postgres.js, либо через API с помощью клиентской библиотеки |
| Hasura ↗ | API | GraphQL API через fetch() |
| Upstash Redis ↗ | @upstash/redis ↗ | API через клиентскую библиотеку |
| TiDB Cloud ↗ | @tidbcloud/serverless ↗ | API через клиентскую библиотеку |
После установки необходимых пакетов используйте API, предоставляемые этими пакетами, для подключения к базе данных и выполнения операций с ней. Подробные инструкции для конкретных сервисов см. по ссылкам ниже.
Аутентификация
Если ваша база данных требует аутентификации, используйте Wrangler secrets для безопасного хранения учётных данных. Для этого создайте секрет в проекте Cloudflare Workers с помощью следующей команды wrangler secret команда:
wrangler secret put <SECRET_NAME>Затем получите значение секрета в коде с помощью следующего фрагмента кода:
const secretValue = env.<SECRET_NAME>;Используйте значение секрета для аутентификации во внешнем сервисе. Например, если внешний сервис требует для аутентификации ключ API или имя пользователя и пароль базы данных, укажите их через библиотеку или API соответствующего сервиса.
Для служб, которым требуется аутентификация mTLS, используйте сертификаты mTLS чтобы предъявить клиентский сертификат.
Следующие шаги
- Узнайте, как подключиться к существующая база данных PostgreSQL с Hyperdrive.
- Откройте для себя другие доступные варианты хранения для использования с Workers.
- Создание первой базы данных с Cloudflare D1.