出處: http://www.firebird.net.cn/forum_view.asp?forum_id=3&view_id=1339&page=-1
老板要我開發(fā)一個(gè)LINUX平臺(tái)上的數(shù)據(jù)庫(kù)項(xiàng)目,要求一定要用開源免費(fèi)數(shù)據(jù)庫(kù)。我知道這個(gè)數(shù)據(jù)庫(kù)必須能夠上網(wǎng)操作,同時(shí)作為公司的核心骨干數(shù)據(jù)庫(kù),除了必須是穩(wěn)定的存儲(chǔ)數(shù)據(jù)庫(kù)外還必須有很強(qiáng)的數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能。
我 想了想說,就用MYSQL吧。老板問為什么。 我把所知的好處倒背如流地?cái)?shù)說一遍,并強(qiáng)調(diào)據(jù)MySQL執(zhí)行副總裁Zack Urlocker講,MySQ在中國(guó)的下載量已經(jīng)超過了美國(guó),中國(guó)市場(chǎng)現(xiàn)在是第一大下載量。去年截至九月份的數(shù)字是380萬的下載量。。。MYSQL一定 是最好的。
老板面有遲疑,說他太不明白我的意思。他想要知道的是什么數(shù)據(jù)庫(kù)最適用我們公司,我卻告訴他MySQ在中國(guó)的下載量世界第一,因此MYSQL一定是最好的。他說中國(guó)的自行車產(chǎn)量用量都是世界第一,但不能因此就說中國(guó)的自行車質(zhì)量性能也一定是世界第一,更重要的是不能因此就說中國(guó)的自行車一定適用我們公司,看不出兩者間的必然聯(lián)系。
我說下載的人多,用的人也就多,前有古人,后有來者,道路平坦,不需摸索。MYSQL書籍比比皆是,各種案例垂手可得,路熟駕輕,好寫好用。隨大流,準(zhǔn)沒錯(cuò)。
老板一笑,說恐怕這才是真正原因之一。接著說, 聽說中國(guó)有個(gè)叫魯迅的說過,其實(shí)世上本是沒有路的,走的人多了,也便漸漸地成了路。就是MYSQL最初也一定有拓路者,摸索者,開例者,著書者,現(xiàn)在才能有“前有古人,后有來者,道路平坦,不需摸索”。
我略吃一驚,沒想到這個(gè)喝過點(diǎn)洋湯的假洋鬼子還知道中國(guó)有個(gè)叫魯迅的(老實(shí)說,我都不太知道,魯迅的書沒讀過幾本)。接著老板又交給我一份表格,要我回答駁倒所例問題,并順便問一下,這380萬的下載量中有多少是經(jīng)過認(rèn)真比較堪察之后決定用MYSQL的。
我接過一看,又是一驚,其中許多問題還是第一次看到。因此決定拿到這里。高手云集,冠蓋繁星(各位中老總,少總不少吧),請(qǐng)直陳理由,無論如何要把假洋鬼子頂?shù)埂?span lang="EN-US">
老板推薦的是 FIREBIRD FOR LINUX 。
所有比較和數(shù)據(jù)均以已在運(yùn)行中的正式發(fā)行版為依據(jù)。
多處引用 “專訪MySQL副總:MySQL的空間在哪里?” 日期:2007-05-29 作者:IT168 來自:linux.chinaunix.net
據(jù)MySQL執(zhí)行副總裁Zack Urlocker講:
在安裝成本上,MySQL是根據(jù)服務(wù)器來收費(fèi)的,即一個(gè)服務(wù)器收取多少錢。MySQL舊版升級(jí)必須付費(fèi). 像政府、企業(yè)、電信用戶,他們可以向萬里開源公司來買商業(yè)許可證。
據(jù) 悉,MySQL 3.23和4.0版本的用戶如果要繼續(xù)獲得安全更新服務(wù),則必須購(gòu)買“MySQL網(wǎng)絡(luò)支持”服務(wù)。該服務(wù)的啟動(dòng)時(shí)間為:3.23版從八月一日開始,4.0 版則從十月一日開始。 網(wǎng)絡(luò)支持的收費(fèi)為:美國(guó)服務(wù)期每年595美元;歐洲服務(wù)期每年495歐元。(也許對(duì)中國(guó)情況很了解,干脆不收費(fèi)了?)。
近 日,MySQL低調(diào)宣布它將不再把MySQL企業(yè)版服務(wù)器作為一個(gè)tar包發(fā)布,而這距離這個(gè)公司宣布將MySQL分為免費(fèi)版和付費(fèi)版的時(shí)間還不到一年。盡管它的企業(yè)版服務(wù)器代碼依然在通用公共許可下推出,MySQL正在使不是它的客戶的人們更加難于訪問這個(gè)源代碼。 MySQL公司負(fù)責(zé)社區(qū)關(guān)系的副總裁Kaj Arno寫到,企業(yè)版的tar包“將從ftp.mysql.com中刪除,而增加到enterprise.mysql.com中,將只對(duì)我們的付費(fèi)申請(qǐng)者 提供。”令許多用戶感到擔(dān)心的事情之一是,以后的社區(qū)版是否會(huì)一個(gè)功能低劣的版本 (新聞來源:IT168 發(fā)布日期:2007-08-15)
FIREBIRD 徹底免費(fèi). 源代碼徹底公開。
http://sourceforge.net/projects/firebird ;
http://www.ibphoenix.com%c2%a0/;
http://www.firebirdsql.org
MySQL也可以提供一些企業(yè)級(jí)的技術(shù)服務(wù),我們經(jīng)常提到的它的三個(gè)服務(wù)就是它的性能、可靠性、易用性。
易 用性。我們這里依賴幾個(gè)數(shù)字,MySQL的安裝包非常的小,大概是15兆到20兆。作為一個(gè)數(shù)據(jù)庫(kù),這么小的安裝程序這是其他軟件做不到的。另外, MySQL的安裝非常簡(jiǎn)單,只需要15分鐘。有的客戶不相信,我們的工程師就現(xiàn)場(chǎng)教給他,15分鐘就可以安裝完,這是你不可想象的。
FIREBIRD的安裝包只有 6M, 安裝簡(jiǎn)單,只需要 3-5 分鐘。(一個(gè)RPM命令)
在安裝之后, MySQL必須決定應(yīng)用于何種類型
第一種是開發(fā)服務(wù)器,將只用盡量少的內(nèi)存,
第二種是普通WEB服務(wù)器,將使用中等數(shù)量?jī)?nèi)存,
最后一種是這臺(tái)服務(wù)器上面只跑mysql數(shù)據(jù)庫(kù),將占用全部的內(nèi)存.
象我們公司這樣, 這個(gè)數(shù)據(jù)庫(kù)必須能夠上網(wǎng)操作,必須合用服務(wù)器(這臺(tái)服務(wù)器上面除mysql數(shù)據(jù)庫(kù)外, 還有其他程式, mysql不能單獨(dú)占用服務(wù)器),怎么辦?
FIREBIRD 安裝之后只有一種默認(rèn)類型, 占用 32-64 MB 內(nèi)存。 完全不需單獨(dú)占用服務(wù)器。
然后MySQL必須決定選擇數(shù)據(jù)庫(kù)用途,
第 一種是多功能用途,將把數(shù)據(jù)庫(kù)優(yōu)化成很好的innodb存儲(chǔ)類型和高效率的myisam存儲(chǔ)類型,(最多選用).在MySQL的用戶中,比如說在新浪或者 雅虎,MySQL是作為存儲(chǔ)性的數(shù)據(jù)庫(kù),而不是作為事務(wù)處理和管理性的數(shù)據(jù)庫(kù), MySQL都是應(yīng)用在非管理性業(yè)務(wù)中。
第二種是只用于事務(wù)處理類型,最好的優(yōu)化innodb,但同時(shí)也支持myisam。
最后一種是非事務(wù)處理類型,適合于簡(jiǎn)單的應(yīng)用,只有不支持事務(wù)的myisam類型是被支持的。
象我們公司這樣, 這個(gè)數(shù)據(jù)庫(kù)必須能夠上網(wǎng)操作,同時(shí)作為公司的核心骨干數(shù)據(jù)庫(kù),除了必須是穩(wěn)定的存儲(chǔ)數(shù)據(jù)庫(kù)外還必須有很強(qiáng)的數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能。怎么辦? 選哪種好?
FIREBIRD高效率的存儲(chǔ)功能是其默認(rèn)的基本功能之一, 而數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能則是其強(qiáng)項(xiàng)之一。
因?yàn)?span lang="EN-US">MySQL的存儲(chǔ)引擎是可以更換的這個(gè)優(yōu)勢(shì),所以MySQL有很多的存儲(chǔ)引擎,當(dāng)然各種存儲(chǔ)引擎有各自的特點(diǎn),客戶因?yàn)橛昧?span lang="EN-US">MySQL有這種靈活地選擇存儲(chǔ)引擎的優(yōu)勢(shì),所以可以選擇不同的存儲(chǔ)引擎來適合自己的應(yīng)用。
優(yōu) 勢(shì)呼, 劣勢(shì)呼!麻煩大了。不錯(cuò),MYSQL是有4種引擎,但每種引擎都有各自不同(不通)的數(shù)據(jù)庫(kù)表結(jié)構(gòu),不同的磁盤文件結(jié)構(gòu),不同的數(shù)據(jù)和數(shù)據(jù)庫(kù)控管要求。嚴(yán)格地講,按RDBMS標(biāo)準(zhǔn)MYSQL不是一個(gè),而是4個(gè)數(shù)據(jù)庫(kù)。比如DBD(Berkeley)數(shù)據(jù)庫(kù)引擎會(huì)在表頭內(nèi)寫下該表的完整路徑,因此不能把含有該表的數(shù)據(jù)庫(kù)挪到另外目錄中去操作。這樣在硬件升級(jí)或系統(tǒng)故障而必須把含有該表的數(shù)據(jù)庫(kù)挪到另外目錄中去時(shí),只好先甩出數(shù)據(jù),在新地點(diǎn)新建數(shù)據(jù)庫(kù),再塞回 數(shù)據(jù)。稍有閃失,數(shù)據(jù)出錯(cuò)。如果是一大型數(shù)據(jù)庫(kù),不堪設(shè)想。實(shí)際上是,多種引擎, 一個(gè)工作,一旦選定,極難轉(zhuǎn)換。
MYSQL最為得意 的是高效快捷的SELECT回選功能,這也是MYSQL優(yōu)先標(biāo)榜的高端性能之一。這一功能是在MYISAM引擎上提供的,其他3個(gè)都不行。同時(shí) MYISAM也是唯一一個(gè)提供表內(nèi)全文索引的引擎。但這是在實(shí)驗(yàn)室內(nèi)最理想條件下達(dá)到的。MYISAM引擎在進(jìn)行SELECT時(shí)要給INSERT, UPDATE,DELETE優(yōu)先權(quán)。同時(shí)必須全表加鎖。而在進(jìn)行INSERT,UPDATE,DELETE時(shí),任何其他用戶不能對(duì)該表內(nèi)任何一行進(jìn)行讀 寫。就是說在這一刻只能有一個(gè)用戶對(duì)該表進(jìn)行操作,從而得到高效快捷的SELECT回選功能。試問,對(duì)一個(gè)多用戶上網(wǎng)操作的數(shù)據(jù)庫(kù)來說,這不是實(shí)驗(yàn)室內(nèi)最 理想條件又是什么。在現(xiàn)實(shí)中可要了命了。 這可能也是為什么大戶的MySQL都是作為存儲(chǔ)性的數(shù)據(jù)庫(kù),而不是作為事務(wù)處理和管理性的數(shù)據(jù)庫(kù),MySQL都是應(yīng)用在非管理性業(yè)務(wù)中。
今 天的數(shù)據(jù)庫(kù)大都要求又讀又寫。(至少我們公司要求這樣)。如果MYSQL工作在一多用戶的頻繁,交叉,眾多的INSERT,UPDATE,DELETE數(shù)據(jù)庫(kù)環(huán)境下,發(fā)出SELECT的用戶可能會(huì)感覺到“泥牛入海無消息”。因?yàn)?span lang="EN-US">MYISAM引擎在進(jìn)行SELECT前要給何改變表的SQL指令,特別是 UPDATE指令,以絕對(duì)優(yōu)先權(quán)。如果一個(gè)UPDATE指令要刷新很多行或半個(gè)表,那發(fā)出SELECT的用戶就在那慢慢熬吧。
DBD(Berkeley)數(shù)據(jù)庫(kù)引擎好了點(diǎn),是全葉加鎖。UPDATE一行只鎖一葉。但卻沒有了MYSQL最為得意的高效快捷的SELECT回選功能。而且如上所述,不能把含有該表的數(shù)據(jù)庫(kù)挪到另外目錄中去操作。
MYSQL數(shù)據(jù)庫(kù)引擎中功能最好的就是以前一直使用的,現(xiàn)被Oracle收購(gòu)了的InnoDB。但同樣沒有了MYSQL最為得意的高效快捷的SELECT回選功能。
FIREBIRD 數(shù)據(jù)庫(kù)只有兩個(gè)引擎, 一個(gè)是FIREBIRD CLASSIC, 一個(gè)是FIREBIRDSS (FIREBIRD SUPPERSERVER)。兩種引擎所發(fā)出的指令,進(jìn)行的操作,所得結(jié)果,創(chuàng)建的數(shù)據(jù)庫(kù),表等完全一模一樣,數(shù)據(jù)庫(kù)可(在LINUX權(quán)限內(nèi))任意移動(dòng), 操作。兩引擎創(chuàng)建的數(shù)據(jù)庫(kù),表等可互換操作。不同平臺(tái)上產(chǎn)生的數(shù)據(jù)庫(kù)可互換操作。
FIREBIRD兩個(gè)引擎不同的是:FIREBIRD CLASSIC對(duì)每一聯(lián)結(jié)開通一個(gè)進(jìn)程(Process), 而FIREBIRDSS則開通一個(gè)線程(thread)。 由于FIREBIRD CLASSIC支持多核主機(jī)(multiple CPU's)并可自動(dòng)為每一個(gè)聯(lián)結(jié)開通一個(gè)進(jìn)程, 因此特別適合網(wǎng)上不須互動(dòng)輸入,多個(gè)網(wǎng)點(diǎn)連續(xù)不斷的無人值守自動(dòng)信息采集和數(shù)據(jù)輸入。另外,FIREBIRD CLASSIC還適用于要求高效但系統(tǒng)資源有限的地方。如嵌入系統(tǒng)。事實(shí)上其早就被廣泛地應(yīng)用在嵌入系統(tǒng)中,特別是可移動(dòng)嵌入系統(tǒng)中。(聽說已形成了幾個(gè)常規(guī)系列,因此有意保持低調(diào) ?)除上述原因,用途外,應(yīng)全部使用FIREBIRDSS。(FIREBIRDSS的多核支持工作正在進(jìn)行中)。
FIREBIRD 采用多代體版本模式結(jié)構(gòu)(Multi-Generational-Architecture-Versioning-Model), 這是目前最先進(jìn)的多用戶并發(fā)解決方案中的首選方案。其鼻祖正是Jim Starkey. 就連軟件之林的呼嘯者在抵制數(shù)年后,最終也羞羞嗒嗒地說了一句,嘿,俺也用上了MGA呢。由于FIREBIRD采用多代體版本模式結(jié)構(gòu),上述MYSQL的 各種問題在FIREBIRD中都不會(huì)發(fā)生,也不明白為什么會(huì)發(fā)生,更不明白為什么還要用。FIREBIRD一個(gè)引擎可同時(shí)運(yùn)行,控管多個(gè)數(shù)據(jù)庫(kù),跨越多個(gè)數(shù)據(jù)庫(kù)進(jìn)行事物操作,其特別適用于需要海量數(shù)據(jù)的決策系統(tǒng)。(這是 MYSQL望塵莫及的)例如有些大戶被迫采用兩臺(tái)MYSQL數(shù)據(jù)庫(kù)主機(jī),一臺(tái)MYSQL進(jìn)行數(shù)據(jù)和數(shù)據(jù)庫(kù)控管, 另一臺(tái)MYSQL只管查詢。(還記得上述SELECT問題吧)。這在FIREBIRD中都不會(huì)發(fā)生,也不允許會(huì)發(fā)生。(我們公司不允許如此配置,單是兩臺(tái)數(shù)據(jù)庫(kù)主機(jī)的數(shù)據(jù)同步,維護(hù)就麻煩大了,更別說災(zāi)難恢復(fù))。
現(xiàn)在看看MYSQL數(shù)據(jù)庫(kù)引擎中功能最好的InnoDB引擎。首先看看最基本的。
InnoDB 不支持DOMAIN數(shù)據(jù)類型。整個(gè)MYSQL中也沒有DOAMIN這一說。什么是DOMAIN(域)呢?比如說一個(gè)表中有3個(gè)欄目(字段)是相同的數(shù)據(jù)類 型,在MYSQL中就要重復(fù)定義3次。如果一個(gè)數(shù)據(jù)庫(kù)中有300個(gè)欄目(字段)是相同的數(shù)據(jù)類型,在MYSQL中就要重復(fù)定義300次。如果要更改的話, 就要一個(gè)一個(gè)地再重新重復(fù)定義300次。忘記幾個(gè)欄目(字段)是常有的。
在FIREBIRD中只要定義1次。這就是DOMAIN (域)。然后就可以在整個(gè)數(shù)據(jù)庫(kù)中無數(shù)次使用。遇到相同數(shù)據(jù)類型的欄目(字段),只要把這DOAMIN的名字填上就可以。如果要更改的話只要改一個(gè) DOAMIN的定義就可以了,300個(gè)欄目(字段)就全改過來。你看哪個(gè)更容易維護(hù), 更不容易出錯(cuò)。
InnoDB不支持ROLE(角色)。這樣授權(quán)時(shí)要一個(gè)一個(gè)用戶(user)授權(quán)。修改時(shí)要一個(gè)一個(gè)用戶(user)改。
FIREBIRD支持ROLE??梢园阉袡?quán)限相同的用戶名集中在一個(gè)ROLE名下,一次授權(quán),全體獲益。修改時(shí),收權(quán)時(shí)也一樣。一個(gè)用戶可還以同時(shí)歸集在幾個(gè)ROLE名下,享有不同的權(quán)限。(如在數(shù)個(gè)表中)。你看哪個(gè)更容易維護(hù),更不容易出錯(cuò)。
MYSQL(InnoDB)不支持ARRAY( 數(shù)組)數(shù)據(jù)類型。這一在小學(xué),中學(xué)算數(shù)中都有的數(shù)據(jù)類型MYSQL竟然不支持。就是說不能在MYSQL表中創(chuàng)建含有ARRAY( 數(shù)組)數(shù)據(jù)類型的欄目(字段)。
FIREBIRD不僅支持ARRAY(數(shù)組)數(shù)據(jù)類型, 而且支持多維ARRAY(數(shù)組)數(shù)據(jù)類型。就是說可以在FIREBIRD表中創(chuàng)建含有ARRAY(數(shù)組)數(shù)據(jù)類型的欄目(字段)。
MYSQL(InnoDB)中有些數(shù)據(jù)類型既不是SQL──99標(biāo)準(zhǔn),也不是SQL200X標(biāo)準(zhǔn),甚至不是ANSI標(biāo)準(zhǔn)。
FIREBIRD中的所有數(shù)據(jù)類型則是緊跟著上述標(biāo)準(zhǔn)走。你看哪個(gè)更容易維護(hù), 更不容易出錯(cuò)。
MYSQL(InnoDB)不支持CHECK約束(復(fù)查約束)。必須把復(fù)查條件寫死在用戶程式中。
FIREBIRD支持CHECK約束(復(fù)查約束),可以把復(fù)查條件寫在數(shù)據(jù)庫(kù)中,加在DOAMIN里,加在字段中, 哪用哪調(diào)。你看哪個(gè)更容易維護(hù), 更不容易出錯(cuò)。
再來看看MYSQL(InnoDB)中高端點(diǎn)的功能。(實(shí)在是不敢恭維,別太難為了)
在 所有MYSQL引擎中只有InnoDB可以進(jìn)行真正的在線備份。(online backup). 但MYSQL本身并沒有這一功能,也不支持這一功能。想要對(duì)InnoDB數(shù)據(jù)庫(kù)進(jìn)行在線備份,必須購(gòu)買Innobase 公司的 InnoDB Hot Backup, 一年許可證520美元, 或可延續(xù)許可證1320美元。MYSQL自帶的 mysqlhotcopy 工作時(shí)必須鎖表,而且只能對(duì) MyISAM 和 ARCHIVE 表備份。(MyISAM and ARCHIVE tables)。 mysqldump 工作時(shí)必須鎖讀,否則如果數(shù)據(jù)庫(kù)表在備份過程中被修改,進(jìn)入備份的表文件有不一致的狀態(tài),那么以后的恢復(fù)將毫無意義。因此都不是真正的在線備份。
FIREBIRD 可以進(jìn)行真正的在線備份。(online backup).就是說在備份時(shí)所有聯(lián)在數(shù)據(jù)庫(kù)上的用戶都可以如常操作,毫無感覺,毫無影響。只不過從開始備份的那一瞬間起,其后對(duì)原數(shù)據(jù)庫(kù)所做的任何操作,變化等都不會(huì)寫入到備份數(shù)據(jù)庫(kù)中。但這些操作,變化都會(huì)如常寫入到原數(shù)據(jù)庫(kù)中。FIREBIRD還有 nbackup, 既是只對(duì)變化了的部分(mutation)進(jìn)行備份,又稱為“增量備份”。其增量的時(shí)間差可以精確到分以下 (minute). FIREBIRD備份是對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份,而不是象 mysqldump 那樣只對(duì)create 和 insert 有效。 FIREBIRD備份時(shí)可將一個(gè)原數(shù)據(jù)庫(kù)分拆成多個(gè)較小的備份數(shù)據(jù)庫(kù)文件,每個(gè)備份數(shù)據(jù)庫(kù)文件的大小可由用戶指定,每個(gè)備份數(shù)據(jù)庫(kù)可(在LINUX權(quán)限 內(nèi))任意地點(diǎn)存放,包括可移動(dòng)存儲(chǔ)設(shè)備。恢復(fù)時(shí)既可以恢復(fù)成一個(gè)數(shù)據(jù)庫(kù),也可恢復(fù)成多個(gè)數(shù)據(jù)庫(kù)。(當(dāng)然不是同一個(gè)數(shù)據(jù)庫(kù)的多個(gè)復(fù)制品,那有什么意思)例如原數(shù)據(jù)庫(kù)是40M,備份成3個(gè)較小的備份數(shù)據(jù)庫(kù)文件, f1.fbk=10M, f2.fbk=12M, f3.fbk=18M, 分別存放在LINUX權(quán)限所及之任意地點(diǎn)?;謴?fù)時(shí)既可以恢復(fù)成一個(gè)與原數(shù)據(jù)庫(kù)一樣的數(shù)據(jù)庫(kù),40M,也可把一個(gè)數(shù)據(jù)庫(kù)拆成3段,指定不同大小, 指定不同地點(diǎn)。然后如常操作,毫無感覺,毫無影響。這樣才有更強(qiáng)的抗災(zāi)能力,更強(qiáng)的安全能力。(想想為什么)。
MYSQL沒有原核事務(wù)運(yùn)作機(jī)制 (atomic transaction)。就是說MYSQL不能對(duì)數(shù)條語句進(jìn)行事物控制,如果其中一條失敗后,也不能對(duì)整個(gè)事務(wù)進(jìn)行回退!
有 無原核事務(wù)運(yùn)作機(jī)制 (atomic transaction)是(我們公司)區(qū)別一個(gè)數(shù)據(jù)庫(kù)檔次的重要標(biāo)準(zhǔn)之一。如果僅僅作為存儲(chǔ)性的數(shù)據(jù)庫(kù),而不是作為事務(wù)處理和管理性的數(shù)據(jù)庫(kù),那到是可有可無。 如 xBase,nonBase 等都沒有原核事務(wù)運(yùn)作機(jī)制,作為存儲(chǔ)性的數(shù)據(jù)庫(kù)都沒問題。但若是應(yīng)用在事務(wù)處理和管理性業(yè)務(wù)中。那只能是“劉姥姥溜邊大觀園 --- 未入流“。
FIREBIRD有著完整,強(qiáng)悍且嚴(yán)格的原核事務(wù)運(yùn)作機(jī)制 (atomic transaction)??勺詣?dòng)兩階段提交和分布式兩階段提交/恢復(fù),因此可以同時(shí)運(yùn)行,控管多個(gè)數(shù)據(jù)庫(kù),跨越多個(gè)數(shù)據(jù)庫(kù)進(jìn)行事物操作,使數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能成其強(qiáng)項(xiàng)之一!
MYSQL沒有專門的災(zāi)難恢復(fù)機(jī)制, 所有所用所依賴的就是上述的備份功能再加上更新日志。在使用前還必須確保刪去更新日志中會(huì)導(dǎo)致數(shù)據(jù)丟失的語句。災(zāi)難恢復(fù)所需時(shí)間取決于備份恢復(fù)時(shí)間和事物日志加更新日志的大小。
FIREBIRD 有著完整的專門的災(zāi)難恢復(fù)機(jī)制。除上述的備份功能可作災(zāi)難恢復(fù)之外,FIREBIRD還有專門為災(zāi)難恢復(fù)而設(shè)的 ”影像文件“(shadow file). 故名思義,”影像文件“ 就是亦步亦趨,如影相隨。FIREBIRD在建立數(shù)據(jù)庫(kù)時(shí)可以同時(shí)建立(多份)影像文件(只要給個(gè)文件名就可以,當(dāng)然不會(huì)疏忽到把影像文件建在與數(shù)據(jù)庫(kù)同一個(gè)磁盤或主機(jī)中)。然后就不必管了。數(shù)據(jù)庫(kù)如常操作,影像文件后臺(tái)運(yùn)行。照葫蘆畫瓢,亦步亦趨,點(diǎn)滴不漏,把運(yùn)行中的數(shù)據(jù)庫(kù)完完整整地復(fù)制下來。數(shù)據(jù)庫(kù) 崩潰或硬件故障時(shí),一個(gè)指令,激活影像文件。于是影像文件升級(jí)作 ”老大“,取代原數(shù)據(jù)庫(kù)作為主數(shù)據(jù)庫(kù)正常運(yùn)行。這時(shí)可以再(自動(dòng))為這個(gè)”老大“作影像文件。。。數(shù)十秒內(nèi)即可完成災(zāi)難恢復(fù)。另外若僅僅因斷電或系統(tǒng)崩潰而導(dǎo)致數(shù)據(jù)庫(kù)災(zāi)難,FIREBIRD的自動(dòng)系統(tǒng)崩潰恢復(fù)機(jī)制可自動(dòng)進(jìn)入無人值守?cái)?shù)據(jù)庫(kù)恢復(fù)程序,用戶要作的就是保證恢復(fù)電源和系統(tǒng)運(yùn)行。危厄現(xiàn),安然定,神鳥應(yīng)無恙。
最后看看兩個(gè)數(shù)據(jù)庫(kù)的摹制(database replication)能力。
MYSQL僅支持單向非同步 數(shù)據(jù)庫(kù)摹制。(asynchronous on-way database replication) 必須把一個(gè)數(shù)據(jù)庫(kù)設(shè)定成主數(shù)據(jù)庫(kù)A,另一個(gè)為從屬數(shù)據(jù)庫(kù)B。數(shù)據(jù)只能從主數(shù)據(jù)庫(kù)A向從屬數(shù)據(jù)庫(kù)B摹制。如果還需從屬數(shù)據(jù)庫(kù)B向 主數(shù)據(jù)庫(kù)A摹制(如分部向總部傳遞)那必須再把從屬數(shù)據(jù)庫(kù)B設(shè)定為A, 主數(shù)據(jù)庫(kù)變成B。或再增添兩個(gè)數(shù)據(jù)庫(kù)主機(jī)專事摹制。若是多層多點(diǎn)多向摹制,不堪設(shè)想。(這也是我們公司不允許雙機(jī)配置的原因之一,我們公司肯定要進(jìn)行多層多點(diǎn)多向跨層摹制)。
FIREBIRD既支持多向非同步數(shù)據(jù)庫(kù)摹制。(Asynchronous N-way database replication),也支持多向同步數(shù)據(jù)庫(kù)摹制。(Synchronous N-way database replication),用戶可從任何一個(gè)FIREBIRD引擎向另外一個(gè)FIREBIRD引擎摹制,反之亦然。可供選擇的FIREBIRD摹制引擎也 非常之多。下面略舉一些:
IBReplicator - (首選, 請(qǐng)支持FIREBIRD社團(tuán)核心,吃的是草,擠出的是血)
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_ replicator
FiBRE - open source, cross-platform
http://fibre.sourceforge. net/
FBReplicator - open source
http://www.meta.com.au
ReplicadorBR - open source
http://sourceforge.net/projects/replicadorbr/
另外上面介紹的nbackup, 只對(duì)變化了的部分(mutation)進(jìn)行備份,又稱為“增量備份”。其增量的時(shí)間差可以精確到分以下 (minute).若把nbackup與網(wǎng)絡(luò)或?qū)S镁€結(jié)合起來,也不知會(huì)是什么結(jié)果啊。
LAFP(Linux Apache Firebird PHP)架構(gòu)已久經(jīng)沙場(chǎng),運(yùn)行穩(wěn)定。現(xiàn)在最新的 RHEL5, CentOS5, Ubuntu (
http://www.firebirdsql.org/manual/ubusetup.html) 上試運(yùn)行,并要在多墻多層多穴(Multi-Firewall-Host,Multi-Layer,Multi-Inc)結(jié)構(gòu)上試運(yùn)行。簡(jiǎn)稱3M結(jié)構(gòu) (MMM結(jié)構(gòu))或 MMMFS結(jié)構(gòu)。但是不是到此為止了呢。
據(jù)報(bào),日本產(chǎn)通省大臣 (Japanese communications minister Yoshihide Suga)星期五在巴西宣布,日本將研發(fā)新一代的網(wǎng)絡(luò)以取代現(xiàn)行的萬因網(wǎng) (internet),
預(yù)計(jì)在2020年投入使用。
MySQL執(zhí)行副總裁Zack Urlocker講:Oracle的主席曾經(jīng)說過一句話,說Oracle是播音747,而MySQL是豐田汽車。他完全同意這個(gè)觀點(diǎn)。
如 果這樣,我看FIREBIRD是 AIR-BUS。當(dāng)然,豐田車與AIR-BUS各有各的用途,各有各的長(zhǎng)處。對(duì)豐田車的駕駛員與AIR-BUS的駕駛員要求也不同,兩者創(chuàng)造的價(jià)值和所得也不同。我們公司設(shè)有專門的軟件部,請(qǐng)有很好的系統(tǒng)工程師和軟件工程師。有些可稱同行中的姣姣者。但你老對(duì)我說,所有可以創(chuàng)新的地方早已被人捷足先登,已 然無所可為,能夠跟上就不錯(cuò)了。也許因我是外行,至多也就是個(gè)半路出家。所以不管向哪個(gè)方向望去,總是看到一片又一片未曾開墾過的土地,散發(fā)著原野的芬芳,感受著鼙鼓陣陣馬嘯嘯。
======================================
b3版本將整合CS/SS版本到一個(gè)通用版本上,根據(jù)配置,可把引擎配置成CS or SS結(jié)構(gòu),使得引擎更簡(jiǎn)潔便攜。另外也對(duì)代碼做大量重寫,企圖去掉stl部分,使得代碼有更好的跨編譯器跨平臺(tái)特點(diǎn)。
fb3以后版本將注重更多的企業(yè)級(jí)高端功能開發(fā):分布式、外部數(shù)據(jù)引用(其他fb/odbc/jdbc等)等。
非常值得期待的免費(fèi)餐~~
出處: http://www.firebird.net.cn/forum_view.asp?forum_id=3&view_id=1339&page=-1
老板要我開發(fā)一個(gè)LINUX平臺(tái)上的數(shù)據(jù)庫(kù)項(xiàng)目,要求一定要用開源免費(fèi)數(shù)據(jù)庫(kù)。我知道這個(gè)數(shù)據(jù)庫(kù)必須能夠上網(wǎng)操作,同時(shí)作為公司的核心骨干數(shù)據(jù)庫(kù),除了必須是穩(wěn)定的存儲(chǔ)數(shù)據(jù)庫(kù)外還必須有很強(qiáng)的數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能。
我 想了想說,就用MYSQL吧。老板問為什么。 我把所知的好處倒背如流地?cái)?shù)說一遍,并強(qiáng)調(diào)據(jù)MySQL執(zhí)行副總裁Zack Urlocker講,MySQ在中國(guó)的下載量已經(jīng)超過了美國(guó),中國(guó)市場(chǎng)現(xiàn)在是第一大下載量。去年截至九月份的數(shù)字是380萬的下載量。。。MYSQL一定 是最好的。
老板面有遲疑,說他太不明白我的意思。他想要知道的是什么數(shù)據(jù)庫(kù)最適用我們公司,我卻告訴他MySQ在中國(guó)的下載量世界第一,因此MYSQL一定是最好的。他說中國(guó)的自行車產(chǎn)量用量都是世界第一,但不能因此就說中國(guó)的自行車質(zhì)量性能也一定是世界第一,更重要的是不能因此就說中國(guó)的自行車一定適用我們公司,看不出兩者間的必然聯(lián)系。
我說下載的人多,用的人也就多,前有古人,后有來者,道路平坦,不需摸索。MYSQL書籍比比皆是,各種案例垂手可得,路熟駕輕,好寫好用。隨大流,準(zhǔn)沒錯(cuò)。
老板一笑,說恐怕這才是真正原因之一。接著說, 聽說中國(guó)有個(gè)叫魯迅的說過,其實(shí)世上本是沒有路的,走的人多了,也便漸漸地成了路。就是MYSQL最初也一定有拓路者,摸索者,開例者,著書者,現(xiàn)在才能有“前有古人,后有來者,道路平坦,不需摸索”。
我略吃一驚,沒想到這個(gè)喝過點(diǎn)洋湯的假洋鬼子還知道中國(guó)有個(gè)叫魯迅的(老實(shí)說,我都不太知道,魯迅的書沒讀過幾本)。接著老板又交給我一份表格,要我回答駁倒所例問題,并順便問一下,這380萬的下載量中有多少是經(jīng)過認(rèn)真比較堪察之后決定用MYSQL的。
我接過一看,又是一驚,其中許多問題還是第一次看到。因此決定拿到這里。高手云集,冠蓋繁星(各位中老總,少總不少吧),請(qǐng)直陳理由,無論如何要把假洋鬼子頂?shù)埂?span lang="EN-US">
老板推薦的是 FIREBIRD FOR LINUX 。
所有比較和數(shù)據(jù)均以已在運(yùn)行中的正式發(fā)行版為依據(jù)。
多處引用 “專訪MySQL副總:MySQL的空間在哪里?” 日期:2007-05-29 作者:IT168 來自:linux.chinaunix.net
據(jù)MySQL執(zhí)行副總裁Zack Urlocker講:
在安裝成本上,MySQL是根據(jù)服務(wù)器來收費(fèi)的,即一個(gè)服務(wù)器收取多少錢。MySQL舊版升級(jí)必須付費(fèi). 像政府、企業(yè)、電信用戶,他們可以向萬里開源公司來買商業(yè)許可證。
據(jù) 悉,MySQL 3.23和4.0版本的用戶如果要繼續(xù)獲得安全更新服務(wù),則必須購(gòu)買“MySQL網(wǎng)絡(luò)支持”服務(wù)。該服務(wù)的啟動(dòng)時(shí)間為:3.23版從八月一日開始,4.0 版則從十月一日開始。 網(wǎng)絡(luò)支持的收費(fèi)為:美國(guó)服務(wù)期每年595美元;歐洲服務(wù)期每年495歐元。(也許對(duì)中國(guó)情況很了解,干脆不收費(fèi)了?)。
近 日,MySQL低調(diào)宣布它將不再把MySQL企業(yè)版服務(wù)器作為一個(gè)tar包發(fā)布,而這距離這個(gè)公司宣布將MySQL分為免費(fèi)版和付費(fèi)版的時(shí)間還不到一年。盡管它的企業(yè)版服務(wù)器代碼依然在通用公共許可下推出,MySQL正在使不是它的客戶的人們更加難于訪問這個(gè)源代碼。 MySQL公司負(fù)責(zé)社區(qū)關(guān)系的副總裁Kaj Arno寫到,企業(yè)版的tar包“將從ftp.mysql.com中刪除,而增加到enterprise.mysql.com中,將只對(duì)我們的付費(fèi)申請(qǐng)者 提供。”令許多用戶感到擔(dān)心的事情之一是,以后的社區(qū)版是否會(huì)一個(gè)功能低劣的版本 (新聞來源:IT168 發(fā)布日期:2007-08-15)
FIREBIRD 徹底免費(fèi). 源代碼徹底公開。
http://sourceforge.net/projects/firebird ;
http://www.ibphoenix.com%c2%a0/;
http://www.firebirdsql.org
MySQL也可以提供一些企業(yè)級(jí)的技術(shù)服務(wù),我們經(jīng)常提到的它的三個(gè)服務(wù)就是它的性能、可靠性、易用性。
易 用性。我們這里依賴幾個(gè)數(shù)字,MySQL的安裝包非常的小,大概是15兆到20兆。作為一個(gè)數(shù)據(jù)庫(kù),這么小的安裝程序這是其他軟件做不到的。另外, MySQL的安裝非常簡(jiǎn)單,只需要15分鐘。有的客戶不相信,我們的工程師就現(xiàn)場(chǎng)教給他,15分鐘就可以安裝完,這是你不可想象的。
FIREBIRD的安裝包只有 6M, 安裝簡(jiǎn)單,只需要 3-5 分鐘。(一個(gè)RPM命令)
在安裝之后, MySQL必須決定應(yīng)用于何種類型
第一種是開發(fā)服務(wù)器,將只用盡量少的內(nèi)存,
第二種是普通WEB服務(wù)器,將使用中等數(shù)量?jī)?nèi)存,
最后一種是這臺(tái)服務(wù)器上面只跑mysql數(shù)據(jù)庫(kù),將占用全部的內(nèi)存.
象我們公司這樣, 這個(gè)數(shù)據(jù)庫(kù)必須能夠上網(wǎng)操作,必須合用服務(wù)器(這臺(tái)服務(wù)器上面除mysql數(shù)據(jù)庫(kù)外, 還有其他程式, mysql不能單獨(dú)占用服務(wù)器),怎么辦?
FIREBIRD 安裝之后只有一種默認(rèn)類型, 占用 32-64 MB 內(nèi)存。 完全不需單獨(dú)占用服務(wù)器。
然后MySQL必須決定選擇數(shù)據(jù)庫(kù)用途,
第 一種是多功能用途,將把數(shù)據(jù)庫(kù)優(yōu)化成很好的innodb存儲(chǔ)類型和高效率的myisam存儲(chǔ)類型,(最多選用).在MySQL的用戶中,比如說在新浪或者 雅虎,MySQL是作為存儲(chǔ)性的數(shù)據(jù)庫(kù),而不是作為事務(wù)處理和管理性的數(shù)據(jù)庫(kù), MySQL都是應(yīng)用在非管理性業(yè)務(wù)中。
第二種是只用于事務(wù)處理類型,最好的優(yōu)化innodb,但同時(shí)也支持myisam。
最后一種是非事務(wù)處理類型,適合于簡(jiǎn)單的應(yīng)用,只有不支持事務(wù)的myisam類型是被支持的。
象我們公司這樣, 這個(gè)數(shù)據(jù)庫(kù)必須能夠上網(wǎng)操作,同時(shí)作為公司的核心骨干數(shù)據(jù)庫(kù),除了必須是穩(wěn)定的存儲(chǔ)數(shù)據(jù)庫(kù)外還必須有很強(qiáng)的數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能。怎么辦? 選哪種好?
FIREBIRD高效率的存儲(chǔ)功能是其默認(rèn)的基本功能之一, 而數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能則是其強(qiáng)項(xiàng)之一。
因?yàn)?span lang="EN-US">MySQL的存儲(chǔ)引擎是可以更換的這個(gè)優(yōu)勢(shì),所以MySQL有很多的存儲(chǔ)引擎,當(dāng)然各種存儲(chǔ)引擎有各自的特點(diǎn),客戶因?yàn)橛昧?span lang="EN-US">MySQL有這種靈活地選擇存儲(chǔ)引擎的優(yōu)勢(shì),所以可以選擇不同的存儲(chǔ)引擎來適合自己的應(yīng)用。
優(yōu) 勢(shì)呼, 劣勢(shì)呼!麻煩大了。不錯(cuò),MYSQL是有4種引擎,但每種引擎都有各自不同(不通)的數(shù)據(jù)庫(kù)表結(jié)構(gòu),不同的磁盤文件結(jié)構(gòu),不同的數(shù)據(jù)和數(shù)據(jù)庫(kù)控管要求。嚴(yán)格地講,按RDBMS標(biāo)準(zhǔn)MYSQL不是一個(gè),而是4個(gè)數(shù)據(jù)庫(kù)。比如DBD(Berkeley)數(shù)據(jù)庫(kù)引擎會(huì)在表頭內(nèi)寫下該表的完整路徑,因此不能把含有該表的數(shù)據(jù)庫(kù)挪到另外目錄中去操作。這樣在硬件升級(jí)或系統(tǒng)故障而必須把含有該表的數(shù)據(jù)庫(kù)挪到另外目錄中去時(shí),只好先甩出數(shù)據(jù),在新地點(diǎn)新建數(shù)據(jù)庫(kù),再塞回 數(shù)據(jù)。稍有閃失,數(shù)據(jù)出錯(cuò)。如果是一大型數(shù)據(jù)庫(kù),不堪設(shè)想。實(shí)際上是,多種引擎, 一個(gè)工作,一旦選定,極難轉(zhuǎn)換。
MYSQL最為得意 的是高效快捷的SELECT回選功能,這也是MYSQL優(yōu)先標(biāo)榜的高端性能之一。這一功能是在MYISAM引擎上提供的,其他3個(gè)都不行。同時(shí) MYISAM也是唯一一個(gè)提供表內(nèi)全文索引的引擎。但這是在實(shí)驗(yàn)室內(nèi)最理想條件下達(dá)到的。MYISAM引擎在進(jìn)行SELECT時(shí)要給INSERT, UPDATE,DELETE優(yōu)先權(quán)。同時(shí)必須全表加鎖。而在進(jìn)行INSERT,UPDATE,DELETE時(shí),任何其他用戶不能對(duì)該表內(nèi)任何一行進(jìn)行讀 寫。就是說在這一刻只能有一個(gè)用戶對(duì)該表進(jìn)行操作,從而得到高效快捷的SELECT回選功能。試問,對(duì)一個(gè)多用戶上網(wǎng)操作的數(shù)據(jù)庫(kù)來說,這不是實(shí)驗(yàn)室內(nèi)最 理想條件又是什么。在現(xiàn)實(shí)中可要了命了。 這可能也是為什么大戶的MySQL都是作為存儲(chǔ)性的數(shù)據(jù)庫(kù),而不是作為事務(wù)處理和管理性的數(shù)據(jù)庫(kù),MySQL都是應(yīng)用在非管理性業(yè)務(wù)中。
今 天的數(shù)據(jù)庫(kù)大都要求又讀又寫。(至少我們公司要求這樣)。如果MYSQL工作在一多用戶的頻繁,交叉,眾多的INSERT,UPDATE,DELETE數(shù)據(jù)庫(kù)環(huán)境下,發(fā)出SELECT的用戶可能會(huì)感覺到“泥牛入海無消息”。因?yàn)?span lang="EN-US">MYISAM引擎在進(jìn)行SELECT前要給何改變表的SQL指令,特別是 UPDATE指令,以絕對(duì)優(yōu)先權(quán)。如果一個(gè)UPDATE指令要刷新很多行或半個(gè)表,那發(fā)出SELECT的用戶就在那慢慢熬吧。
DBD(Berkeley)數(shù)據(jù)庫(kù)引擎好了點(diǎn),是全葉加鎖。UPDATE一行只鎖一葉。但卻沒有了MYSQL最為得意的高效快捷的SELECT回選功能。而且如上所述,不能把含有該表的數(shù)據(jù)庫(kù)挪到另外目錄中去操作。
MYSQL數(shù)據(jù)庫(kù)引擎中功能最好的就是以前一直使用的,現(xiàn)被Oracle收購(gòu)了的InnoDB。但同樣沒有了MYSQL最為得意的高效快捷的SELECT回選功能。
FIREBIRD 數(shù)據(jù)庫(kù)只有兩個(gè)引擎, 一個(gè)是FIREBIRD CLASSIC, 一個(gè)是FIREBIRDSS (FIREBIRD SUPPERSERVER)。兩種引擎所發(fā)出的指令,進(jìn)行的操作,所得結(jié)果,創(chuàng)建的數(shù)據(jù)庫(kù),表等完全一模一樣,數(shù)據(jù)庫(kù)可(在LINUX權(quán)限內(nèi))任意移動(dòng), 操作。兩引擎創(chuàng)建的數(shù)據(jù)庫(kù),表等可互換操作。不同平臺(tái)上產(chǎn)生的數(shù)據(jù)庫(kù)可互換操作。
FIREBIRD兩個(gè)引擎不同的是:FIREBIRD CLASSIC對(duì)每一聯(lián)結(jié)開通一個(gè)進(jìn)程(Process), 而FIREBIRDSS則開通一個(gè)線程(thread)。 由于FIREBIRD CLASSIC支持多核主機(jī)(multiple CPU's)并可自動(dòng)為每一個(gè)聯(lián)結(jié)開通一個(gè)進(jìn)程, 因此特別適合網(wǎng)上不須互動(dòng)輸入,多個(gè)網(wǎng)點(diǎn)連續(xù)不斷的無人值守自動(dòng)信息采集和數(shù)據(jù)輸入。另外,FIREBIRD CLASSIC還適用于要求高效但系統(tǒng)資源有限的地方。如嵌入系統(tǒng)。事實(shí)上其早就被廣泛地應(yīng)用在嵌入系統(tǒng)中,特別是可移動(dòng)嵌入系統(tǒng)中。(聽說已形成了幾個(gè)常規(guī)系列,因此有意保持低調(diào) ?)除上述原因,用途外,應(yīng)全部使用FIREBIRDSS。(FIREBIRDSS的多核支持工作正在進(jìn)行中)。
FIREBIRD 采用多代體版本模式結(jié)構(gòu)(Multi-Generational-Architecture-Versioning-Model), 這是目前最先進(jìn)的多用戶并發(fā)解決方案中的首選方案。其鼻祖正是Jim Starkey. 就連軟件之林的呼嘯者在抵制數(shù)年后,最終也羞羞嗒嗒地說了一句,嘿,俺也用上了MGA呢。由于FIREBIRD采用多代體版本模式結(jié)構(gòu),上述MYSQL的 各種問題在FIREBIRD中都不會(huì)發(fā)生,也不明白為什么會(huì)發(fā)生,更不明白為什么還要用。FIREBIRD一個(gè)引擎可同時(shí)運(yùn)行,控管多個(gè)數(shù)據(jù)庫(kù),跨越多個(gè)數(shù)據(jù)庫(kù)進(jìn)行事物操作,其特別適用于需要海量數(shù)據(jù)的決策系統(tǒng)。(這是 MYSQL望塵莫及的)例如有些大戶被迫采用兩臺(tái)MYSQL數(shù)據(jù)庫(kù)主機(jī),一臺(tái)MYSQL進(jìn)行數(shù)據(jù)和數(shù)據(jù)庫(kù)控管, 另一臺(tái)MYSQL只管查詢。(還記得上述SELECT問題吧)。這在FIREBIRD中都不會(huì)發(fā)生,也不允許會(huì)發(fā)生。(我們公司不允許如此配置,單是兩臺(tái)數(shù)據(jù)庫(kù)主機(jī)的數(shù)據(jù)同步,維護(hù)就麻煩大了,更別說災(zāi)難恢復(fù))。
現(xiàn)在看看MYSQL數(shù)據(jù)庫(kù)引擎中功能最好的InnoDB引擎。首先看看最基本的。
InnoDB 不支持DOMAIN數(shù)據(jù)類型。整個(gè)MYSQL中也沒有DOAMIN這一說。什么是DOMAIN(域)呢?比如說一個(gè)表中有3個(gè)欄目(字段)是相同的數(shù)據(jù)類 型,在MYSQL中就要重復(fù)定義3次。如果一個(gè)數(shù)據(jù)庫(kù)中有300個(gè)欄目(字段)是相同的數(shù)據(jù)類型,在MYSQL中就要重復(fù)定義300次。如果要更改的話, 就要一個(gè)一個(gè)地再重新重復(fù)定義300次。忘記幾個(gè)欄目(字段)是常有的。
在FIREBIRD中只要定義1次。這就是DOMAIN (域)。然后就可以在整個(gè)數(shù)據(jù)庫(kù)中無數(shù)次使用。遇到相同數(shù)據(jù)類型的欄目(字段),只要把這DOAMIN的名字填上就可以。如果要更改的話只要改一個(gè) DOAMIN的定義就可以了,300個(gè)欄目(字段)就全改過來。你看哪個(gè)更容易維護(hù), 更不容易出錯(cuò)。
InnoDB不支持ROLE(角色)。這樣授權(quán)時(shí)要一個(gè)一個(gè)用戶(user)授權(quán)。修改時(shí)要一個(gè)一個(gè)用戶(user)改。
FIREBIRD支持ROLE??梢园阉袡?quán)限相同的用戶名集中在一個(gè)ROLE名下,一次授權(quán),全體獲益。修改時(shí),收權(quán)時(shí)也一樣。一個(gè)用戶可還以同時(shí)歸集在幾個(gè)ROLE名下,享有不同的權(quán)限。(如在數(shù)個(gè)表中)。你看哪個(gè)更容易維護(hù),更不容易出錯(cuò)。
MYSQL(InnoDB)不支持ARRAY( 數(shù)組)數(shù)據(jù)類型。這一在小學(xué),中學(xué)算數(shù)中都有的數(shù)據(jù)類型MYSQL竟然不支持。就是說不能在MYSQL表中創(chuàng)建含有ARRAY( 數(shù)組)數(shù)據(jù)類型的欄目(字段)。
FIREBIRD不僅支持ARRAY(數(shù)組)數(shù)據(jù)類型, 而且支持多維ARRAY(數(shù)組)數(shù)據(jù)類型。就是說可以在FIREBIRD表中創(chuàng)建含有ARRAY(數(shù)組)數(shù)據(jù)類型的欄目(字段)。
MYSQL(InnoDB)中有些數(shù)據(jù)類型既不是SQL──99標(biāo)準(zhǔn),也不是SQL200X標(biāo)準(zhǔn),甚至不是ANSI標(biāo)準(zhǔn)。
FIREBIRD中的所有數(shù)據(jù)類型則是緊跟著上述標(biāo)準(zhǔn)走。你看哪個(gè)更容易維護(hù), 更不容易出錯(cuò)。
MYSQL(InnoDB)不支持CHECK約束(復(fù)查約束)。必須把復(fù)查條件寫死在用戶程式中。
FIREBIRD支持CHECK約束(復(fù)查約束),可以把復(fù)查條件寫在數(shù)據(jù)庫(kù)中,加在DOAMIN里,加在字段中, 哪用哪調(diào)。你看哪個(gè)更容易維護(hù), 更不容易出錯(cuò)。
再來看看MYSQL(InnoDB)中高端點(diǎn)的功能。(實(shí)在是不敢恭維,別太難為了)
在 所有MYSQL引擎中只有InnoDB可以進(jìn)行真正的在線備份。(online backup). 但MYSQL本身并沒有這一功能,也不支持這一功能。想要對(duì)InnoDB數(shù)據(jù)庫(kù)進(jìn)行在線備份,必須購(gòu)買Innobase 公司的 InnoDB Hot Backup, 一年許可證520美元, 或可延續(xù)許可證1320美元。MYSQL自帶的 mysqlhotcopy 工作時(shí)必須鎖表,而且只能對(duì) MyISAM 和 ARCHIVE 表備份。(MyISAM and ARCHIVE tables)。 mysqldump 工作時(shí)必須鎖讀,否則如果數(shù)據(jù)庫(kù)表在備份過程中被修改,進(jìn)入備份的表文件有不一致的狀態(tài),那么以后的恢復(fù)將毫無意義。因此都不是真正的在線備份。
FIREBIRD 可以進(jìn)行真正的在線備份。(online backup).就是說在備份時(shí)所有聯(lián)在數(shù)據(jù)庫(kù)上的用戶都可以如常操作,毫無感覺,毫無影響。只不過從開始備份的那一瞬間起,其后對(duì)原數(shù)據(jù)庫(kù)所做的任何操作,變化等都不會(huì)寫入到備份數(shù)據(jù)庫(kù)中。但這些操作,變化都會(huì)如常寫入到原數(shù)據(jù)庫(kù)中。FIREBIRD還有 nbackup, 既是只對(duì)變化了的部分(mutation)進(jìn)行備份,又稱為“增量備份”。其增量的時(shí)間差可以精確到分以下 (minute). FIREBIRD備份是對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份,而不是象 mysqldump 那樣只對(duì)create 和 insert 有效。 FIREBIRD備份時(shí)可將一個(gè)原數(shù)據(jù)庫(kù)分拆成多個(gè)較小的備份數(shù)據(jù)庫(kù)文件,每個(gè)備份數(shù)據(jù)庫(kù)文件的大小可由用戶指定,每個(gè)備份數(shù)據(jù)庫(kù)可(在LINUX權(quán)限 內(nèi))任意地點(diǎn)存放,包括可移動(dòng)存儲(chǔ)設(shè)備?;謴?fù)時(shí)既可以恢復(fù)成一個(gè)數(shù)據(jù)庫(kù),也可恢復(fù)成多個(gè)數(shù)據(jù)庫(kù)。(當(dāng)然不是同一個(gè)數(shù)據(jù)庫(kù)的多個(gè)復(fù)制品,那有什么意思)例如原數(shù)據(jù)庫(kù)是40M,備份成3個(gè)較小的備份數(shù)據(jù)庫(kù)文件, f1.fbk=10M, f2.fbk=12M, f3.fbk=18M, 分別存放在LINUX權(quán)限所及之任意地點(diǎn)?;謴?fù)時(shí)既可以恢復(fù)成一個(gè)與原數(shù)據(jù)庫(kù)一樣的數(shù)據(jù)庫(kù),40M,也可把一個(gè)數(shù)據(jù)庫(kù)拆成3段,指定不同大小, 指定不同地點(diǎn)。然后如常操作,毫無感覺,毫無影響。這樣才有更強(qiáng)的抗災(zāi)能力,更強(qiáng)的安全能力。(想想為什么)。
MYSQL沒有原核事務(wù)運(yùn)作機(jī)制 (atomic transaction)。就是說MYSQL不能對(duì)數(shù)條語句進(jìn)行事物控制,如果其中一條失敗后,也不能對(duì)整個(gè)事務(wù)進(jìn)行回退!
有 無原核事務(wù)運(yùn)作機(jī)制 (atomic transaction)是(我們公司)區(qū)別一個(gè)數(shù)據(jù)庫(kù)檔次的重要標(biāo)準(zhǔn)之一。如果僅僅作為存儲(chǔ)性的數(shù)據(jù)庫(kù),而不是作為事務(wù)處理和管理性的數(shù)據(jù)庫(kù),那到是可有可無。 如 xBase,nonBase 等都沒有原核事務(wù)運(yùn)作機(jī)制,作為存儲(chǔ)性的數(shù)據(jù)庫(kù)都沒問題。但若是應(yīng)用在事務(wù)處理和管理性業(yè)務(wù)中。那只能是“劉姥姥溜邊大觀園 --- 未入流“。
FIREBIRD有著完整,強(qiáng)悍且嚴(yán)格的原核事務(wù)運(yùn)作機(jī)制 (atomic transaction)??勺詣?dòng)兩階段提交和分布式兩階段提交/恢復(fù),因此可以同時(shí)運(yùn)行,控管多個(gè)數(shù)據(jù)庫(kù),跨越多個(gè)數(shù)據(jù)庫(kù)進(jìn)行事物操作,使數(shù)據(jù)和數(shù)據(jù)庫(kù)控管功能成其強(qiáng)項(xiàng)之一!
MYSQL沒有專門的災(zāi)難恢復(fù)機(jī)制, 所有所用所依賴的就是上述的備份功能再加上更新日志。在使用前還必須確保刪去更新日志中會(huì)導(dǎo)致數(shù)據(jù)丟失的語句。災(zāi)難恢復(fù)所需時(shí)間取決于備份恢復(fù)時(shí)間和事物日志加更新日志的大小。
FIREBIRD 有著完整的專門的災(zāi)難恢復(fù)機(jī)制。除上述的備份功能可作災(zāi)難恢復(fù)之外,FIREBIRD還有專門為災(zāi)難恢復(fù)而設(shè)的 ”影像文件“(shadow file). 故名思義,”影像文件“ 就是亦步亦趨,如影相隨。FIREBIRD在建立數(shù)據(jù)庫(kù)時(shí)可以同時(shí)建立(多份)影像文件(只要給個(gè)文件名就可以,當(dāng)然不會(huì)疏忽到把影像文件建在與數(shù)據(jù)庫(kù)同一個(gè)磁盤或主機(jī)中)。然后就不必管了。數(shù)據(jù)庫(kù)如常操作,影像文件后臺(tái)運(yùn)行。照葫蘆畫瓢,亦步亦趨,點(diǎn)滴不漏,把運(yùn)行中的數(shù)據(jù)庫(kù)完完整整地復(fù)制下來。數(shù)據(jù)庫(kù) 崩潰或硬件故障時(shí),一個(gè)指令,激活影像文件。于是影像文件升級(jí)作 ”老大“,取代原數(shù)據(jù)庫(kù)作為主數(shù)據(jù)庫(kù)正常運(yùn)行。這時(shí)可以再(自動(dòng))為這個(gè)”老大“作影像文件。。。數(shù)十秒內(nèi)即可完成災(zāi)難恢復(fù)。另外若僅僅因斷電或系統(tǒng)崩潰而導(dǎo)致數(shù)據(jù)庫(kù)災(zāi)難,FIREBIRD的自動(dòng)系統(tǒng)崩潰恢復(fù)機(jī)制可自動(dòng)進(jìn)入無人值守?cái)?shù)據(jù)庫(kù)恢復(fù)程序,用戶要作的就是保證恢復(fù)電源和系統(tǒng)運(yùn)行。危厄現(xiàn),安然定,神鳥應(yīng)無恙。
最后看看兩個(gè)數(shù)據(jù)庫(kù)的摹制(database replication)能力。
MYSQL僅支持單向非同步 數(shù)據(jù)庫(kù)摹制。(asynchronous on-way database replication) 必須把一個(gè)數(shù)據(jù)庫(kù)設(shè)定成主數(shù)據(jù)庫(kù)A,另一個(gè)為從屬數(shù)據(jù)庫(kù)B。數(shù)據(jù)只能從主數(shù)據(jù)庫(kù)A向從屬數(shù)據(jù)庫(kù)B摹制。如果還需從屬數(shù)據(jù)庫(kù)B向 主數(shù)據(jù)庫(kù)A摹制(如分部向總部傳遞)那必須再把從屬數(shù)據(jù)庫(kù)B設(shè)定為A, 主數(shù)據(jù)庫(kù)變成B?;蛟僭鎏韮蓚€(gè)數(shù)據(jù)庫(kù)主機(jī)專事摹制。若是多層多點(diǎn)多向摹制,不堪設(shè)想。(這也是我們公司不允許雙機(jī)配置的原因之一,我們公司肯定要進(jìn)行多層多點(diǎn)多向跨層摹制)。
FIREBIRD既支持多向非同步數(shù)據(jù)庫(kù)摹制。(Asynchronous N-way database replication),也支持多向同步數(shù)據(jù)庫(kù)摹制。(Synchronous N-way database replication),用戶可從任何一個(gè)FIREBIRD引擎向另外一個(gè)FIREBIRD引擎摹制,反之亦然。可供選擇的FIREBIRD摹制引擎也 非常之多。下面略舉一些:
IBReplicator - (首選, 請(qǐng)支持FIREBIRD社團(tuán)核心,吃的是草,擠出的是血)
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_ replicator
FiBRE - open source, cross-platform
http://fibre.sourceforge. net/
FBReplicator - open source
http://www.meta.com.au
ReplicadorBR - open source
http://sourceforge.net/projects/replicadorbr/
另外上面介紹的nbackup, 只對(duì)變化了的部分(mutation)進(jìn)行備份,又稱為“增量備份”。其增量的時(shí)間差可以精確到分以下 (minute).若把nbackup與網(wǎng)絡(luò)或?qū)S镁€結(jié)合起來,也不知會(huì)是什么結(jié)果啊。
LAFP(Linux Apache Firebird PHP)架構(gòu)已久經(jīng)沙場(chǎng),運(yùn)行穩(wěn)定?,F(xiàn)在最新的 RHEL5, CentOS5, Ubuntu (
http://www.firebirdsql.org/manual/ubusetup.html) 上試運(yùn)行,并要在多墻多層多穴(Multi-Firewall-Host,Multi-Layer,Multi-Inc)結(jié)構(gòu)上試運(yùn)行。簡(jiǎn)稱3M結(jié)構(gòu) (MMM結(jié)構(gòu))或 MMMFS結(jié)構(gòu)。但是不是到此為止了呢。
據(jù)報(bào),日本產(chǎn)通省大臣 (Japanese communications minister Yoshihide Suga)星期五在巴西宣布,日本將研發(fā)新一代的網(wǎng)絡(luò)以取代現(xiàn)行的萬因網(wǎng) (internet),
預(yù)計(jì)在2020年投入使用。
MySQL執(zhí)行副總裁Zack Urlocker講:Oracle的主席曾經(jīng)說過一句話,說Oracle是播音747,而MySQL是豐田汽車。他完全同意這個(gè)觀點(diǎn)。
如 果這樣,我看FIREBIRD是 AIR-BUS。當(dāng)然,豐田車與AIR-BUS各有各的用途,各有各的長(zhǎng)處。對(duì)豐田車的駕駛員與AIR-BUS的駕駛員要求也不同,兩者創(chuàng)造的價(jià)值和所得也不同。我們公司設(shè)有專門的軟件部,請(qǐng)有很好的系統(tǒng)工程師和軟件工程師。有些可稱同行中的姣姣者。但你老對(duì)我說,所有可以創(chuàng)新的地方早已被人捷足先登,已 然無所可為,能夠跟上就不錯(cuò)了。也許因我是外行,至多也就是個(gè)半路出家。所以不管向哪個(gè)方向望去,總是看到一片又一片未曾開墾過的土地,散發(fā)著原野的芬芳,感受著鼙鼓陣陣馬嘯嘯。
======================================
b3版本將整合CS/SS版本到一個(gè)通用版本上,根據(jù)配置,可把引擎配置成CS or SS結(jié)構(gòu),使得引擎更簡(jiǎn)潔便攜。另外也對(duì)代碼做大量重寫,企圖去掉stl部分,使得代碼有更好的跨編譯器跨平臺(tái)特點(diǎn)。
fb3以后版本將注重更多的企業(yè)級(jí)高端功能開發(fā):分布式、外部數(shù)據(jù)引用(其他fb/odbc/jdbc等)等。
非常值得期待的免費(fèi)餐~~