[原創(chuàng)]Firebird數(shù)據(jù)庫值得信賴嗎?為什么我要在開發(fā)中選擇它? |
1、Firebird是一個真正的關(guān)系數(shù)據(jù)庫,支持存儲過程、視圖、觸發(fā)器、事務(wù)等大型關(guān)系數(shù)據(jù)庫的所有特性; 2、Firebird支持SQL92的絕大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0對SQL99的支持更完整; 3、Firebird源碼基于成熟的商業(yè)數(shù)據(jù)庫Interbase,有良好的穩(wěn)定性,與Interbase有良好的兼容性; 4、不用考慮授權(quán)費(fèi)用(免費(fèi)),不用當(dāng)心將來有一天你或你的客戶因為使用盜版而被數(shù)據(jù)庫開發(fā)商告上法庭; 5、發(fā)布簡易,安裝文件只有幾M,且高度可定制,客戶端的分發(fā)也很簡單,只需一個DLL文件; 6、Firebird的一嵌入式服務(wù)器版本,不用安裝,直接運(yùn)行,基于單機(jī)開發(fā)首選; 7、Firebird的運(yùn)行效率非常高; 8、具備高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系統(tǒng)下運(yùn)行,而且數(shù)據(jù)庫格式完全一樣,不用修改; 9、開發(fā)環(huán)境支持良好,Delphi,C++Builder不用通過ODBC連接,直接用原生開發(fā)接口開發(fā)基于Firebird的程序。
|
|
還有其他特性: 1.支持事件,這個特性很好,很多商業(yè)數(shù)據(jù)庫都沒有,如sql server,DB2都沒有. 2. 支持?jǐn)?shù)組字段,這個sql server還不支持. 3 支持計算字段,這個sql server還不支持.不過作用不是很大. 4 觸發(fā)器功能比很多商業(yè)數(shù)據(jù)庫都強(qiáng)大 好處講了,我現(xiàn)在講企業(yè)級應(yīng)用還缺少的地方(^..^大家不要對我扔香蕉呀): 1. 不支持分布式服務(wù), 如在觸發(fā)器中或存儲過程中也訪問其他的FB數(shù)據(jù)庫現(xiàn)在沒有解決方法.只能通過前臺程序進(jìn)行解決. 2 Supserver模式不的線程不支持多處理器.這個可能要等到FB3.0才能解決. 3 不支持?jǐn)?shù)據(jù)分發(fā)與訂閱,現(xiàn)在MIS系統(tǒng)一般都要求數(shù)據(jù)即集中又獨立,這個就要數(shù)據(jù)的分發(fā)與訂閱服務(wù).當(dāng)然即使支持服務(wù),寫這樣的管理系統(tǒng)時數(shù)據(jù)庫設(shè)計要需要很多的技巧的.不過通過第三方工具可以支持.見網(wǎng)站:www.meta.com.au 有一個FBReplicator工具 4 不支持全文檢索,不過可以通過第三方工具支持,見以下網(wǎng)站: http://www./cs/database/FulltextFirebird.asp
現(xiàn)講些雞毛算皮的 1 不支增量備份,只有完全部分.對于特大的數(shù)據(jù)庫時,完全備分就會有些不便了. 2 沒有事務(wù)日誌(因是MGA),也就是不存在日誌備份,不過這個有不有作用不是很大. 3 基本的內(nèi)置函數(shù)缺少.寫存儲過程與觸發(fā)器時得找些第三方函數(shù)庫,或自己寫自定義函數(shù),這個即有壞處也有好處,壞處是影響了開發(fā)效率,好處是程序員可以寫出功能強(qiáng)大的適合本系統(tǒng)的函數(shù).相當(dāng)于sql server的自定義存儲過程. 4 安全性不好,破解FB的數(shù)據(jù)庫密碼相當(dāng)容易,只要把原生secury.fdb數(shù)據(jù)庫覆蓋你服務(wù)器同名的數(shù)據(jù)庫,sysdba管理員的密碼就恢復(fù)到masterkey ,這個只能怪開源太透明什么都告訴你,假設(shè)你知sql server 安全數(shù)據(jù)資料存放在什么地方,我相信每個人破解sa 密碼也是很容易的. 5 過程與觸發(fā)器代碼不能加密碼,這樣自己系統(tǒng)的業(yè)務(wù)邏輯很容易被泄露.像sql server可以加蜜,不過其加密是假,在網(wǎng)上隨便下個工具就可以破解,不過sql server可以寫成dll形式的外部存儲過程(哈哈,就是fb的自定義函數(shù)) 6 數(shù)據(jù)精度不可,不過對一般的中小型應(yīng)用來說是夠了. 7 不支持臨時表,這個比sql server退步點,不過他有外部文件表,哈哈比sql server有進(jìn)步.
|
|
7 不支持臨時表,這個比sql server退步點,不過他有外部文件表,哈哈比sql server有進(jìn)步 什么是外部文件表? |
|
這個指的是在firebird中數(shù)據(jù)庫的表,他的表數(shù)據(jù)是以文件形式存在磁的,例如: CREATE TABLE HELL EXTERNAL FILE ‘extal.fs‘ ( ADDREE CHAR(10) NOT NULL, NAME CHAR(10))
以上將建一個extal.fs的文件來保存表HELL的數(shù)據(jù),extal.fs文件的路徑由FB的配置文件中的ExternalFileAccess選項決定,如ExternalFileAccess=c:\windows 那么extal.fs的全路徑是: c:\windows\extal.fs
這種表用來與其他的數(shù)據(jù)源交源數(shù)據(jù)是相當(dāng)方便的. |
回復(fù):[原創(chuàng)]Firebird數(shù)據(jù)庫值得信賴嗎?為什么我要在開發(fā)中選擇它? |
[QUOTE][b]以下是引用haha168在2005-8-24 22:47:40的發(fā)言: 過程與觸發(fā)器代碼不能加密碼,這樣自己系統(tǒng)的業(yè)務(wù)邏輯很容易被泄露.像sql server可以加蜜,不過其加密是假,在網(wǎng)上隨便下個工具就可以破解,不過sql server可以寫成dll形式的外部存儲過程(哈哈,就是fb的自定義函數(shù)) [/QUOTE]
這一條有異議,好象可以在編譯之后把存儲過程的文本刪掉,沒的試過,有興趣的可以試試(注意先做好備份)
FB怎么對存貯過程進(jìn)行加密
用firebird開發(fā)的系統(tǒng),發(fā)布后,用戶可以打開數(shù)據(jù)庫并看到存儲過程源碼,如何加密存儲過程不讓用戶查看.
很簡單, 修改系統(tǒng)表 RDB$PROCEDURES 的字段 RDB$PROCEDURE_SOURCE
的內(nèi)容即可, 我是這樣的:
UPDATE RDB$PROCEDURES SET RDB$PROCEDURE_SOURCE = NULL
(RDB$PROCEDURE_BLR 是編譯后的二進(jìn)制代碼, 刪除源代碼不影響運(yùn)行)
以上文字來源于龍豪軟件(www.) |
|
上面的保密方式我是不敢用的,版本管理困難呀,我記得在2003的firebird年會資料上就有人說過這個招了,但沒人敢用.
vga,我不知道你會不會破解sql server的sa密碼?如果會你就把他公布出來,讓我們學(xué)習(xí)下我是不會的。不過我是很容易把ib/fb的sysdb密碼破解的,這個方法很多都會的。要比功能的強(qiáng)大與全面、安全、易用.ib/fb是比不過sql server的(大家別吐口水呀),不過ib/fb也有他的特色。反正是白菜、蘿卜各有愛。能滿足客戶需要就是我們標(biāo)準(zhǔn)了
|
|
版本管理是怎么回事?? 要是修改了存儲過程,用新的存儲過程replace create,然后再清除源碼不行嗎??
所謂存儲過程版本管理的概念,只是一個引用的概念而已, 意思是, 如果已經(jīng)正式發(fā)行了的軟件(已經(jīng)交付用戶使用了), 因某種原因升級時, 可能用戶那里的數(shù)據(jù)庫存儲過程也需要更新, 那么就需要你在程序里寫相關(guān)的專用代碼來解決這個問題.
我目前的解決方案其實就是將開發(fā)時的新的存儲過程代碼,導(dǎo)出并加密 然后在相應(yīng)程序的模塊中解密導(dǎo)入,重編譯, 然后,刪除源代碼 可能有更好的辦法(或許可以省略加解密過程, 直接導(dǎo)出導(dǎo)入二進(jìn)制代碼,呵呵), 但目前我不知道,學(xué)習(xí)中...
我也在學(xué)習(xí)中啊,在用戶那兒再編譯, 確實不是好的解決方法吧,所以那時我還是不太肯定 不過今天提出的問題仔細(xì)一看,好像還真很簡單, 可以直接利用RDB$PROCEDURE_BLR字段的,哈哈
|
|
PROCEDURE_BLR字段是什么類型的? 可以直接Update么??等你的測試結(jié)果。
PROCEDURE_BLR字段是BLOB,嗯,原來如此
|
|