可能であれば、どのようにして PostgreSQL を埋め込むことができますか?
-
09-06-2019 - |
解決
コードを大幅に書き直さない限り、Postgres を「埋め込み」で実行することはできません。別のプロセスとして実行するか、別のものを使用してください。SQLite は優れた選択肢です。しかし、他にもあります。MySQL には組み込みバージョンがあります。でご覧ください http://mysql.com/oem/. 。また、Java の選択肢もいくつかあり、Mac には書き込み可能なコア データもあります。いや、FoxPro を使うこともできます。どの OS を使用していますか? データベースからどのようなサービスが必要ですか?
他のヒント
埋め込むことはできませんし、試みるべきでもありません。
埋め込みには使用する必要があります スクライト あなたが言ったように、または ファイアバード RDBMS.
バックグラウンドプロセスでpostgresqlを実行します。
ランダムな空きポートを使用して localhost にバインドするか、ソケット (Windows はソケットをサポートしていますか?) を使用して、ローカル モードで postgresql サーバーを起動するアプリケーション内で別のスレッドを起動します。それはかなり簡単なはずです。次のようなものです。
system("C:\Program Files\MyApplication\pgsql\postgres.exe -D C:\Documents and Settings\User\Local Settings\MyApplication\database -h 127.0.0.1 -p 12345");
そして、127.0.0.1:12345 に接続するだけです。
アプリケーションが終了するときは、いつでも SIGTERM をスレッドに送信し、postgresql が終了する (つまり、スレッドに参加する) まで数秒待つことができます。
追伸:も使用できます pg_ctl 「組み込み」データベースを制御するには、スレッドがなくても、アプリケーションを開始するときに「pg_ctl start」(適切なオプションを使用して) を実行し、アプリケーションを終了するときに「pg_ctl stop」を実行するだけです。
sqlite などのインプロセス タイプとして埋め込むことはできませんが、次の Inno setup を使用してアプリケーション セットアップに簡単に埋め込むことができます。 http://www.innosetup.org. 。彼らのメーリング リスト アーカイブを検索すると、誰かがあなたのためにほとんどの作業を行ってくれたことがわかります。必要なのは、zip 形式のディストリビューションを入手するだけで、ユーザーがアプリをインストールするときに簡単に postgresql をインストールすることができます。その後、pg_hba.conf ファイルを使用して、サーバーをローカル ホストのみに制限できます。本当の組み込み DB ではありませんが、機能するでしょう。
PostgreSQL はスタンドアロン サーバーとして実行することを目的としています。しっかりと時間をかけてハッキングすれば埋め込むことはおそらく可能ですが、別のプロセスで意図したとおりに実行する方がはるかに簡単です。
HSQLDB (http://hsqldb.org/) は、簡単に埋め込めるもう 1 つのデータベースです。Java が必要ですが、Java アプリケーションにとっては優れた選択肢であり、よく使用されます。
Mac OS X で試した人はいますか?
http://pagesperso-orange.fr/bruno.gaufier/xhtml/prod_postgresql.xhtml
http://www.macosxguru.net/article.php?story=20041119135924825
(もちろん、sqlite も埋め込みデータベースとして選択します)