Se possibile, come si può incorporare PostgreSQL?
-
09-06-2019 - |
Domanda
Se possibile, mi interessa poter incorporare un database PostgreSQL, simile a sqllite.Ho letto che lo è non possibile.Però non sono un esperto di database, quindi voglio sentire la tua opinione.
Essenzialmente voglio PostgreSQL senza tutta la configurazione e l'installazione.Se è possibile, dimmi come.
Soluzione
A meno che non si esegua una riscrittura importante del codice, non è possibile eseguire Postgres "incorporato".Eseguilo come processo separato o usa qualcos'altro.SQLite è una scelta eccellente.Ma ce ne sono altri.MySQL ha una versione incorporata.Guardalo su http://mysql.com/oem/.Anche diverse scelte Java e anche il Mac ha Core Data che puoi scrivere.Diavolo, puoi anche usare FoxPro.Che sistema operativo utilizzi e di quali servizi hai bisogno dal database?
Altri suggerimenti
Non puoi incorporarlo, né dovresti provarci.
Per l'incorporamento dovresti usare sqlite come hai detto o firebird rdbms.
Esegui postgresql in un processo in background.
Avvia un thread separato nella tua applicazione che avvierà un server postgresql in modalità locale associandolo a localhost con una porta libera casuale o utilizzando i socket (Windows supporta i socket?).Dovrebbe essere abbastanza semplice, qualcosa del tipo:
system("C:\Programmi\MiaApplicazione\pgsql\postgres.exe -D C:\Documents and Settings\Utente\Impostazioni locali\MiaApplicazione\database -h 127.0.0.1 -p 12345");
e poi connettiti semplicemente a 127.0.0.1:12345.
Quando l'applicazione si chiude, puoi sempre inviare un SIGTERM al tuo thread e poi attendere qualche secondo affinché postgresql venga chiuso (cioè unirti al thread).
PS:Puoi anche usare pg_ctl per controllare il proprio database "embedded", anche senza thread, basta eseguire un "pg_ctl start" (con le opportune opzioni) all'avvio dell'applicazione e "pg_ctl stop" all'uscita.
Non puoi incorporarlo come qualcosa di tipo in corso come sqlite ecc., ma puoi facilmente incorporarlo nella configurazione dell'applicazione utilizzando Inno setup su http://www.innosetup.org.Cerca nell'archivio della loro mailing list e scoprirai che qualcuno ha fatto la maggior parte del lavoro per te e tutto ciò che devi fare è prendere la distribuzione zippata e potrai facilmente installare postgresql quando l'utente installa la tua app.È quindi possibile utilizzare il file pg_hba.conf per limitare il server solo all'host locale.Non un vero DB incorporato, ma funzionerebbe.
PostgreSQL è pensato per essere eseguito come server autonomo;probabilmente è possibile incorporarlo se lo hackeri in modo intenso e abbastanza lungo, ma sarebbe molto più semplice eseguirlo come previsto in un processo separato.
HSQLDB (http://hsqldb.org/) è un altro database facilmente incorporabile.Richiede Java, ma è una scelta eccellente e spesso utilizzata per le applicazioni Java.
Qualcuno ha provato su Mac OS X:
http://pagesperso-orange.fr/bruno.gaufier/xhtml/prod_postgresql.xhtml
http://www.macosxguru.net/article.php?story=20041119135924825
(Ovviamente sqlite sarebbe anche il mio database incorporato preferito)