Базы данных используют различные дисковые структуры данных, такие как B-деревья, Linear-Hash-Tables и Heap Files, для хранения данных на диске. Это невероятно сложная тема, требующая тщательного изучения, но в основном в зависимости от типа данных, которые вы хотите сохранить (будь то фиксированная длина или переменная длина), общая стратегия, используемая многими базами данных, заключается в хранении данных переменной длины в страницы хранятся в файле кучи .
Файл кучи представляет собой последовательность фиксированной длины страниц , каждая страница содержит слоты для разных записей. Страницы хранятся на диске, но загружаются в память с использованием подсистемы подкачки, аналогично тому, как работает файловая система. Чтобы упростить быстрый поиск записей, хранящихся на страницах, используется структура индекса (обычно B-дерево или B + дерево, а также, возможно, хеш-таблица), чтобы найти правильную страницу и номер записи записи, которую вы просматриваете. хранится в файле кучи.
Механизм SQL-запросов размещается поверх базовых структур данных. Механизм запросов анализирует запрос, а затем ищет соответствующие записи, используя индексы. (Здесь задействовано много других аспектов, но в этом суть.)
Нет необходимости говорить, что реализация реляционной базы данных в C ++ (или любом другом языке) требует огромного количества работы. Если вам действительно интересно, я бы порекомендовал прочитать Системы управления базами данных .