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