Se possível, como incorporar o PostgreSQL?
-
09-06-2019 - |
Pergunta
Se for possível, estou interessado em poder incorporar um banco de dados PostgreSQL, semelhante ao SQLite.Eu li que é não é possivel.Porém, não sou especialista em banco de dados, então quero ouvir sua opinião.
Essencialmente eu quero o PostgreSQL sem toda a configuração e instalação.Se for possível, diga-me como.
Solução
A menos que você faça uma grande reescrita do código, não é possível executar o Postgres "incorporado".Execute-o como um processo separado ou use outra coisa.SQLite é uma excelente escolha.Mas existem outros.MySQL tem uma versão incorporada.Veja em http://mysql.com/oem/.Também há várias opções de Java, e o Mac possui Core Data que você também pode escrever.Inferno, você pode até usar o FoxPro.Em qual sistema operacional você está e quais serviços você precisa do banco de dados?
Outras dicas
Você não pode incorporá-lo, nem deve tentar.
Para incorporar você deve usar sqlite como você mencionou ou rdbms firebird.
Execute o postgresql em um processo em segundo plano.
Inicie um thread separado em seu aplicativo que iniciaria um servidor postgresql no modo local, vinculando-o ao localhost com alguma porta livre aleatória ou usando soquetes (o Windows suporta soquetes?).Isso deve ser bastante fácil, algo como:
system("C:\Arquivos de Programas\MyApplication\pgsql\postgres.exe -D C:\Documents and Settings\User\Local Settings\MyApplication\database -h 127.0.0.1 -p 12345");
e então basta conectar-se a 127.0.0.1:12345.
Quando seu aplicativo for encerrado, você sempre poderá enviar um SIGTERM para seu thread e aguardar alguns segundos para que o postgresql seja encerrado (ou seja, entre no thread).
PS:Você também pode usar pg_ctl para controlar seu banco de dados "embutido", mesmo sem threads, basta fazer um "pg_ctl start" (com opções apropriadas) ao iniciar a aplicação e "pg_ctl stop" ao encerrá-la.
Você não pode incorporá-lo como um tipo de processo como sqlite etc, mas pode incorporá-lo facilmente na configuração do seu aplicativo usando a configuração do Inno em http://www.innosetup.org.Pesquise o arquivo da lista de discussão e você encontrará alguém que fez a maior parte do trabalho para você e tudo que você precisa é pegar a distribuição compactada e você pode facilmente instalar o postgresql quando o usuário instalar seu aplicativo.Você pode então usar o arquivo pg_hba.conf para restringir o servidor apenas ao host local.Não é um verdadeiro banco de dados incorporado, mas funcionaria.
O PostgreSQL foi projetado para ser executado como um servidor independente;provavelmente é possível incorporá-lo se você hackeá-lo com força e por tempo suficiente, mas seria muito mais fácil executá-lo conforme planejado em um processo separado.
HSQLDB (http://hsqldb.org/) é outro banco de dados que é facilmente incorporado.Requer Java, mas é uma escolha excelente e frequentemente usada para aplicativos Java.
Alguém tentou no Mac OS X:
http://pagesperso-orange.fr/bruno.gaufier/xhtml/prod_postgresql.xhtml
http://www.macosxguru.net/article.php?story=20041119135924825
(É claro que sqlite também seria meu banco de dados incorporado preferido)