внутренняя реализация запросов к базе данных - PullRequest
3 голосов
/ 11 июня 2010

По своему опыту я использовал много запросов, таких как select , order by , , где предложение и т. Д. На мгновение я подумал:

1) как это внутренне написано для реализации вышеуказанных запросов

2) какой язык они используют?

3) это язык программирования? если да, то какой язык?

4) какая среда необходима для реализации такого рода сложной базы данных

Ответы [ 4 ]

6 голосов
/ 11 июня 2010

1) В схематической форме вы должны действовать следующим образом:

a) Разделить запрос на его компоненты и создать абстрактное синтаксическое дерево (AST) запроса.Для этого есть инструменты, в былые времена для этого использовались lex и yacc, теперь есть гораздо больший выбор.

b) На первом этапе оптимизатор реорганизует дерево, применяя известные равные преобразования.таким образом, запрос будет наиболее производительным путем использования индексов, выполнения запросов, которые вначале возвращают небольшие результаты, поэтому вам нужно меньше присоединяться и т. д. ...

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

d) Соберите материал из вашего верхнего узла и верните его клиенту

2-3) Я не думаю, чтоЕсть специальные языки.Многие из них на C, но есть Java и другие языки, которые тоже используются

4) Я думаю, что лучшая среда - это тихая среда для такой работы.; -)

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

2 голосов
/ 11 июня 2010

MySQL написан на C, C ++ согласно странице запуска MySQL

Проверьте код, чтобы узнать больше о том, как реализован MySQL.

Посмотрите на код Postgresql .

2 голосов
/ 11 июня 2010

Я полагаю, что СУБД Oracle изначально была написана на C и, вероятно, до сих пор.

1 голос
/ 11 июня 2010

Во многих (всех?) Базах данных вы можете просмотреть план объяснения / выполнения.Это даст вам приблизительное представление о том, что происходит внутри базы данных.В коммерческих РСУБД это самое близкое понимание того, как работает оптимизация.Алгоритмы в анализаторах запросов являются тщательно охраняемыми секретами.

Джо Чанг написал превосходную статью о том, как работает оптимизатор на основе затрат SQL Server

Аналогично вы можете найти похожую информацию PostgreSQL и MySQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...