Я хочу создать SQL-интерфейс поверх нереляционного хранилища данных. Нереляционное хранилище данных, но имеет смысл обращаться к данным реляционным способом.Анализ SQL с помощью Python
Я изучаю использование ANTLR для получения AST, представляющего SQL как выражение реляционной алгебры. Затем возвращайте данные путем оценки/ходьбы по дереву.
Я никогда не реализовал парсер раньше, и поэтому мне хотелось бы дать совет о том, как лучше всего реализовать парсер и оценщик SQL.
- Описывается ли описанный выше подход правильно?
- Есть ли другие инструменты/библиотеки, на которые я должен обратить внимание? Как PLY или Pyparsing.
- Оценки статей, книг или исходного кода, которые помогут мне.
Update:
я реализовал простой SQL-анализатор с помощью Pyparsing. В сочетании с кодом Python, реализующим реляционные операции с моим хранилищем данных, это было довольно просто.
Как я уже сказал в одном из комментариев, целью упражнения было сделать доступными данные для двигателей отчетов. Для этого мне, вероятно, понадобится реализовать драйвер ODBC. Это, вероятно, много работы.
Зачем налагать ограничения SQL на объекты? Что нужно получить? Что случилось с OQL? http://en.wikipedia.org/wiki/Object_Query_Language –
Получено: интерфейс запросов, который может использовать огромное количество средств отчетности. Я планирую внедрить драйвер ODBC на клиенте. Чтобы бизнес-пользователи могли использовать Crystal Reports, Excel и т. Д. Для извлечения данных из хранилища данных. OQL, хотя, вероятно, хороший язык запросов (я никогда не использовал его), не так широко распространен, как SQL. – codeape
+1 оба: одна из самых больших проблем с базами данных OO - это в точности отсутствие механизмов отчетности :( – van