Pregunta

Actualmente, tengo una aplicación que usa Firebird en modo incrustado para conectarse a una base de datos relativamente simple almacenada como un archivo en mi disco duro. Quiero cambiar a usar PostgreSQL para hacer lo mismo (Sí, sé que es excesivo). Sé que PostgreSQL no puede funcionar en modo incrustado y eso está bien: puedo dejar el proceso del servidor ejecutándose y eso está bien conmigo.

Estoy tratando de descubrir una cadena de conexión que logre esto, pero no he tenido éxito. He intentado variaciones en lo siguiente:

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

pero nada parece funcionar. Las instrucciones de PostgreSQL no incluyen un ejemplo para este caso. ¿Es esto posible?

¿Fue útil?

Solución

Las bases de datos Postgres no son un solo archivo. Habrá un archivo para cada tabla y cada índice en el directorio de datos, dentro de un directorio para la base de datos. Todos los archivos se nombrarán con el ID de objeto (OID) de db / table / index.

Las URL de JDBC apuntan al nombre de la base de datos, no a ningún archivo específico: jdbc: postgresql: foodb (localhost está implícito)

Si por "disco que se comporta como la memoria", quiere decir que la base de datos solo existe durante la vida útil de su programa, no hay ninguna razón por la que no pueda crear una base de datos al inicio del programa y soltarla al salir del programa. Tenga en cuenta que esto es solo DDL para crear la base de datos, no crear el directorio de datos a través del programa init-db. Puede conectarse a la base de datos predeterminada 'postgres', crear su base de datos y luego conectarse a ella.

Otros consejos

Puedes engañarlo. Si está ejecutando PostGRESQL en un sistema similar a UNIX, entonces debería poder crear un RAMDISK y usarlo para el almacenamiento de la base de datos. Aquí hay una guía para discos RAM en Linux . >

Sin embargo, en general, sugeriría usar SQLITE para una aplicación de tipo SQL db en RAM.

Firebird 2.1 en adelante admite tablas temporales globales, que solo existen durante la conexión de la base de datos.

La sintaxis es algo así como CREAR TABLA TEMPORAL GLOBAL ... EN COMPROMISO PARA CONSERVAR FILAS

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top