Проверяет понимание различий в физическом хранении данных между реляционными (строковыми) и колоночными СУБД, что критично для выбора хранилища под аналитические или транзакционные нагрузки.
Физическое хранение данных определяет, насколько быстро СУБД выполняет те или иные операции. В реляционной (строковой) модели запись целиком лежит в одном месте на диске: сначала все поля первой строки, затем второй и так далее. В колоночной модели значения одного и того же столбца хранятся последовательно, отдельно от других столбцов.
Представим таблицу пользователей с полями id, name, age. На диске данные будут лежать так:
[1, 'Alice', 30], [2, 'Bob', 25], [3, 'Carol', 40]Когда нужно получить всю запись по id, СУБД читает один непрерывный блок. Это идеально для транзакционных систем (OLTP): быстрые INSERT, UPDATE, SELECT одной строки.
В колоночной СУБД те же данные будут разложены по столбцам:
id: [1, 2, 3]
name: ['Alice', 'Bob', 'Carol']
age: [30, 25, 40]Если аналитический запрос считает средний возраст, читается только колонка age, а не вся таблица. Это резко снижает объём I/O. Плюс значения одного типа хорошо сжимаются (например, RLE или dictionary encoding), что экономит место и ускоряет сканирование.
-- Аналитика: колоночная БД прочитает только колонку age
SELECT AVG(age) FROM users;
-- Транзакция: строковая БД быстро вернёт всю запись
SELECT * FROM users WHERE id = 2;Итог: строковое хранение выбирают для частых точечных операций и целостных записей, колоночное — для аналитики с массовыми агрегациями по нескольким столбцам.