問題
標準データ ソースとしてアクセスしたいカスタム データ ソース (社内システム) があります。さまざまなレポート エンジン、Excel、MS アクセス、おそらく標準の Web フロントエンド、市販のデータ管理ツールからデータ ソースを使用できるように、標準の SQL に似たアクセサーを提供するソリューションを探しています。言い換えれば、ODBC や JDBC などの既製のサポートが欲しいのですが、これらすべてのドライバーのサポートを自分で実装する必要はありません。
これまでやってきたこと
SQLite 仮想テーブル メカニズムを使用して、標準の SQLite ドライバーを使用してデータ ソースへのアクセスを提供することに成功しました。SQLite は、SQL クエリの解析、テーブル メタデータの変換 (拡張機能によって提供される) を処理し、データ ソースがサポートしていない SQL 部分 (集計、複雑な結合と更新など) を管理します。
ただし、SQLite で得られないのはネットワーク サポートです。SQLite は組み込みデータベース エンジンであり、私のデータ ソースとうまく連携しますが、ODBC と JDBC をサポートしていますが、ワイヤ プロトコルはありません。カスタム データ ソースをクライアント プロセスに埋め込むことはできません。これは、データ ソースには非常に厳しいランタイム制限 (他の制限の中でも特に) があるためです。
検討していること
1. ネットワーク化された SQLite
明らかな解決策は、SQLite データ ソースをネットワーク化できるかどうかを調べることです。ただし、ネットワーク オプションは十分にサポートされていないようです。特に、クライアント ドライバではサポートされていません (つまり、まったくサポートされていません)。
2.MySQL ストレージ エンジン
私は、SQLite 仮想テーブル ドライバーを MySQLストレージ エンジンに置き換えることを検討してきました(API 仕様を 30 分間読んだだけで、API が非常に似ていることがわかりました)。次の 3 つの懸念があります。
- プロセス制御。私のデータ ソースは、独自のプロセスを管理したいシステムです。私はサービス プロビジョニングの責任者になりたいと考えています。
- MySQL サーバー全体を実行することは、IT 管理者の観点からはやり過ぎのように見えます。組み込みのネットワーク サーバーで十分です。すでにネットワーク サーバーを取得しています (これは既に Web サービス プロセスです)。
- ライセンス。MySQL は GPL か高価に見えます。このセットアップが私に強制するライセンス要件について、決定的なものは何も見つかりませんでした。
3. 既知のネットワーク プロトコルの模倣
私は、MySQL ワイヤ プロトコルや MSSQL などの「既知の」プロトコルを模倣することを検討してきました ( freeTDSは良い情報源です)。ただし、すぐに利用できるソリューションの数は少ないようです。この道をたどると、おそらく大変な作業になると思います。
これを行う方法に関する他のオプションを探しています。現在、#2 を選択して、データ ソースとストレージ エンジンの間のインターフェイス ( 0mqまたは何らかのネットワーク プロトコルなど) を使用できるかどうかを調査しています。実行可能だと思いますが、より簡単な解決策に非常に興味があります。誰かが似たようなことを(成功して)やったことがありますか?