簡體   English   中英

具有Firebird數據庫的IBPP接口的經驗

[英]Experience with IBPP interface for Firebird database

我想問一下那些有Firebird和IBPP經驗的人(特別是后者)。 我找到了很多關於Firebird的正面帖子,但我有一個問題需要決定IBPP。 界面本身干凈簡潔,但似乎項目沒有太多活動(可能因為它非常穩定)。

  • 你會推薦IBPP用於生產環境嗎?
  • 它是線程安全的嗎?
  • 任何已知的錯誤?

謝謝。

IBPP非常穩定,我會推薦它用於生產。 也就是說,如果您打算將它用於常規應用程序。

如果你想構建一個管理工具或類似的東西,那么就要准備好進入內部並弄臟你的手,因為不支持SQL但不改進API的一些新功能(即Firebird 2.5的東西)。 例如,它缺少一個可以公開新跟蹤API的層。

無論如何,繼續我使用它。 我有一堆IBPP應用程序正在生產多年,並且正如Douglas所寫,FlameRobin正在使用IBPP,它可以完美地工作(至少就DB層而言)。

唯一要注意的是NUMERIC字段,它們在Firebird內部存儲為整數+比例。 IBPP通過C / C ++“double”暴露那些,但也通過16/32/64位整數。 因此在檢索此類值時要非常小心,因為您不會收到任何警告。 例如,如果你有DECIMAL(18,2)字段,其值為254.00,並且你不小心將其讀成一個整數,那么你將得到25400而不是254.確保你要么讀取為double,要么稍后自己縮放。 這很有用,因為你可以安全地將25400轉換為字符串,然后添加一個小數點,這樣你就不會失去雙精度(這完全取決於你的應用程序的類型和當然的數字)。

除了米蘭提到的觀點:

  • 當連接到不同的數據庫時,當前無法使用多個客戶端庫,甚至無法指定將使用哪個客戶端庫。 有一些硬編碼的客戶端庫位置序列被探測,找到的第一個將用於所有連接。 改變這種情況的IBPP版本已被暗示很長一段時間,但尚未到來。 SVN trunk包含一些代碼來處理這個問題,但我最多會說它的alpha質量。
    所有這一切都適用於Windows,因為在所有其他平台上,Firebird客戶端庫無論如何都不會在運行時加載。

  • 該庫不是線程安全的。 這在大多數情況下並不重要,因為您應該讓每個線程都有自己的連接,事務和其他各種各樣的對象。 但是IBPP使用自己的智能指針實現,既不是完全異常安全也不是線程安全的。 仍然,只要你從主線程初始化庫(在創建任何其他線程之前)並在同一個線程中創建和銷毀IBPP對象(所以絕對沒有與其他線程共享對象!)在多個線程中使用IBPP應該工作精細。

  • 如果您能夠接受上述要點(它們對您來說可能無關緊要),它肯定可以用於生產。 您可以隨時更改遇到的事情,就像我們對FlameRobin所做的那樣。

我無法從經驗中得知,因為我從未使用過IBPP。
但顯然它被火焰神經項目使用,所以我相信它“足夠穩定”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM