Открыть сервис

Каталог базы данных

Каталог базы данных — это структурированный набор метаданных, описывающих объекты базы данных (таблицы, представления, индексы, хранимые процедуры, триггеры, типы данных и т. д.), а также правила их хранения, доступа и взаимосвязи. Каталог является системным словарём данных, который обеспечивает целостность, согласованность и возможность администрирования базы данных. В реляционных системах управления базами данных (СУБД) каталог обычно реализуется в виде набора системных таблиц (например, pg_catalog в PostgreSQL, INFORMATION_SCHEMA в SQL-стандарте).

История развития

Концепция каталога базы данных возникла вместе с первыми реляционными СУБД в 1970-х годах. В ранних системах (например, System R компании IBM) каталог был отдельной структурой, хранящейся в виде текстовых файлов. С развитием SQL-стандарта в 1980-х годах появилась необходимость стандартизации доступа к метаданным. В 1989 году был опубликован стандарт ISO/IEC 9075 (SQL-89), который ввёл понятие информационной схемы (INFORMATION_SCHEMA) — единого набора представлений для чтения данных каталога.

В 1990-х годах, с распространением объектно-реляционных СУБД (Oracle, IBM DB2), каталоги стали включать не только реляционные объекты, но и пользовательские типы данных, методы и индексы. В современных СУБД (PostgreSQL, MySQL, Microsoft SQL Server) каталог является неотъемлемой частью метаданных, доступной только для чтения привилегированным пользователям.

Структура и содержимое каталога

Каталог базы данных содержит иерархически организованные записи. Основные компоненты:

Системные таблицы

Системные таблицы хранят информацию обо всех объектах базы данных. Каждая СУБД имеет свои уникальные системные таблицы, но многие элементы следуют SQL-стандарту.

КомпонентОписаниеПримеры записей
Таблицы и представленияИмена, владельцы, даты создания, количество строкpg_class (PostgreSQL), sys.tables (MSSQL)
СтолбцыИмена, типы данных, допустимость NULL, значения по умолчаниюpg_attribute, sys.columns
ИндексыТипы (B-tree, хеш, GiST), уникальность, столбцыpg_index, sys.indexes
Ограничения (Constraint)PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULLpg_constraint, sys.check_constraints
Хранимые процедуры и функцииПараметры, возвращаемый тип, исходный кодpg_proc, sys.sql_modules
Пользователи и ролиИмена, права доступа, группыpg_user, sys.database_principals

Информационная схема (INFORMATION_SCHEMA)

Стандартизированный набор представлений, определённый в SQL (ISO/IEC 9075). Позволяет получать метаданные независимо от конкретной СУБД. Включает такие представления, как:

Каталоги в нереляционных СУБД

В NoSQL-системах (MongoDB, Cassandra, Redis) каталог может отсутствовать в классическом понимании. Вместо этого используются:

Назначение и функции

Каталог базы данных выполняет несколько ключевых задач:

Управление каталогом

Каталог обычно управляется автоматически СУБД при выполнении операторов DDL (Data Definition Language). Например:

Прямое редактирование системных таблиц (вставка, обновление, удаление) не рекомендуется и часто запрещено на уровне доступа. В экстренных случаях (например, восстановление повреждённого каталога) администратор может использовать низкоуровневые утилиты или режим однопользовательского доступа.

Примеры реализации

PostgreSQL

В PostgreSQL каталог реализуется в схеме pg_catalog. Основные системные таблицы:

Для доступа через информационную схему используется INFORMATION_SCHEMA, доступная в любой базе данных.

MySQL

В MySQL каталогом служит служебная база данных mysql, содержащая таблицы:

Информационная схема представлена как information_schema.

Microsoft SQL Server

В MSSQL системные таблицы находятся в схеме sys (например, sys.objects, sys.indexes). Стандартизированные представления доступны через INFORMATION_SCHEMA. Кроме того, существует подсистема sys.dm_* (диспетчерские представления) для мониторинга производительности.

Безопасность и ограничения

Каталог содержит конфиденциальную информацию, включая имена пользователей, хеши паролей и права доступа. Поэтому:

Критика

Хотя каталог базы данных является стандартным механизмом управления метаданными, существуют недостатки:

Интересные факты

Современные СУБД продолжают развивать функциональность каталогов, добавляя поддержку временных таблиц, JSON-типов, колоночных индексов и других расширений, что требует расширения системных таблиц новыми атрибутами.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →