非リレーショナル データ ストア上に SQL インターフェイスを作成したいと考えています。非リレーショナル データ ストアですが、リレーショナルな方法でデータにアクセスすることは理にかなっています。
ANTLRを使用して、SQL を関係代数式として表す AST を生成することを検討しています。次に、ツリーを評価/ウォークしてデータを返します。
これまでパーサーを実装したことがないので、SQL パーサーとエバリュエーターを最適に実装する方法についてアドバイスをお願いします。
- 上記のアプローチは正しいと思いますか?
- 調べる必要がある他のツール/ライブラリはありますか? PLYやPyparsing のように。
- 私を助ける記事、本、またはソースコードへのポインタは大歓迎です。
アップデート:
pyparsing を使用して単純な SQL パーサーを実装しました。データ ストアに対するリレーショナル操作を実装する Python コードと組み合わせると、これは非常に簡単でした。
コメントの 1 つで述べたように、演習のポイントは、レポート エンジンがデータを利用できるようにすることでした。これを行うには、おそらく ODBC ドライバーを実装する必要があります。これはおそらく大変な作業です。