Системный каталог и метаданные
AngaraBase хранит метаданные всех объектов базы данных в центральном реестре — SysCatalog. Для
пользователей доступ к метаданным предоставляется через системные представления sys.* и функции
интроспекции.
Иерархия объектов
Объекты базы данных организованы в строгую иерархию:
Instance → Database → Schema → Table → Column
Каждый уровень имеет уникальный идентификатор в SysCatalog. Таблицы принадлежат схемам, схемы — базам данных, базы данных — экземпляру (instance).
SysCatalog
SysCatalog — центральный реестр метаданных. Он хранит информацию о:
- таблицах, колонках и их типах данных
- индексах и ограничениях (constraints)
- пользователях, ролях и привилегиях
- функциях и агрегатах
- политиках безопасности (RLS)
- статистике для оптимизатора запросов
SysCatalog обновляется при DDL-операциях (CREATE, ALTER, DROP) и при сборе статистики.
Системные представления (sys.*)
Системные представления доступны только для чтения и не требуют специальных привилегий (за исключением представлений, связанных с безопасностью).
Идентификация и состояние экземпляра
| Представление | Описание |
|---|---|
sys.identity | Идентификация экземпляра: версия, instance_id |
sys.health | Состояние здоровья сервера |
sys.settings | Эффективная конфигурация (name, value). Секреты не раскрываются |
Структура данных
| Представление | Описание |
|---|---|
sys.tables | Все таблицы с метаданными (schema, имя, тип, row count) |
sys.columns | Колонки каждой таблицы: column_name, data_type, nullable и т.д. |
Статистика
| Представление | Описание |
|---|---|
sys.table_stats | Статистика на уровне таблицы: stats_level_max, last_committed_rowid, mutation epochs |
sys.column_stats | Статистика по колонкам: ndv_approx, min/max, null_count, гистограммы, MCV |
Безопасность и доступ
| Представление | Описание |
|---|---|
sys.users | Учётные записи пользователей |
sys.roles | Роли |
sys.user_roles | Назначения пользователей ролям |
sys.role_privileges | Привилегии ролей |
sys.object_grants | Гранты на уровне объектов |
sys.my_privileges | Привилегии текущего пользователя |
sys.security_policies | Политики RLS |
sys.audit_log | Журнал аудита |
Функции интроспекции
AngaraBase предоставляет набор встроенных функций для программного доступа к метаданным.
Роли и привилегии
| Функция | Назначение |
|---|---|
angara_user_roles() | Роли текущего пользователя |
angara_role_privileges() | Привилегии заданной роли |
angara_user_privileges() | Эффективные привилегии пользователя |
angara_object_privileges() | Привилегии на конкретный объект |
angara_has_privilege() | Проверка наличия конкретной привилегии |
Безопасность (RLS, audit, break-glass)
| Функция | Назначение |
|---|---|
angara_table_policies() | RLS-политики для таблицы |
angara_is_rls_active() | Активна ли RLS для таблицы |
angara_effective_rls_predicate() | Итоговый предикат RLS для текущего пользователя |
angara_break_glass_status() | Статус break-glass сессии |
angara_audit_verify_chain() | Проверка целостности цепочки аудита |
Диагностика и производительность
| Функция / представление | Назначение |
|---|---|
angara_stat_activity | Активные сессии и выполняемые запросы |
angara_stat_statements | Агрегированная статистика выполненных запросов |
angara_top_queries() | Топ запросов по потреблению ресурсов |
angara_stat_statements_reset() | Сброс статистики запросов |
Практические примеры
Информация об экземпляре
SELECT * FROM sys.identity;
Проверка состояния сервера
SELECT * FROM sys.health;
Список всех таблиц
SELECT * FROM sys.tables;
Проверка настроек безопасности
SELECT name, value FROM sys.settings WHERE name LIKE 'security.%';
Просмотр статистики по колонкам таблицы
SELECT column_name, ndv_approx, null_count
FROM sys.column_stats
WHERE table_name = 'orders';
Проверка привилегий текущего пользователя
SELECT * FROM sys.my_privileges;
SELECT angara_has_privilege('orders', 'SELECT');
Связанные разделы
- Quickstart (примеры sys.*) — первые шаги с системными представлениями
- Безопасность — функции интроспекции безопасности
- Диагностика — мониторинг и устранение проблем
- Обработка запросов — как оптимизатор использует метаданные каталога