Раздел 10 · Databases

Архитектура СУБД и независимость данных

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В прошлом уроке реляционная модель отвязала вопрос «что хранится» от вопроса «как оно лежит на диске». Этот урок показывает, как СУБД держит эту развязку внутри себя. Ты узнаешь, на какие уровни делят базу данных, почему можно ускорить запрос, не меняя в нём ни буквы, и из каких частей состоит сама программа СУБД.

Ресторан с тремя этажами

Представь ресторан. В зале гость видит меню: названия блюд, цены, фотографии. Он не знает, как готовится суп, и ему не надо знать.

На кухне шеф держит книгу рецептов: из чего состоит каждое блюдо, какие продукты нужны. Это полное описание того, что ресторан умеет делать.

В подвале склад: холодильники, полки, коробки. Кладовщик знает, что морковь на третьей полке слева, а сливки во втором холодильнике.

Главное в этой картинке то, что этажи не мешают друг другу:

  • кладовщик переставил морковь на другую полку, рецепты не изменились, меню тоже;
  • шеф добавил в рецепт супа новый ингредиент, а в меню суп называется так же и стоит столько же;
  • для детского зала напечатали отдельное меню, без острых блюд, а кухня осталась той же.

Ровно так же устроена база данных.

Три уровня

В 1975 году комитет ANSI/SPARC описал схему, по которой с тех пор объясняют устройство любой СУБД. Её называют трёхуровневой архитектурой ANSI/SPARC.

   Приложение A          Приложение B          Аналитик
        │                     │                    │
 ┌──────▼──────┐       ┌──────▼──────┐      ┌──────▼──────┐
 │ внешняя     │       │ внешняя     │      │ внешняя     │   внешний
 │ схема A     │       │ схема B     │      │ схема C     │   уровень
 └──────┬──────┘       └──────┬──────┘      └──────┬──────┘
        └─────────────────────┼────────────────────┘
                     ┌────────▼────────┐
                     │ концептуальная  │                      концептуальный
                     │ схема           │                      уровень
                     └────────┬────────┘
                     ┌────────▼────────┐
                     │ внутренняя      │                      внутренний
                     │ схема           │                      уровень
                     └────────┬────────┘
                              ▼
                         файлы на диске

Схема здесь значит описание структуры: какие есть таблицы, колонки, связи. Не сами данные, а их форма. Каждый уровень описывается своей схемой.

Внутренний уровень это склад. Как данные физически лежат: в каких файлах, в каком порядке, какие построены индексы, как устроены страницы на диске. Этим уровнем занимается сама СУБД и администратор базы.

Концептуальный уровень это книга рецептов. Полное логическое описание всех данных: таблица customers с колонками id, name, email, таблица orders, связь между ними, правила вроде «email обязателен». Ни слова о файлах и дисках. Схема концептуального уровня одна на всю базу.

Внешний уровень это меню. То, что видит конкретное приложение или пользователь. Бухгалтерии нужны заказы с суммами, службе доставки адреса, стажёру только посещаемость. Внешних схем может быть сколько угодно, и каждая показывает свой кусок концептуальной.

Между уровнями стоят отображения: правила, как перевести одно в другое. Их ведёт СУБД, а не твой код.

дальше после входа

Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.

Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.