← Cloudflare Workers / workers / platform
Выберите продукт для работы с данными или хранилищем
В этом руководстве описаны продукты для хранения данных и работы с базами данных, доступные в составе Cloudflare Workers, включая рекомендуемые сценарии использования и лучшие практики.
Выберите продукт для хранения данных
В следующей таблице показано соответствие наших продуктов для хранения данных и баз данных общепринятым отраслевым терминам, а также приведены рекомендуемые сценарии использования:
| Сценарий использования | Продукт | Подходит для |
|---|---|---|
| Хранилище ключ-значение | Workers KV | Данные конфигурации, метаданные маршрутизации сервисов, персонализация (A/B-тестирование) |
| Объектное хранилище / blob-хранилище | R2 | Веб-ресурсы для пользователей, изображения, наборы данных для машинного обучения и обучения моделей, аналитические наборы данных, данные журналов и событий. |
| Ускорение базы данных Postgres или MySQL | Hyperdrive | Подключение к существующей базе данных в облаке или локально с использованием имеющихся у вас драйверов баз данных и ORM. |
| Глобальная координация и serverless с сохранением состояния | Durable Objects | Создание совместных приложений; глобальная координация между клиентами; приложения WebSocket в реальном времени; строго согласованное транзакционное хранилище. |
| Легковесная SQL-база данных | D1 | Реляционные данные, включая профили пользователей, списки товаров и заказы, и/или данные клиентов. |
| Обработка задач, группировка и обмен сообщениями | Queues | Обработка фоновых задач (письма, уведомления, обращения к API), очереди сообщений и отложенные задачи. |
| Векторный поиск и запросы к эмбеддингам | Vectorize | Хранение эмбеддинги от AI моделей для задач семантического поиска и классификации. |
| Потоковый приём данных | Pipelines | Потоковый приём и обработка данных, включая аналитику кликстрима, телеметрию и журналы, а также структурированные данные для выполнения запросов |
| Метрики временных рядов | Analytics Engine | Записывайте и запрашивайте данные временных рядов с высокой кардинальностью, метрики использования и телеметрию уровня сервиса с помощью Workers и (или) SQL. |
Приложения могут опираться сразу на несколько продуктов для хранения данных и баз данных: например, использовать Workers KV для данных сессий, R2 для хранения больших файлов, медиаресурсов и файлов, загруженных пользователями, а Hyperdrive применять для подключения к размещённой базе данных Postgres или MySQL.
Параметры базы данных SQL
При создании приложений на Workers доступны три варианта SQL-баз данных.
- Hyperdrive если у вас уже есть база данных Postgres или MySQL, требуются крупные (1TB, 100TB и более) единые базы данных и (или) вы хотите использовать уже имеющиеся инструменты для работы с базами данных. Hyperdrive также можно подключать к таким платформам баз данных, как PlanetScale ↗ или Neon ↗.
- D1 для лёгких бессерверных приложений с преобладанием операций чтения и глобальной аудиторией, которая выигрывает от репликация для чтения, и не требуют управления и обслуживания традиционной РСУБД.
- Durable Objects для рабочих нагрузок с состоянием в бессерверной среде, SQL-состояния для каждого пользователя или клиента, а также построения распределённых систем (D1 и Queues построены на Durable Objects), для которых важна строгая сериализуемость ↗ включает глобальный порядок выполнения запросов и операций с хранилищем.
Хранилище сессий
Мы рекомендуем использовать Workers KV для хранения данных сессий, учётных данных (API-ключей) и/или конфигурационных данных. Такие данные обычно читаются с высокой частотой (тысячи RPS и более), редко изменяются (в пределах ограничения KV в 1 запись RPS на уникальный ключ) и не требуют немедленной согласованности.
Часто считываемые ключи выигрывают благодаря KV внутренний кэш, и повторные чтения таких «горячих» ключей обычно имеют задержку в диапазоне от 500 мкс до 10 мс.
Фреймворки аутентификации, такие как OpenAuth ↗ используйте Workers KV в качестве хранилища сессий при развертывании в Cloudflare, а Cloudflare Access использует KV для безопасного хранения и распространения учетных данных пользователей, чтобы их можно было проверять максимально близко к пользователю и снизить общую задержку.
Обзоры продуктов
Workers KV
Workers KV представляет собой согласованное в конечном счёте хранилище данных «ключ-значение», которое кеширует данные в глобальной сети Cloudflare.
Это идеальный вариант для проектов, которым требуется:
- Большой объём операций чтения и/или повторные чтения одних и тех же ключей.
- Глобальные чтения с низкой задержкой (обычно до 10 мс для часто запрашиваемых ключей)
- Время жизни (TTL) для каждого объекта.
- Распределённое хранилище конфигурации и/или сеансов.
Чтобы начать работу с KV:
- Узнайте, как Как работает KV.
- Создайте Пространство имён KV.
- Просмотрите API среды выполнения KV.
- Подробнее о KV Лимиты.
R2
R2 представляет собой S3-совместимое объектное хранилище, которое позволяет разработчикам хранить большие объёмы неструктурированных данных без платы за исходящий трафик, характерной для типичных облачных хранилищ.
Это идеальный вариант для проектов, которым требуется:
- Хранилище для файлов, к которым обращаются редко.
- Хранилище больших объектов (например, гигабайты и более на объект).
- Строгая согласованность в рамках каждого объекта.
- Хранилище ресурсов для сайтов (см. руководство по кешированию)
Чтобы начать работу с R2:
- Прочитайте Руководство по началу работы.
- Подробнее о R2 Лимиты.
- Просмотрите R2 Workers API.
Durable Objects
Durable Objects обеспечивают координацию с низкой задержкой и согласованное хранилище для платформы Workers благодаря глобальной уникальности и транзакционному API хранилища.
-
Global Uniqueness гарантирует, что во всём мире одновременно будет работать только один экземпляр класса Durable Object с заданным ID. Запросы к ID Durable Object маршрутизируются средой выполнения Workers в тот дата-центр Cloudflare, которому принадлежит этот Durable Object.
-
Транзакционный API хранилища предоставляет Durable Object строго согласованное хранилище «ключ-значение». Каждый объект может читать и изменять только те ключи, которые связаны именно с ним. Выполнение Durable Object однопоточное, но несколько событий запроса всё равно могут обрабатываться не в том порядке, в котором они поступили в объект.
Это идеальный вариант для проектов, которым требуется:
- Совместная работа в реальном времени (например, чат-приложение или игровой сервер).
- Согласованное хранилище.
- Локализация данных.
Чтобы начать работу с Durable Objects:
- Прочитайте вводная запись в блоге ↗.
- Просмотрите Документация по Durable Objects.
- Начало работы с Durable Objects.
- Подробнее о Durable Objects Лимиты.
D1
D1 это встроенная бессерверная база данных Cloudflare. С D1 можно создать базу данных, импортировав данные или определив таблицы и написав запросы в Worker или через API.
D1 отлично подходит для:
- Персистентное реляционное хранилище для данных пользователей, данных аккаунтов и других структурированных наборов данных.
- Сценарии использования, которые требуют произвольных запросов к данным (с помощью SQL).
- Нагрузки с высоким соотношением чтения к записи (большинство веб-приложений).
Чтобы начать работу с D1:
- Прочитайте документация
- Следуйте Руководство по началу работы чтобы создать свою первую базу данных D1.
- Просмотрите D1 Workers Binding API.
Queues
Cloudflare Queues позволяет разработчикам отправлять и получать сообщения с гарантированной доставкой. Сервис интегрируется с Cloudflare Workers и предлагает доставку не менее одного раза, пакетную обработку сообщений и не взимает плату за исходящий трафик.
Queues отлично подходит для:
- Перенос задач из запроса для выполнения позже.
- Передавайте данные от одного Worker к другому (межсервисное взаимодействие).
- Буферизация или пакетная обработка данных перед записью в вышестоящие системы, включая сторонние API или Cloudflare R2.
Чтобы начать работу с Queues:
Hyperdrive
Hyperdrive ускоряет запросы к базам данных MySQL и Postgres, обеспечивая быстрый доступ к данным из любой точки мира независимо от местоположения ваших пользователей.
Hyperdrive позволяет:
- Подключайтесь к существующей базе данных из Workers без накладных расходов на соединение.
- Кешируйте часто выполняемые запросы в глобальной сети Cloudflare, чтобы сократить время отклика для популярного контента.
- Снизьте нагрузку на исходную базу данных с помощью пулинга соединений.
Чтобы начать работу с Hyperdrive:
- Подключение Hyperdrive в вашу существующую базу данных.
- Подробнее о том, как Hyperdrive ускоряет запросы к вашей базе данных.
Pipelines
Pipelines представляет собой потоковый сервис приёма данных, который позволяет принимать большие объёмы данных в реальном времени без необходимости управлять какой-либо инфраструктурой.
Pipelines позволяет:
- Принимайте данные с чрезвычайно высокой пропускной способностью (десятки тысяч записей в секунду и более)
- Группируйте данные и записывайте их напрямую в объектное хранилище, готовые для запросов
- (В будущем) Преобразование и агрегация данных во время приёма
Чтобы начать работу с Pipelines:
- Создайте Pipeline которая может группировать и записывать записи в R2.
Analytics Engine
Analytics Engine представляет собой базу данных временных рядов и метрик Cloudflare, которая с помощью встроенного API позволяет записывать точки данных из Workers и вести аналитику с неограниченной кардинальностью в любом масштабе, а затем запрашивать эти данные напрямую с помощью SQL.
С Analytics Engine вы можете:
- Предоставьте собственную аналитику вашим клиентам
- Создавайте системы биллинга на основе использования
- Оценивайте состояние сервиса в разрезе клиентов или пользователей
- Добавляйте инструментирование к часто вызываемым участкам кода, не снижая производительность и не перегружая внешние системы аналитики событиями
Cloudflare использует Analytics Engine внутри компании для хранения и формирования метрик по отдельным продуктам, таким как D1 и R2, в промышленном масштабе.
Чтобы начать работу с Analytics Engine:
- Узнайте, как начало работы с Analytics Engine
- См. пример записи данных временных рядов в Analytics Engine
- Изучите SQL API для чтения данных из наборов данных Analytics Engine
Vectorize
Vectorize представляет собой глобально распределённую векторную базу данных, которая позволяет создавать full-stack приложения на основе ИИ с использованием Cloudflare Workers и Workers AI.
С помощью Vectorize вы можете:
- Храните эмбеддинги от любой модели векторных эмбеддингов (Bring Your Own embeddings) для задач семантического поиска и классификации.
- Добавляйте контекст к запросам к большой языковой модели (LLM), используя векторный поиск как часть Генерация с дополнением поиском (RAG)-процесс.
- Фильтр по метаданным векторов чтобы сузить область поиска и вернуть более релевантные результаты.
Чтобы начать работу с Vectorize:
- Создание первой векторной базы данных.
- Объединить Workers AI и Vectorize чтобы генерировать, хранить и запрашивать текстовые эмбеддинги.
- Подробнее о как работают векторные базы данных.
SQL в Durable Objects и D1
Cloudflare Workers предлагает serverless базу данных на основе SQLite: D1. Как следует сравнивать SQLite в Durable Objects и D1?
D1 является управляемым продуктом для баз данных.
D1 вписывается в привычную для разработчиков архитектуру, где серверы приложений взаимодействуют с базой данных по сети. Обычно в роли серверов приложений выступают Workers, однако D1 также поддерживает внешний доступ без Worker через HTTP API ↗, который помогает раскрыть сторонние инструменты поддержка D1.
D1 стремится предложить набор возможностей «из коробки», включая упомянутый выше HTTP API, управление схемой базы данных, импорт и экспорт данных, а также аналитика запросов к базе данных.
В D1 код вашего приложения и SQL-запросы к базе данных не находятся в одном месте, что может влиять на производительность приложения. Если производительность D1 вызывает опасения, в Workers есть Smart Placement чтобы динамически запускать ваш Worker в оптимальном месте и снижать общую задержку запросов Worker с учетом всех сервисов, с которыми он взаимодействует, включая D1.
SQLite в Durable Objects представляет собой низкоуровневый строительный блок вычислений с хранилищем для распределённых систем.
Durable Objects по замыслу доступны только из Workers.
Durable Objects требуют немного больше усилий, но взамен дают больше гибкости и контроля. При работе с Durable Objects нужно реализовать две части кода, которые выполняются в разных местах: Worker на переднем плане, направляющий входящие запросы из интернета к нужному Durable Object, и сам Durable Object, работающий на той же машине, что и база данных SQLite. Вы сами решаете, что где выполняется, и в некоторых случаях приложению выгодно выполнять часть бизнес-логики прямо рядом с базой данных.
При использовании SQLite в Durable Objects вам может понадобиться самостоятельно реализовать часть инструментов для работы с базой данных, которые в D1 доступны из коробки.
Тарификация и лимиты SQL-запросов должны быть одинаковыми для D1 (цены, ограничения) и SQLite в Durable Objects (цены, ограничения).