D1
Что это такое
Представьте таблицу с аккуратными строками и столбцами, у которой ваше приложение может спрашивать точные вещи, например «покажи все оплаченные заказы за июнь». D1 — это бессерверная SQL-база данных от Cloudflare, то самое упорядоченное хранилище таблиц, к которому можно делать запросы, построенное на SQLite. («Бессерверная» означает, что вам не нужно настраивать или поддерживать серверы — всё это берёт на себя провайдер.) (Structured Query Language, язык структурированных запросов) — это стандартный язык, на котором задают вопросы базе данных. Вы создаёте базу, привязываете её к проекту Workers или Pages и обращаетесь к ней обычным SQL через небольшой JavaScript-API (программный интерфейс, набор команд, которые вы вызываете). Нет серверов, размер которых нужно подбирать, и пулов соединений, которыми нужно управлять — Cloudflare берёт на себя хранение, репликацию и масштабирование, а вы платите за прочитанные и записанные строки.
Сильные стороны
- Настоящий SQL (диалект SQLite) — привычные
SELECT,JOIN, транзакции и индексы. - Бессерверность: никакого провижининга, никаких лимитов соединений, масштабируется до нуля.
- Тесная интеграция с Workers и Pages через единую привязку.
- Репликация для чтения размещает копии рядом с пользователями для чтения с низкой задержкой.
- Дёшево для типичных нагрузок приложений, с пригодным к использованию бесплатным тарифом.
Компромиссы
- Семантика SQLite: огромные наборы данных и очень высокая конкурентность записи — не его конёк.
- Лимиты на размер одной базы означают, что очень большие данные могут потребовать шардинга (разбиения на несколько баз данных) или R2 (файлового хранилища Cloudflare).
- Новее, чем Postgres/MySQL, поэтому инструментарий и экосистема всё ещё развиваются.
- Лучше всего обращаться к ней из ; использовать её извне Cloudflare менее естественно.
Когда это использовать
Выбирайте D1 для данных приложения в проекте, размещённом на Cloudflare: записи пользователей, контент, настройки, метаданные сессий — всё, что укладывается в реляционную модель и живёт рядом с вашим приложением на Workers или Pages.
Соответствие vibe coding
D1 — хороший вариант по умолчанию, когда агент уже строит на Workers, потому что база данных, схема и запросы живут в одном проекте. Попросите агента хранить миграции в версионируемых файлах .sql и применять их через Wrangler, чтобы схема была воспроизводимой. Привязка делает запрос однострочником внутри обработчика.
# wrangler.toml
[[d1_databases]]
binding = "DB"
database_name = "app-db"
database_id = "your-d1-id"
# Create a DB and run a migration
npx wrangler d1 create app-db
npx wrangler d1 execute app-db --file=./schema.sql