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.

Foi útil?

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)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top