2009-12-02 58 views
6

的本地數據庫我正試圖更新一個傳統的應用程序,它在BDE Paradox文件的黑客入侵系統中執行其所有數據存儲。該計劃在一定的狹窄條件下工作得很好,但它存在嚴重的性能問題。尋找D2009 +

我想通過更新到更好的數據庫系統來嘗試和改進。我需要的是一個本地數據庫,最好能將整個事物存儲在一個文件中,而不是當前的「每個表格一個或多個文件」系統。它必須支持外鍵關係和表索引,並且必須能夠從包含數十萬個元素的表的查詢中快速返回結果。

最後一個很重要。目前的系統被編入索引,但這似乎並不重要。所有的查詢似乎都運行在O(N)時間,其中N是表的總大小,當表開始變大時,它會變得非常慢。我不確定爲什麼,但那必須消失。

它必須在D2009及更高版本下工作。誰能提供一些建議?

回答

7

另一個投票嵌入式火鳥(和火鳥一般)!

我剛剛有一個真棒體驗將Interbase 6.0應用程序移植到嵌入式Firebird 1.5;在閱讀文檔一小段時間後,實際轉換耗時20分鐘,現在我的應用程序在Vista和Windows 7中運行愉快。如果您不需要多用戶支持,那麼我會認真考慮嵌入式Firebird(如果您確實需要多用戶支持,爲什麼不看常規的Firebird)。

這是一個單獨的db文件和幾個引擎小DLL,它很容易部署,維護和備份。在開發過程中有許多工具可以幫助您,IB和Firebird的Delphi社區的技術支持是首屈一指的。

SQL支持在約束,觸發器和存儲過程方面非常出色(我們也有UDF來幫助增強語言 - 可以在Delphi中編寫的DLL並用作數據庫中的內聯函數等等。靈活)。

關於性能的最後一點 - 無論如何,Interbase總是非常活潑,而我迄今爲止嵌入式Firebird的經驗就是它「尖叫」 - 真的,印象非常深刻。

3

this question有一些很好的信息 - SQLite3和Firebird嵌入式似乎是很好的選擇。

1

併發性?

我在一個(非Delphi)項目中使用了SQLite,對此非常滿意。

否則,我認爲Delphi的嵌入式單文件DBMS似乎是Firebird。

7

我在D2009下使用這個SQLite Wrapper取得了很好的成功。我在幾分鐘內完成並運行了它。它具有索引和非常低的開銷。 (這一個是免費的,你不需要除SQLite Dll以外的任何其他東西)

還有一個商業SQLite包裝從Delphi Inspiration和該網站說,他們有一個免費的非商業和教育使用許可以及。我沒有用過那個。

我也使用過Firebird嵌入式,但是您還需要連接組件來與它交談。我有IBObjects,這是我用於服務器和嵌入式版本。我曾嘗試過其他免費Firebird數據庫組件,但還沒有真正找到任何我喜歡的或者說我覺得有信心。

[編輯]
由於大多數人都在暗示火鳥,這裏有一些連接組件對於火鳥,我在過去的或已經嘗試了,我聽說過:

Mercury Database Objects - 免費/開源
IBObjects - 商業(我已經買了這一個我自己)
FIBPlus - 商業
Firebirds ODBC Driver - 免費/開源
ZeosLib - 免費開源

+0

同時使用SQLite和Firebird。發現SQLite更好的選擇 – Gerard 2009-12-02 21:50:24

+0

+1噢,有趣的列表,謝謝。我已經用Interbase和Firebird使用了IBX,雖然那是D7而不是D2009。如果IBX不適用於2009/2010,我可能會使用FIBPlus(我們購買了一個許可證,但我們從未實際使用它),或者我會尋找一個體面的DBXPress驅動程序作爲我所有其他的東西(SQL Server,大多數情況下)是使用DBXPress完成的,整體而言,它對於基本的東西來說不是/不同於IBX。 – robsoft 2009-12-03 15:56:04

+1

多一個庫 - AnyDAC(http://www.anydac.net)。它具有Firebird和SQLite本機驅動程序。 – oodesigner 2010-07-11 13:18:55

0

另一種選擇是使用ADO和Microsoft Access數據庫。唯一的缺點是用戶必須安裝Jet引擎和MDAC ......大多數機器都是這樣做的。這樣做的好處是它可以輕鬆升級到MSSQL。只需將連接字符串更改爲指向SQL Server數據庫,並進行一些小的查詢更改即可。

0

我已經使用了NexusDB多年,它是一個小巧,可靠,靈活的數據庫。它是用Delphi編寫的,具有完整的源代碼,可以完全編譯到您的應用程序中(無需分發DLL)或作爲客戶端服務器系統運行。

很難知道它是否能夠滿足您的性能要求,但是我沒有對SQL查詢性能產生任何問題,前提是我在索引正確的字段。這是每桌產品的一個文件,但不要讓你停下來看看。

這是一款商用產品,但它們提供僅限於單用戶/嵌入式應用的免費DCU版本。

1

嘗試利用數據庫,由Sybase提供的(從擴展系統購買)

http://marketing.ianywhere.com/forms/ADS91-30-Day

它是免費的,如果您不需要客戶端/服務器或網絡的功能。

缺點是它不是100%的VCL,因此VCL包含靜態鏈接到DLL。

如果應用程序需要擴展,則不必再次更改數據庫。

1

我會推薦使用Postgresql作爲數據庫,我們在所有的項目中都使用它,並且在一張表中測試了超過400萬條記錄,並且工作得很好。

0

PostgreSQL是非常好的,但它是一個重型機械這是更接近甲骨文這樣你就可以做的非常沉重的應用程序,但有點痛保持

火鳥是夢幻般嵌入或不 用於連接2009年你可以使用FIB plus從devrace.com他們有一個試用版,只顯示一個嘮叨的屏幕,所以如果它不是一個商業應用程序,它是可以的。

其他如果它是一個商業應用程序,你可以花300美元購買它,我也使用devart組件爲interbase/firebird,他們也很好 如果你想免費使用zeos但你得到你所支付的http://sourceforge.net/projects/zeoslib/ SQL精簡版是不是一個單一的文件,如果它是一個多用戶它吮吸

0

我在完已經使用BDE /悖論本地數據庫和Oracle 8i中對於遠程大型應用程序的轉換工作D b。

我正在使用DevArt的UniDAC。這允許我一個單獨的組件(完全免費的舊BDE),可以作爲本地數據庫擊中MSSQLServer,並繼續作爲我的遠程命中Oracle。我現在可以更輕鬆地在任一端切換數據庫,只需更改提供者即可。

我喜歡這種方法,並且組件似乎做得很好。

Jay (D2007)