Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Системный каталог и метаданные

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');

Связанные разделы