Работа в панели
Базы данных — в бета-версии: всё, что здесь описано, работает, но интерфейс и отдельные возможности ещё меняются. Подробнее — на странице «Базы данных».
С базой работают на её странице в панели: Базы данных в меню слева → карточка базы. Меню слева сменится на меню базы, а над ним появится переключатель — через него удобно прыгать между базами организации, не возвращаясь в список.
Разделы меню базы:
| Группа | Разделы |
|---|---|
| — | Обзор, Мониторинг, Настройки |
| База | Таблицы, SQL-редактор, Функции, Роли, Политики, Расширения, Резервные копии |
| Сервисы | API, Аутентификация, Файлы — это Data API |
Список баз
На странице Базы данных — все базы организации карточками. На карточке:
- имя и цена: «входит в тариф» у общей базы, «N ₽/мес» у выделенной;
- мощность: «Shared CPU» у общей базы или ядра и память у выделенной;
- место: сколько занято из квоты, полосой;
- проекты, которым выдана база, и кнопка «Подключить проект».
Меню «⋮» на карточке: открыть базу, взять строку подключения, изменить имя, удалить.
Состояние базы видно прямо на карточке:
| Что на карточке | Что происходит |
|---|---|
| «Готовим базу» / «Поднимаем инстанс» и шаги | база создаётся. Список обновляется сам, F5 не нужен |
| «не поднялся» и причина | создать не вышло, деньги не списаны или уже возвращены. В меню — «Заказать ещё раз» и «Убрать из списка» |
| «Перезапускается» | меняется конфигурация, обычно около полуминуты |
| «Переезжает» и шаги | база переезжает на выделенный инстанс |
| «платёж не прошёл» | продлить не вышло, база работает до названной даты. Кнопка «Оплатить» |
| «доступ закрыт» | база остановлена за неоплату, названа дата удаления. Кнопка «Оплатить» |
| «удалена за неоплату» | базы нет. Если перед удалением копию удалось снять, её можно скачать в настройках |
Что стоит за строками про оплату — на странице «Тарификация».
Обзор
Паспорт базы:
- тип — версия PostgreSQL;
- конфигурация — «Shared CPU · 0,5 ГБ» или ядра, память и диск;
- место — занято из квоты. Цифра желтеет от 75 % и краснеет от 90 %;
- копии — когда была последняя.
Ниже — графики места и записи за сутки, состояние сервисов (API, аутентификация, файлы) и блок Подключённые проекты.
Подключённые проекты
Здесь видно, каким проектам выдана база и под каким именем приезжает переменная. Подключить проект можно и из списка баз, и со страницы проекта: Проект → База данных → Подключить к базе.
Что получает подключённый проект:
- переменную
LAYERO_DATABASE_URLсо строкой подключения. Если проект подключён ко второй базе —LAYERO_DATABASE_URL_<СЛАГ>; - собственную роль в базе с правами владельца: она создаёт и меняет таблицы.
Переменная появится у приложения со следующего деплоя. Вашу переменную
DATABASE_URL платформа не трогает. Подробнее о правах роли проекта —
«Что может приложение».
Отключение проекта удаляет его роль. Таблицы и данные остаются.
Мониторинг
Графики за час, сутки или неделю обновляются каждые 30 секунд:
| График | Что показывает |
|---|---|
| Место | сколько занято. Пунктир — квота: когда место кончится, запись остановится, а чтение продолжит работать |
| Подключения | сколько открыто сейчас. Пунктир — предел, от 80 % график желтеет |
| Запись в секунду | коммиты |
| Изменения строк | вставки, обновления и удаления |
| Отменённые транзакции | откаты: всплеск обычно значит ошибку в приложении |
| Временные файлы | запросы, которым не хватило памяти на сортировку |
| Чтения из памяти | доля чтений из кэша. Ниже 80 % — повод смотреть на запросы или конфигурацию |
| Взаимные блокировки | дедлоки |
Под графиками — блок Место базы: занято, квота и пять самых больших таблиц.
Таблицы
Состав базы по схемам: слева список таблиц с поиском, справа выбранная таблица. Вкладки таблицы:
- Структура — колонки, типы, обязательность, значения по умолчанию, ключи;
- Данные — сами строки, подгружаются по мере прокрутки.
Переключатель Диаграмма показывает те же таблицы картинкой — карточки и связи между ними. Вид записан в адресе страницы: ссылку можно переслать коллеге.
Раздел только для чтения: строки здесь не правятся. Создавать и менять таблицы — в SQL-редакторе, миграциями приложения или через Data API.
SQL-редактор
Запросы выполняются прямо в панели.
Закладки и история. Слева две вкладки. В закладках три готовых запроса («Таблицы и размеры», «Долгие запросы», «Активные запросы») и ваши сохранённые. Сохранённый запрос виден всем в организации. История — последние 30 запросов, она хранится только в этом браузере.
От чьего имени. Сверху выбирается роль, от имени которой выполняется запрос:
| Роль | Что происходит |
|---|---|
| Владелец | запрос выполняется по-настоящему, с правами владельца базы |
| Аноним, Авторизованный, Сервер | проба глазами посетителя Data API: запрос выполняется и откатывается, кнопка называется «Проверить» |
Проба удобна, чтобы проверить политики доступа до того, как их увидит посетитель сайта.
Защита от случайностей. Перед запросом, который удаляет таблицы или
меняет их структуру, и перед UPDATE или DELETE без WHERE редактор
переспросит. Отменить такой запрос можно только восстановлением
из резервной копии.
Границы. Несколько операторов выполняются одной транзакцией. Запрос длиннее 30 секунд Postgres отменяет сам, в ответе — первые 500 строк. Всё это — на странице «Лимиты».
Функции
Код внутри базы, который вызывают по имени из SQL или через Data API. В списке видны аргументы функции, тип результата и то, выполняется ли она с правами владельца.
- Добавить функцию — новая функция создаётся в схеме
api, языкplpgsqlилиsql. Галочка «Выполнять с правами владельца базы» делает еёSECURITY DEFINER. - Пробный вызов — выполнить с аргументами и посмотреть результат. Изменения откатываются.
- История версий — каждое изменение сохраняется, прежнюю версию можно вернуть кнопкой «Восстановить эту версию».
Роли
Кто подключается к базе и с какими правами. У роли проекта стоит его метка, у владельца — «владелец», у временной роли — дата, до которой она живёт.
Добавить роль:
- Задайте название.
- При желании — дату в поле «Действует до». Без даты роль бессрочная. Удобно, когда доступ нужен аналитику или подрядчику на неделю.
- Выпишите права строками «команда — схема — таблица». По умолчанию —
SELECTна всё. Звёздочка в таблице действует и на таблицы, которые появятся позже. - Сохраните пароль — он показывается один раз.
В меню роли — «Сбросить пароль» и «Удалить роль». Роль владельца удалить нельзя.
Политики
Политики RLS решают, какие строки таблицы вернёт запрос. У каждой таблицы — переключатель RLS и кнопка «Создать политику».
В окне новой политики выбирают таблицу, команду, роли, на которые политика
действует, и тип — «Разрешающая» или «Ограничивающая». Условия USING
и WITH CHECK можно написать вручную или взять заготовку: «Все строки», «Только свои», «Только
авторизованные». Внизу окна виден SQL, который выполнится.
⚠️ Включённый RLS без единой политики закрывает таблицу для всех ролей, кроме владельца. Панель показывает такие таблицы отдельно.
Роль проекта работает от имени владельца, и RLS на неё не действует. Если приложение опирается на политики, подключайтесь отдельной ролью — см. «Что может приложение».
Расширения
Список расширений с переключателями: включать их через SQL не обязательно.
Видны версия, схема, в которую встало расширение, и что оно даёт.
Выключение выполняет DROP EXTENSION.
Переключателем включаются pgcrypto, uuid-ossp, citext, pg_trgm,
unaccent, btree_gin и pgvector. Запертый переключатель объясняет
причину: включить расширение можно только через поддержку или сначала
нужно другое расширение. Список приходит с сервера: если расширения в нём
нет — его нет и на сервере.
Резервные копии
Копии, расписание, восстановление и скачивание дампа — на отдельной странице «Резервные копии».
Настройки
Имя базы. Видно только в панели. Слаг в строке подключения при переименовании не меняется, приложения ничего не заметят.
Разрешённые адреса. Кто может подключаться к базе снаружи — с ноутбука, из CI, с чужого хостинга. Приложения ваших проектов на Layero подключаются всегда, их в список добавлять не нужно.
- Общая база после создания пускает снаружи только адрес, с которого её
завели: панель скажет об этом во всплывающем сообщении. Выделенная база
после создания открыта всем (
0.0.0.0/0), см. «Кого пускать к базе». - Добавить → адрес или подсеть. Есть быстрые варианты: «Мой адрес»
и «Весь интернет» (
0.0.0.0/0). Для второго панель переспросит. - У правила можно указать, зачем оно, и срок в поле «Действует до».
- Изменения начинают действовать в течение минуты.
Заблокированные адреса. После серии неверных паролей адрес блокируется автоматически, чтобы перебор не доходил до базы. Этот раздел появляется, только когда кто-то заблокирован. Блокировка снимается сама, а свой адрес можно разблокировать кнопкой, если пароль уже исправлен.
Удалить базу — в самом низу, см. ниже.
Смена конфигурации
У выделенной базы ядра, память и диск меняются в меню «⋮» на обзоре → Изменить конфигурацию. Вкладки те же, что при создании: «Стандартная» и «Произвольная».
- Смена ядер или памяти перезапускает базу, обычно на полминуты. Окно пишет об этом до подтверждения: «перезапуск около 30 с» или «без перерыва».
- Диск только растёт, уменьшить его нельзя.
- Общую базу то же окно переносит на выделенный инстанс. Вернуть её на прежнее место можно в течение суток.
Как пересчитываются деньги при смене — на странице «Тарификация».
Удаление базы
Меню «⋮» на карточке или на обзоре → Удалить базу, либо Настройки → Удалить базу. Панель попросит набрать имя базы для подтверждения.
⚠️ Удаление необратимо: данные, роли и все резервные копии исчезают сразу. Если копия нужна — сначала скачайте её в разделе «Резервные копии».
У выделенной базы окно удаления на странице базы показывает, сколько вернём за неиспользованные дни. Как считается возврат — на странице «Тарификация».