Введение
Архитектура с тремя схемами (Three-schema Architecture, TSA) – концептуальная модель организации систем управления базами данных, предложенная рабочей группой ANSI/X3/SPARC в 1975 году под руководством Чарльза Бахмана. Модель разделяет описание данных на три независимых уровня абстракции: внешний, концептуальный и внутренний. Это позволяет разграничить интересы конечных пользователей, администраторов БД и разработчиков физических хранилищ.
Принцип трёхуровневого разделения лежит в основе большинства современных реляционных СУБД и является фундаментом учебных программ по проектированию баз данных во всём мире.
История и контекст
До появления TSA системы баз данных смешивали физическое представление данных с логическим, что делало любую миграцию хранилища чрезвычайно трудоёмкой. В 1971 году группа CODASYL предложила двухуровневую архитектуру: системную схему (schema) и пользовательские подсхемы (subschemas). В 1975 году комитет ANSI/X3/SPARC расширил эту модель, добавив концептуальный уровень как независимый посредник между пользовательскими представлениями и физическим хранением. Отчёт ANSI/SPARC 1978 года окончательно зафиксировал терминологию.
TSA повлияла на разработку реляционной модели, стандарты SQL и современные подходы к Data Mesh и хранилищам данных. NIST задокументировал её как базовую концепцию в NBSIR 85-3173.
Как это работает
Архитектура состоит из трёх уровней и двух отображений между ними:
- Внешний уровень (External Schema) – набор пользовательских представлений (views). Каждый пользователь или приложение видят только ту часть данных, которая им нужна. Один пользователь видит данные о клиентах, другой – только финансовые записи. Изменение внешней схемы не затрагивает других пользователей.
- Концептуальный уровень (Conceptual Schema) – единственная логическая модель всей базы данных: описание таблиц, атрибутов, связей и ограничений целостности. Не зависит от физического хранения. Именно здесь работает администратор БД.
- Внутренний уровень (Internal Schema) – описание физического хранения: индексы, страницы, методы доступа, файловые структуры на диске. Отражает «машинное зрение» на данные.
Между уровнями работают отображения (mappings). Отображение «внешний–концептуальный» позволяет менять представления без изменения логической модели. Отображение «концептуальный–внутренний» позволяет оптимизировать или мигрировать хранилище без переписывания приложений.
В реляционной СУБД: внешний уровень – SQL-представления (views), концептуальный – определения таблиц (CREATE TABLE), внутренний – индексы, партиционирование, табличные пространства (tablespaces).
Где применяется
- Реляционные СУБД (PostgreSQL, Oracle, MS SQL Server, MySQL) – реализуют TSA через механизм схем (schemas) и представлений (views).
- Хранилища данных (DWH) – концептуальный уровень описывает звёздную/снежинковую схему, внешний – витрины данных (data marts).
- Проектирование ERP и CRM – трёхуровневая архитектура обеспечивает независимость бизнес-логики от особенностей СУБД.
- Миграция данных – изменения физического уровня (например, переход с Oracle на PostgreSQL) не требуют переписывать приложения.
- Многопользовательские системы – разным ролям предоставляются разные внешние схемы с разными правами доступа.
Преимущества и ограничения
Преимущества: физическая независимость данных (оптимизация хранения не ломает приложения), логическая независимость (изменение концептуальной схемы не затрагивает пользовательские представления), поддержка ролевого разграничения доступа, чёткое разделение зон ответственности между разработчиком, DBA и конечным пользователем.
Ограничения: дополнительные накладные расходы на трансляцию между уровнями, сложность администрирования в системах с сотнями внешних схем, не все NoSQL-СУБД поддерживают все три уровня в явном виде.
Связь с другими понятиями
TSA тесно связана с реляционной моделью данных Кодда и понятием нормализации. Концептуальный уровень обычно моделируется через ER-диаграммы. Внутренний уровень напрямую связан с производительностью транзакционной обработки (OLTP). В контексте хранилищ данных TSA реализуется через инструменты ETL/ELT. Tuple (кортеж) – базовая единица данных на концептуальном уровне реляционной модели.