Pergunta

Atualmente, eu tenho um aplicativo que usa Firebird no modo incorporado para conectar a um banco de dados relativamente simples armazenado como um arquivo no meu disco rígido. Quero passar a usar o PostgreSQL para fazer a mesma coisa (Sim, eu sei que é um exagero). Eu sei que o PostgreSQL não pode operar no modo incorporado e que é bom - I pode deixar o processo do servidor em execução e que está ok comigo

.

Eu estou tentando descobrir uma cadeia de ligação que vai conseguir isso, mas não tiveram sucesso. Eu tentei variações sobre o seguinte:

jdbc: postgresql: C: \ myDB.fdb
jdbc: postgresql: // C: \ myDB.fdb
jdbc: postgresql: // localhost: [port] /C:\myDB.fdb

mas nada parece funcionar. direções do PostgreSQL não incluem um exemplo para este caso. Isto é mesmo possível?

Foi útil?

Solução

bancos de dados PostgreSQL não são um único arquivo. Haverá um arquivo para cada mesa e cada índice no diretório de dados, dentro de um diretório para o banco de dados. Todos os arquivos serão nomeados com o ID de objeto (OID) de db / mesa / index.

O JDBC URLs apontam para o nome do banco, e não qualquer arquivo específico: jdbc: postgresql: foodb (localhost está implícito)

Se por "disco que se comporta como memória", você quer dizer que a db só existe para a vida do seu programa, não há nenhuma razão para que você não pode criar um db no início do programa e deixá-la na saída do programa. Note-se que este é apenas DDL para criar o DB, não criando a dir dados através do programa init-db. Você poderia ligar para db as padrão 'postgres', crie seu db em seguida, conectar a ele.

Outras dicas

Você pode enganá-lo. Se você estiver executando o PostgreSQL em um sistema Sistema operacional tipo Unix, então você deve ser capaz de criar um RAMDISK e usar isso para o armazenamento de banco de dados. Aqui está um bom passo a passo bastante guia para RAMdisks sobre Linux .

No entanto geral, gostaria de sugerir usando SQLite para uma db SQL no tipo RAM de aplicação.

Firebird 2.1 em diante suporta tabelas temporárias globais, que existem apenas para a duração da conexão de banco de dados.

A sintaxe é algo como CRIAR GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE ROWS

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