2017/08/09

論 Firebird Embedded 最小部署與 SQLite 的比較 (CHT)


最近看嵌入式資料庫,找到 SQLite 和 Firebird embedded (emb) 的比較,SQLite 相當輕巧,搭配優良的開發工具,在部署時甚至不需要打包 sqlite3.dll 引擎。

真不甘心,Firebird embedded 也有最小配置啊!

就來整理一下,Firebird embedded 到底可以有多小吧!

最小配置:
  • fbembed.dll (視連接 Driver 可能需要改名為 fbclient.dll 或 gds32.dll)
  • icudt30.dll
  • icuin30.dll
  • icuuc30.dll

使用【最小配置】就可以連線 Firebird emb 資料庫。

但是會有副作用──在【每次】連線時會產生Log,並紀錄於「firebird.log」檔案,內容大致如下:


ib_util init failed, UDFs can't be used - looks like firebird misconfigured

C:\Project1\Win32\Debug\bin/ib_util.dll library has not been found
C:\Project1\Win32\Debug\ib_util.dll library has not been found
ib_util.dll library has not been found

意思是【程式找不到 ib_util.dll,所以無法使用 User-Defined Functions (UDFs)  函式庫】。

UDFs 函式庫提供一些程式應用的語法


像是【ltrim】(刪除字串左邊空白)這類非 SQL-92 語言。

所以就算不用 UDFs,仍建議加入【ib_util.dll】,避免每次連線都產生 Log 記錄。

若要使用 UDFs,除了剛才的 ib_util.dll 外,要從 Firebird Embedded 目錄裡再取出:
  • intl
  • udf
兩個資料夾,複製到和EXE相用路徑。

在資料庫的操作上難免會發生錯誤,如果要取得 Firebird 真正回傳的訊息,就必須加入:
  • firebird.msg
以下是 Firebird Embedded 部署時,建議最小配置的畫面:


Windows XP 前的版本

它們需要【Microsoft C/C++ Runtime Libraries】,所需檔案如下:
  • Microsoft.VC80.CRT.manifest
  • msvcp80.dll
  • msvcr80.dll

上述檔案可以在 Firebird server 安裝檔裡找到,它們通常隨著 EXE 路徑配置,若仍無法讀取,複製到 C:\Windows\System32 下即可。

總結
Firebird emb 和 SQLite 一比較起來,明顯地落後很多

除了在部署上要注意很多細節外,Firebird emb 最小配置需要 5 mb,體積也比SQLite大上許多。

Firebird emb 最後的優勢大概只剩下可以平滑升級為 Server 版。

然而,畢竟 Firebird 的核心是 Interbase 6.0,包袱很大。

雖然不甘心,但 Firebird emb 確實是輸的一塌糊塗。

期待未來的 Firebird 3.0  emb 能有大幅度的進化。

See also:

沒有留言:

張貼留言