Chcę utworzyć interfejs SQL na szczycie nierelacyjnej składnicy danych. Nie-relacyjny magazyn danych, ale ma sens dostęp do danych w sposób relacyjny.Parsowanie SQL za pomocą Pythona
Szukam przy użyciu ANTLR do tworzenia AST, który reprezentuje SQL jako relacyjne wyrażenie algebry. Następnie zwróć dane, oceniając/chodząc po drzewie.
Nigdy wcześniej nie zaimplementowałem analizatora składni, dlatego chciałbym poradzić się, jak najlepiej zaimplementować parser SQL i ewaluator.
- Czy opisane powyżej podejście brzmi poprawnie?
- Czy są inne narzędzia/biblioteki, które powinienem zaglądać? Podobnie jak PLY lub Pyparsing.
- Wskazywanie na artykuły, książki lub kod źródłowy, które mi pomogą, jest doceniane.
Aktualizacja:
I wdrożone prosty parser SQL przy użyciu pyparsing. W połączeniu z kodem Pythona, który implementuje relacyjne operacje na moim magazynie danych, było to dość proste.
Jak już powiedziałem w jednym z komentarzy, celem ćwiczenia było udostępnienie danych silnikom raportującym. Aby to zrobić, prawdopodobnie będę musiał zaimplementować sterownik ODBC. To prawdopodobnie dużo pracy.
Po co nakładać ograniczenia SQL na obiekty? Co można zyskać? Co jest nie tak z OQL? http://en.wikipedia.org/wiki/Object_Query_Language –
Do zdobycia: Interfejs zapytań, z którego może korzystać ogromna liczba narzędzi do raportowania. Planuję wdrożyć sterownik ODBC na kliencie. Aby użytkownicy biznesowi mogli używać Crystal Reports, Excel itp. Do pobierania danych ze składnicy danych. OQL, chociaż prawdopodobnie ładny język zapytań (nigdy go nie używałem), nie jest tak szeroko rozpowszechniony jak SQL. – codeape
+1 oba: jednym z największych problemów z bazami OO jest właśnie brak silników raportujących :( – van