PostgreSQL可以与磁盘数据库一起使用吗?

PostgreSQL可以与磁盘数据库一起使用吗?,postgresql,jdbc,firebird,embedded-database,Postgresql,Jdbc,Firebird,Embedded Database,目前,我有一个应用程序,它在嵌入式模式下使用Firebird连接到一个相对简单的数据库,该数据库作为文件存储在我的硬盘上。我想改用PostgreSQL做同样的事情(是的,我知道这太过分了)。我知道PostgreSQL不能在嵌入式模式下运行,这很好——我可以让服务器进程保持运行,这对我来说没问题 我试图找出一个连接字符串来实现这一点,但没有成功。我尝试了以下方面的变化: jdbc:postgresql:C:\myDB.fdb jdbc:postgresql://C:\myDB.fdb jdbc:p

目前,我有一个应用程序,它在嵌入式模式下使用Firebird连接到一个相对简单的数据库,该数据库作为文件存储在我的硬盘上。我想改用PostgreSQL做同样的事情(是的,我知道这太过分了)。我知道PostgreSQL不能在嵌入式模式下运行,这很好——我可以让服务器进程保持运行,这对我来说没问题

我试图找出一个连接字符串来实现这一点,但没有成功。我尝试了以下方面的变化:

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


但似乎什么都不管用。PostgreSQL不包括这种情况的示例。这可能吗?

你可以欺骗它。如果您在UNIXlike系统上运行PostGRESQL,那么您应该能够创建一个RAMDISK并将其用于数据库存储。这是一个很好的步骤


一般来说,我建议将SQLITE用于RAM类型的SQL db应用程序。

Postgres数据库不是一个单独的文件。在数据库的目录中,数据目录中的每个表和每个索引都有一个文件。所有文件都将使用db/table/index的对象ID(OID)命名

JDBC URL指向数据库名称,而不是任何特定文件: jdbc:postgresql:foodb(隐含localhost)


如果“行为类似内存的磁盘”,您的意思是db只在程序的生命周期内存在,那么您没有理由不能在程序启动时创建db并在程序退出时删除它。注意,这只是创建DB的DDL,而不是通过init DB程序创建数据目录。您可以连接到默认的“postgres”数据库,创建数据库,然后连接到它。

Firebird 2.1及以后版本支持全局临时表,这些表仅在数据库连接期间存在


语法类似于创建全局临时表。。。关于提交保留行

谢谢您的评论。然而,RAM磁盘似乎是一种行为类似于磁盘的内存,而我需要一种行为类似于内存的磁盘。磁盘和内存之间的主要行为差异是内存非常快,每个位置的访问速度都一样快。要获得一个性能类似于内存的磁盘,唯一的方法就是使用内存。换句话说,SSD磁盘或闪存。PostgreSQL也可以将其数据库存储在这两个文件中的任何一个上。Postgres将无法将数据库存储在一个文件中。根据您的操作系统,您可以在单个文件中包含磁盘映像。继续使用Firebird或其他嵌入式数据库有什么问题?我也喜欢博士后——但如果它不符合你的要求……我担心这一点。由于最终用户提出的安全问题,我们进行了切换,但我们必须找到另一种选择。@克里斯:我认为当您可以访问数据库文件时,没有任何数据库是真正安全的。所以嵌入式模式是不安全的。我想把Steve K的答案标记为解决方案,但因为这是一个评论,这是次好的选择。