PostgreSQL 可以与磁盘数据库一起使用吗?
目前,我有一个应用程序在嵌入式模式下使用 Firebird 连接到作为文件存储在硬盘驱动器上的相对简单的数据库。我想改用 PostgreSQL 来做同样的事情(是的,我知道这有点矫枉过正)。我知道 PostgreSQL 无法在嵌入式模式下运行,这很好 - 我可以让服务器进程保持运行,这对我来说没问题。
我试图找出一个连接字符串来实现这一点,但没有成功。我尝试过以下内容的变体:
jdbc:postgresql:C:\myDB.fdb jdbc:postgresql://C:\myDB.fdb
jdbc:postgresql://localhost:[port]/C:\myDB.fdb
但似乎没有任何作用。 PostgreSQL 的 说明 不包含此情况的示例。这可能吗?
Currently, I have an application that uses Firebird in embedded mode to connect to a relatively simple database stored as a file on my hard drive. I want to switch to using PostgreSQL to do the same thing (Yes, I know it's overkill). I know that PostgreSQL cannot operate in embedded mode and that is fine - I can leave the server process running and that's OK with me.
I'm trying to figure out a connection string that will achieve this, but have been unsuccessful. I've tried variations on the following:
jdbc:postgresql:C:\myDB.fdb
jdbc:postgresql://C:\myDB.fdb
jdbc:postgresql://localhost:[port]/C:\myDB.fdb
but nothing seems to work. PostgreSQL's directions don't include an example for this case. Is this even possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你可以欺骗它。如果您在类 UNIX 系统上运行 PostGRESQL,那么您应该能够创建 RAMDISK 并将其用于数据库存储。这是Linux 上 RAMdisk 的非常好的分步指南。
但总的来说,我建议对 RAM 类型的应用程序中的 SQL 数据库使用 SQLITE。
You can trick it. If you are running PostGRESQL on a UNIXlike system, then you should be able to create a RAMDISK and use that for the database storage. Here's a pretty good step by step guide for RAMdisks on Linux.
In general though, I would suggest using SQLITE for an SQL db in RAM type of application.
Postgres 数据库不是单个文件。数据目录中的每个表和每个索引都有一个文件,位于数据库目录内。所有文件都将以 db/table/index 的对象 ID (OID) 命名。
JDBC url 指向数据库名称,而不是任何特定文件:
jdbc:postgresql:foodb (隐含本地主机)
如果“行为类似于内存的磁盘”,您的意思是数据库仅在程序的生命周期内存在,那么您没有理由不能在程序启动和删除时创建数据库它在程序退出时。请注意,这只是创建 DB 的 DDL,而不是通过 init-db 程序创建数据目录。您可以连接到默认的“postgres”数据库,创建您的数据库然后连接到它。
Postgres databases are not a single file. There will be one file for each table and each index in the data directory, inside a directory for the database. All files will be named with the object ID (OID) of db / table / index.
The JDBC urls point to the database name, not any specific file:
jdbc:postgresql:foodb (localhost is implied)
If by "disk that behaves like memory", you mean that the db only exists for the lifetime of your program, there's no reason why you can't create a db at program start and drop it at program exit. Note that this is just DDL to create the DB, not creating the data dir via the init-db program. You could connect to the default 'postgres' db, create your db then connect to it.
Firebird 2.1 及以后版本支持全局临时表,该表仅在数据库连接期间存在。
语法类似于 CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE ROWS
Firebird 2.1 onwards supports global temporary tables, which only exist for the duration of the database connection.
Syntax goes something like CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE ROWS