2008-09-13 13 views
33

もし可能であれば、私はsqlliteに似たPostgreSQLデータベースを埋め込むことに興味があります。私はそれがnot possibleだと読んだ。私はデータベースの専門家ではないので、私はあなたから聞きたいです。可能であれば、どのようにPostgreSQLを組み込むことができますか?

基本的に私はすべての設定とインストールをしなくてもPostgreSQLを欲しいです。それが可能なら、どうすればいいか教えてください。

+1

RaNdOm CaPとは何ですか? –

+1

ランダムな帽子はありません。 どうやら私はgで間違っていたと思う。 – pc1oad1etter

+1

文字通り埋め込むのではなく、プログラムの横にインストールして、プログラムの実行中にのみ実行できますか? –

答えて

10

コードの大規模な書き換えを行わない限り、Postgresの "埋め込み"を実行することはできません。別のプロセスとして実行するか、別のプロセスを使用してください。 SQLiteは優れた選択肢です。しかし、他にもあります。 MySQLには埋め込みバージョンがあります。 http://mysql.com/oem/でそれを見てください。また、いくつかのJavaの選択肢、そしてMacにはCore Dataがあります。地獄、あなたもFoxProを使用することができます。どのOSが稼動しており、データベースから必要なサービスがありますか?

+0

PGSQL(Windows XP)を使用するアプリケーションは既にあります。 - 別のデータベースに切り替えることの影響を知ることはできませんが、PGSQLの組み込みバージョンがあればそれほど重要でないと想定しました。 – pc1oad1etter

+1

環境はWindows XPであり、最大の懸念事項の1つは、新しいパッケージがインストールされている場合、環境のポリシーにジャンプする余分なフープが必要であり、ゼロ設定を削除するだけでインストールファイルを簡単にすることができないということです。 – pc1oad1etter

+0

@ pc1oad1あなたの問題(新しいパッケージをインストールする簡単な方法はありません)を別のレベルで解決できるでしょうか。もしあなたがpostgresとあなたのコードをインストールする**一つの**パッケージを提供すれば...これは役に立ちますか? – guettli

1

PostgreSQLはスタンドアロンサーバとして動作するように設計されています。もしあなたがハードと十分に長い時間ハックするならば、おそらくそれを埋め込むことは可能ですが、それを別のプロセスで意図したとおりに実行するほうがはるかに簡単です。

12

あなたは埋め込むことはできませんし、試してみることもできません。

埋め込みには、上記のようにsqliteを使用するか、firebird rdbmsを使用する必要があります。

+5

私はFirebirdをお勧めします –

+2

私は現在Firebirdを組み込み型とサーバー/クライアント型の両方で提供されている唯一のデータベースとして学習しています。非営利目的のソースです。 – explorer

+0

_ "...あなたも試してはいけないのですか?"オラクルも組み込み可能です。 –

7

sqliteなどのプロセスタイプのものとして埋め込むことはできませんが、のInnoセットアップを使用して簡単にアプリケーション設定に埋め込むことができます。彼らのメーリングリストのアーカイブを検索すれば、誰かがあなたのために大部分の仕事をしてくれていることに気づくでしょう。あなたがする必要があるのは、圧縮されたディストリビューションをつかむことだけです。あなたのアプリケーションをインストールするときにpostgresqlを簡単にインストールできます。次に、pg_hba.confファイルを使用して、サーバーをローカルホストのみに制限することができます。真の組み込みDBではありませんが、うまくいくでしょう。

+0

あなたはpostgresqlのサイレントインストールを行うためにinnosetupの使用に成功しましたか?それは素晴らしいだろう! – swdev

12

実行にpostgresql(もちろんsqliteのは、私の組み込みにも最適なDBだろう)。

ローカルモードでpostgresqlサーバを起動する別のスレッドを、ランダムな空きポートを使用してlocalhostにバインドするか、ソケットを使用して起動します(Windowsではソケットがサポートされますか?)。

システム(「C:¥Program Files¥MyApplication¥pgsql¥postgres.exe -DC:¥Documents and Settings¥User¥Local Settings¥MyApplication¥database -h 127.0.0.1」のように簡単にできるはずです。 -p 12345 ");

127.0.0.1:12345に接続してください。

アプリケーションが終了したら、いつでもスレッドにSIGTERMを送信し、postgresqlが終了するまで数秒待つことができます(つまり、スレッドに参加する)。

PS:スレッドを使わなくても "埋め込み"データベースを制御するには、アプリケーションの起動時に適切なオプションを指定して "pg_ctl start"を実行し、終了するときに "pg_ctl stop"を実行します。

+2

いいえ、私は私の質問で、私が知っていた方法で、面白くなかった。 – pc1oad1etter

+0

クール!コマンドラインを提供してくれてありがとう! –

+0

ありがとうございます。この解決策はよく見えます。はい、postgresを起動することはsqliteを使うよりも多くの作業ですが、この方法ではおもちゃだけでなく実際のデータベースを持っています。 – guettli

1

HSQLDB(http://hsqldb.org/)は、簡単に埋め込まれる別のデータベースです。 Javaが必要ですが、Javaアプリケーションにとって優れた、よく使われる選択肢です。

+2

HSQLDBの代わりにH2(http://www.h2database.com)をお勧めします。 – Stephan

関連する問題