2009-10-26 95 views
0

目前,我有一個應用程序,使用嵌入模式下的Firebird連接到一個相對簡單的數據庫存儲爲我的硬盤上的文件。我想切換到使用PostgreSQL來做同樣的事情(是的,我知道這太過分了)。我知道PostgreSQL不能在嵌入式模式下運行,這很好 - 我可以讓服務器進程運行,這對我來說沒問題。PostgreSQL可以與磁盤數據庫一起使用嗎?

我想找出一個連接字符串,將實現這一點,但一直不成功。我已經試過以下變化:

JDBC:PostgreSQL的:C:\ myDB.fdb
JDBC:在PostgreSQL:// C:\ myDB.fdb
JDBC:在PostgreSQL://本地主機:[端口] /C:\myDB.fdb

但似乎沒有任何工作。 PostgreSQL的directions不包括這種情況下的一個例子。這甚至有可能嗎?

+2

Postgres將無法數據庫存儲在一個文件中。根據您的操作系統,您可以在單個文件中包含磁盤映像。 繼續使用Firebird或其他嵌入式數據庫會出現什麼問題?我也喜歡Postgres - 但如果它不符合你的要求... – 2009-10-26 20:15:11

+0

我很害怕這個。由於終端用戶提出的安全問題,我們正在切換,但我們必須找到另一種選擇。 – Chris 2009-10-26 21:47:55

+0

@Chris:我認爲當你可以訪問數據庫文件時,沒有數據庫真的是安全的。所以嵌入式模式不安全。 – 2009-10-26 22:13:35

回答

0

Postgres數據庫不是一個文件。數據庫目錄內的每個表和數據目錄中的每個索引都會有一個文件。所有文件將使用db/table/index的對象ID(OID)命名。

的JDBC的URL指向數據庫名稱,而不是任何特定的文件: JDBC:在PostgreSQL:foodb(本地主機是暗示)

如果「磁盤行爲就像記憶」,你的意思是該數據庫只存在在程序的整個生命週期中,沒有理由不能在程序啓動時創建數據庫,並在程序退出時將其刪除。請注意,這只是用於創建數據庫的DDL,並不是通過init-db程序創建數據目錄。你可以連接到默認的'postgres'數據庫,創建你的數據庫然後連接到它。

+0

我想將Steve K的答案標記爲解決方案,但既然是評論,那麼這是第二好的。 – Chris 2009-10-26 21:55:40

1

你可以欺騙它。如果您在類UNIX系統上運行PostGRESQL,那麼您應該能夠創建RAMDISK並將其用於數據庫存儲。這是一個很好的步驟guide for RAMdisks on Linux

一般來說,我會建議在RAM類型的應用程序中使用SQLITE作爲SQL數據庫。

+0

感謝您的評論。但是,RAM磁盤看起來像磁盤,但我需要一個磁盤,其行爲與內存相似。 – Chris 2009-10-26 19:37:33

+0

磁盤和內存之間的主要行爲差異是內存非常快,並且每個位置的訪問速度都很快。獲得與內存行爲相似的磁盤的唯一方法是使用內存。換句話說,SSD盤或閃存。 PostgreSQL也可以將數據庫存儲在這兩者中的任何一個上。 – 2009-10-26 20:08:13

0

Firebird 2.1以上版本支持全局臨時表,它們只存在於數據庫連接期間。

語法去像CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE ROWS

相關問題