таблица базы данных - дизайн структуры данных c ++ - PullRequest
1 голос
/ 28 октября 2010

это может быть глупый вопрос или задаваться много раз, я искал его, но не нашел правильного ответа.

Что именно происходит, когда мы печатаем на движке SQL

"Create table xxxx" 
как это реализоватьодин в c ++, я имею в виду, как он создает динамическую переменную "xxxx" и сохраняет в ней данные.Если бы я спросил
"select * from xxxx" 
, как она переходит к переменной «xxxx» и получает значения. Я уже видел SQLite и Postgres, я не в состоянии понять эти сложные вещи. Может ли кто-нибудь объяснить это более простым способом. Если возможно смаленький пример. (Примечание: что это за движок sql).

Ответы [ 3 ]

3 голосов
/ 28 октября 2010

Базы данных используют различные дисковые структуры данных, такие как B-деревья, Linear-Hash-Tables и Heap Files, для хранения данных на диске. Это невероятно сложная тема, требующая тщательного изучения, но в основном в зависимости от типа данных, которые вы хотите сохранить (будь то фиксированная длина или переменная длина), общая стратегия, используемая многими базами данных, заключается в хранении данных переменной длины в страницы хранятся в файле кучи .

Файл кучи представляет собой последовательность фиксированной длины страниц , каждая страница содержит слоты для разных записей. Страницы хранятся на диске, но загружаются в память с использованием подсистемы подкачки, аналогично тому, как работает файловая система. Чтобы упростить быстрый поиск записей, хранящихся на страницах, используется структура индекса (обычно B-дерево или B + дерево, а также, возможно, хеш-таблица), чтобы найти правильную страницу и номер записи записи, которую вы просматриваете. хранится в файле кучи.

Механизм SQL-запросов размещается поверх базовых структур данных. Механизм запросов анализирует запрос, а затем ищет соответствующие записи, используя индексы. (Здесь задействовано много других аспектов, но в этом суть.)

Нет необходимости говорить, что реализация реляционной базы данных в C ++ (или любом другом языке) требует огромного количества работы. Если вам действительно интересно, я бы порекомендовал прочитать Системы управления базами данных .

1 голос
/ 28 октября 2010

Для SQL Server существует обзор, начинающийся с здесь .

Объекты в базе данных SQL Server хранятся в виде коллекции страниц размером 8 КБ.В этом разделе описывается порядок организации, хранения и доступа к страницам таблиц и индексов.

0 голосов
/ 13 мая 2014

вам нужно реализовать реляционную базу данных на c ++, если вы просто хотите, чтобы какая-то удобная структура данных сохраняла данные в нескольких индексах, взгляните на boost.MultiIndex

...