Служба Firebase Data Connect состоит из трех основных компонентов:
- Базовая база данных PostgreSQL с собственной схемой SQL.
- схема приложения Data Connect (объявленная в ваших файлах
.gql
) - ряд соединителей (объявленных в ваших файлах
.gql
).
Схема SQL — это источник достоверности ваших данных, схема Data Connect — это то, как ваши соединители могут видеть эти данные, а соединители объявляют API, которые ваши клиенты могут использовать для доступа к этим данным.
При развертывании службы Data Connect с помощью интерфейса командной строки вы переносите свою схему SQL, затем обновляете схему Data Connect , а затем обновляете каждый из своих соединителей.
Важные концепции развертывания
Чтобы полностью понять развертывание, важно отметить ключевые понятия о схемах и соединителях.
Развертывание схемы
Развертывание схемы Data Connect влияет на схему SQL для вашей базы данных Cloud SQL. Data Connect помогает вам переносить схемы во время развертывания, независимо от того, работаете ли вы с новой базой данных или вам необходимо неразрушающим образом адаптировать существующую базу данных.
При миграции схемы Data Connect предусмотрены два разных режима проверки схемы: строгий и совместимый .
Строгая проверка режима требует, чтобы схема базы данных точно соответствовала схеме приложения, прежде чем схему приложения можно будет обновить. Любые таблицы или столбцы, которые не используются в вашей схеме Data Connect будут удалены из базы данных.
Проверка режима совместимости требует, чтобы схема базы данных была совместима со схемой приложения, прежде чем схему приложения можно будет обновить; любые дополнительные изменения, удаляющие схемы, таблицы или столбцы, не являются обязательными.
Совместимость означает, что миграция схемы влияет только на таблицы и столбцы, указанные в схеме вашего приложения. Элементы в вашей базе данных, которые не используются схемой вашего приложения, остаются неизмененными. Поэтому после развертывания ваша база данных может содержать неиспользуемые:
- Схемы
- Таблицы
- Столбцы
Развертывания соединителей
Запросы и изменения Data Connect не отправляются клиентским кодом и не выполняются на сервере. Вместо этого при развертывании эти операции Data Connect сохраняются на сервере, как и Cloud Functions . Это означает, что развертывание может нарушить работу существующих пользователей.
Следуйте рабочему процессу развертывания
Вы можете работать над проектом Data Connect как в локальном каталоге проекта, так и в консоли Firebase .
Рекомендуемый процесс развертывания включает в себя:
- Перечисление развернутых на данный момент схем и соединителей с помощью
firebase dataconnect:services:list
. - Управление любыми обновлениями схемы .
- Проверьте различия в схеме SQL между вашей базой данных Cloud SQL и локальной схемой Data Connect с помощью
firebase dataconnect:sql:diff
. - При необходимости выполните миграцию схемы SQL с помощью
dataconnect:sql:migrate
.
- Проверьте различия в схеме SQL между вашей базой данных Cloud SQL и локальной схемой Data Connect с помощью
- Выполнение развертываний схемы и подключения путем запуска
firebase deploy
только для вашей схемы, только для ваших соединителей или для комбинаций ресурсов.
Развертывание ресурсов Data Connect и управление ими
Перед выполнением развертываний рекомендуется проверить производственные ресурсы.
firebase dataconnect:services:list
При работе в локальном каталоге проекта вы обычно используете команду firebase deploy
для развертывания вашей схемы и соединителей в рабочей среде с интерактивной обратной связью.
Используя любую команду deploy
, флаг --only dataconnect
позволяет отделить развертывания Data Connect от других продуктов в вашем проекте.
Обычное развертывание
firebase deploy --only dataconnect
В этом обычном развертывании интерфейс командной строки Firebase пытается развернуть вашу схему и соединители.
Он подтверждает, что новая схема не нарушает существующие соединители. Следуйте рекомендациям при внесении критических изменений.
Он также проверяет, что схема SQL уже перенесена, прежде чем обновлять схему Data Connect . В противном случае он автоматически предложит вам выполнить все необходимые действия по переносу схем .
--force
развертывание флага
firebase deploy --only dataconnect --force
Если ни проверка соединителя, ни проверка схемы SQL не вызывают беспокойства, вы можете повторно запустить команду с --force
чтобы игнорировать их.
Развертывание --force
по-прежнему проверяет, соответствует ли схема SQL схеме Data Connect , предупреждает о несовместимости и выдает запросы.
Развертывание выбранных ресурсов
Для развертывания с более детальным контролем используйте флаг --only
с аргументом serviceId
. Чтобы развернуть только изменения схемы для конкретной службы:
firebase deploy --only dataconnect:serviceId:schema
Вы также можете развернуть все ресурсы для указанного соединителя и службы.
firebase deploy --only dataconnect:serviceId:connectorId
Наконец, вы можете развернуть схему и все соединители для одной службы.
firebase deploy --only dataconnect:serviceId
Откат развертывания
Чтобы выполнить откат вручную, проверьте предыдущую версию кода и разверните ее. Если исходное развертывание включало деструктивные критические изменения, возможно, вам не удастся полностью восстановить удаленные данные.
Перенос схем базы данных
Если вы быстро создаете прототипы, экспериментируете со схемами и знаете, что изменения в вашей схеме разрушительны, вы можете запланировать использование инструментов Data Connect для проверки изменений и контроля над выполнением обновлений.
Изменения схемы Diff SQL
Вы можете проверить изменения:
firebase dataconnect:sql:diff
Вы можете передать список услуг, разделенных запятыми.
Команда сравнивает локальную схему сервиса с текущей схемой соответствующей базы данных Cloud SQL. Если есть разница, он распечатывает команды SQL, которые будут выполнены для устранения этой разницы.
Применить изменения
Когда вы будете удовлетворены и готовы развернуть изменения в экземпляре схемы Cloud SQL, введите команду firebase dataconnect:sql:migrate
. Вам будет предложено утвердить изменения.
firebase dataconnect:sql:migrate [serviceId]
В интерактивных средах отображаются операторы миграции SQL и подсказки к действию.
Миграция в строгом или совместимом режиме
В совершенно новом проекте применяется режим проверки схемы по умолчанию. Поведение команды migrate
заключается в том, чтобы применить все изменения схемы базы данных, необходимые для схемы вашего приложения, а затем предложить вам утвердить дополнительные операции, которые удаляют схемы, таблицы или столбцы, чтобы заставить вашу схему базы данных точно соответствовать схеме вашего приложения.
Вы можете настроить это поведение, изменив файл dataconnect.yaml
. Раскомментируйте ключ schemaValidation
и объявите COMPATIBLE
, чтобы при миграции применялись только необходимые изменения.
schemaValidation: "COMPATIBLE"
Или установите поведение STRICT
, чтобы все изменения схемы применялись, а схема вашей базы данных принудительно соответствовала схеме вашего приложения.
schemaValidation: "STRICT"
Дополнительную информацию см. в справочнике по интерфейсу командной строки Data Connect .
Рекомендации по управлению схемами и соединителями
Firebase рекомендует следовать некоторым практикам в ваших проектах Data Connect .
Минимизируйте критические изменения
- Firebase рекомендует хранить схему Data Connect и файлы соединителя в системе контроля версий.
- По возможности избегайте нарушения изменений. Некоторые распространенные примеры критических изменений включают в себя:
- Удаление поля из вашей схемы
- Создание поля, допускающего значение NULL, в вашей схеме, не допускающего значения NULL (т. е.
Int
->Int!
). - Переименование поля в вашей схеме.
- Если вам все же необходимо удалить поле из схемы, рассмотрите возможность разделения его на несколько развертываний, чтобы минимизировать влияние:
- Сначала удалите все ссылки на поле в ваших коннекторах и разверните изменение.
- Затем обновите свои приложения, чтобы использовать вновь созданные SDK.
- Наконец, удалите поле в файле схемы
.gql
, перенесите схему SQL и повторите развертывание.
Используйте строгий режим при работе с новыми базами данных
Если вы используете Data Connect с новой базой данных и активно разрабатываете схему своего приложения и хотите, чтобы схема вашей базы данных точно соответствовала схеме вашего приложения, вы можете указать schemaValidation: "STRICT"
в вашем dataconnect.yaml
.
Это также обеспечит применение дополнительных изменений.
Используйте совместимый режим, если в вашей базе данных есть производственные данные.
Если вы вносите изменения в базу данных, содержащую производственные данные, мы рекомендуем выполнить миграцию схемы в совместимом режиме, чтобы гарантировать, что существующие данные не будут удалены. Вы можете указать schemaValidation: "COMPATIBLE"
в вашем dataconnect.yaml
В совместимом режиме к вашей базе данных применяются только необходимые изменения схемы миграции.
-
DROP SCHEMA
,DROP TABLE
иDROP COLUMN
считаются необязательными операторами и не будут созданы для вашего плана, даже если ваша схема базы данных содержит схемы, таблицы или столбцы, не определенные в схеме вашего приложения. - Если таблица базы данных содержит непустой столбец, который не включен в схему вашего приложения, ограничение
NOT NULL
будет удалено, и данные по-прежнему можно будет добавлять в таблицу с помощью определенных вами соединителей.
Что дальше?
- Развертывание и управление клиентским кодом, который вы разрабатываете с помощью сгенерированных SDK, описаны в руководствах для Android , iOS , Интернета и Flutter .
- Дополнительные сведения об инструментах развертывания см. в справочнике по интерфейсу командной строки Data Connect и в справочнике по файлу конфигурации Data Connect .