千呼萬喚始出來
2005年11月,微軟公司發布了其資料庫軟體的又一個升級版本SQL Server 2005。這是5年來,微軟公司首次發布新版本的資料庫軟體。用上千人的研發力量、大規模團隊開發、現代軟體研發管理方式、耗時5年方才打造出來一個產品,無論對於微軟還是任何一家軟體企業來說,都是非常少見的。且讓我們在這一時刻簡單回顧一下SQL Server這5年的曆史吧。
2000年,微軟發布SQL Server 2000,同時宣布代號為Yukon的下一代資料庫進行中研發。
2001年,微軟發布Yukon的技術細節,包括新一代儲存引擎 WinFS 等一些激動人心的新特徵的對外公布吸引了眾多技術人員和媒體的關注。
2002年,微軟發布了.NET開發工具,一度神秘的.Net技術真實地展現在人們眼前。而被認為同是微軟.NET戰略中重要部分的Yukon卻被首次宣布將延期發布。
2003年,微軟再次宣布延遲Yukon發布日期至2004年底,後在2004年再次宣布延遲。同年,微軟發布了報表格服務、通知服務等資料庫組件,這些將整合在Yukon中,也可以安裝在SQL Server 2000上。這一年,微軟發布Yukon 的第一個預覽版。
2004年,微軟再發Yukon a2版。微軟確認,WinFS將不會在Yukon和Longhorn同時發布,而是在更遠的將來作為一個可安裝軟體單獨發布。這讓許多曾經對Yukon和Longhorn寄予厚望的技術FANS深感失望。
2004年12月、05年6月,微軟相繼發布B1、B2版。2005年10月30日,微軟向MSDN訂閱使用者提供SQL Server 2005 RTM版本下載。2005年11月7日,微軟正式發布SQL Server 2005。
到這裡,可以說是微軟贏得了一個MileStone,而Yukon的研發之路還並沒有結束。例如,儘管在B版本中,SQL Server2005提供了資料庫鏡像功能,但在正式發布版本中,還是撤下了這個非常重要的功能,而改為在2006年上半年作為單獨安裝的組件提供。顯然,微軟認為,這個功能還需要經過更多的測試。
昨夜星辰昨夜風
2000年,微軟發布SQL Server 2000時,我剛剛開始用ASP/VC編寫SQL Server 7.0資料庫應用程式,還清楚地記得當時我所在的公司給我的第一個任務是:實現用Web方式將映像儲存到資料庫中。
2001年,為了編寫一個項目的二期方案,開始深入瞭解SQL Server 2000。然而,SQL Server 2000相對於SQL Server 7.0,實在很難說得上有多少明顯的差異,以至於有很長一段時間我都為如何說服非常理性的客戶而苦惱不已。最終,客戶同意升級到SQL Server 2000已經是一年以後,在我們提出了一些利用SQL Server 2000開發的長期計劃後,系統才得以升級。
2003年,因為項目的需要,我和我所在的Team Dev打造出了一個很好的資料展示和分析產品,具有較強的曆史資料處理、分析和展示功能是它的亮點。在這一年的Tech-ED大會上,我看到了微軟新發布的報表格服務的展示。客觀地說,在那時,報表格服務還是很粗糙,從介面 的友好性、分析功能的實用性上來說,和我們的產品還是有一些差距。然而報表格服務的一個非常好的理念是允許業務人員自己設計報表,它清晰地劃分了報表的開發、管理、使用層次,雖然它還需要針對此進行更多改進。而這些是我們這個資源和人力都很有限的技術團隊所難以長期承擔的。畢竟,資料展示部分也只是我們所提供產品的一個環節,儘管它在那一年協助我們的產品贏得了客戶的好評。可以說,只專註於某一個方面並進行持續改進是報表格服務最終勝過我們的產品的一個主要因素。
我遇到的許多開發人員非常關心的是如何?問題,我們的產品也包括了一個完整而又靈活的資料處理和轉換、包括中繼資料定義部分,而SQL Server 2005的資料倉儲部分同樣提供了很方便地從多種資料來源提取資料、轉換和裝載功能。
這一年,因為朋友的推薦,還在業餘時間為一家出版社編寫了一本SQL Server書籍中的部分章節。記得當時剛剛答應朋友的時候,還是自信滿滿的,真正開始動手寫了,卻發現很多地方原來還是模糊不清。我不得不去翻閱大量的文檔和資料,甚至把SQL Server的聯機叢書從頭到尾都閱讀了一遍,終於能在預定時間交上了書稿。這一段經曆協助我發現,原來SQL Server 2000中還有很多微妙的地方,運用好了,會非常有助於開發和管理SQL Server。
2004年,我們為一家電信企業提供了一個針對客戶消費行為相關的技術課題分析。儘管所有的樣本資料幫浦、轉換工作都是在SQL Server 2000中完成的,但在選擇資料採礦模型的時候,由於SQL Server 2000隻提供了兩種資料採礦模型,我只能藉助於市場上一些免費的資料採礦工具,以及相當數量的手工計算完成最後的資料發現工作,其間的痛苦可想而知。那時候,對Yukon提供了豐富的資料採礦演算法這一點非常關注。
回首與SQL Server親密接觸的這五年,從基本的SQL Server 應用開發技巧到SQL Server的理論知識,從簡單的使用到深入的運用以致感覺SQL Server現有的功能不夠用,如果從學習知識的角度看,實在耗費了太長太久的時間。某種程度上,這也和國內缺少深入分析和研究、介紹SQL Server的資料有關。書店裡堆放的相關書籍,幾乎都可用三個字總結:全而淺。在2005年夏天,我在書店終於讀到了一本很好的SQL Server 2000開發書籍,是被譽為國內SQL Server技術論壇第一高手的鄒建所寫的。然而,卻也讓我感歎它來得太晚太晚。
在另外一個方面,對於SQL Server開發,國內幾乎絕大多數的開發人員都認為非常簡單,進行SQL Server開發應該是不在話下。然而,我遇到的一些大大小小的項目中,對於SQL Server的使用,大多數卻都曾出現了問題,有些甚至影響到了項目整體給客戶的滿意度。
現在,SQL Server 2005發布了,它遠比SQL Server 2000更為複雜和強大,你我他又會用多少時間才能深入地運用和掌握這個系統,國內什麼時候才能出現全面深入的介紹SQL Server 2005的書籍呢?
卻在燈火闌珊處
從SQL Server 2000到SQL Server 2005,不僅僅是資料庫系統具有更高的效能、處理能力,新版本的系統還帶來了許多新的、在舊版本中從未出現的特性。而這些新特性也都是和現代資料庫的發展方向一致的。例如,對XML的支援、在SQL語言中嵌入進階語言的支援。在企業環境中,更注重安全性、高可用性、整合的管理工具等。
下面是SQL Server 2005中的新特性和重要改進的一張簡單列表。
1、支援XML資料類型、XQuery查詢
幾年前,我的一位朋友曾經是當時世界上唯一的純XML資料庫廠商的支援人員。在他的帶動下,那一段時間我也對XML資料庫非常關心。然而,後來的事實證明,雖然對XML的支援很重要,但資料庫還是必須以支援關係型資料為主。SQL Server 2005在這方面提供了可以說目前最為完美的方案。
2、CLR編寫資料庫物件
包括Oracle、DB2等其它大型資料庫系統,現在都已經開始在SQL語言之外,提供直接使用進階程式設計語言編寫資料庫物件的支援。主要的原因是兩個:SQL語言本身的功能還比較弱,使用進階語言可以實現更強大的功能。此外,進階程式設計語言如Java、C#等已經擁有非常龐大的開發隊伍,直接使用進階語言開發資料庫物件對這些程式開發人員來說使得開發難度、程式的維護難度都大大降低了。
3、UDT
SQL Server 2005裡面真正開始支援自訂資料類型。正如物件導向資料庫現在被認為是下一代資料庫的方向,如何使用UDT取決於開發人員具有怎樣的想象力。
4、Service Broker
提供了一個足夠穩定可靠而又高效的非同步訊息排隊隊列。
5、ADO.NET 2.0
ADO.NET也有許多新的改進,如對多種異構資料庫之間實現分散式交易的支援、新的串連提供者模型、對非同步編程的支援等。
6、T-SQL增強
除了一些功能更強的SQL函數,還增加了包括支援異常處理等一些新的內容。
7、資料庫鏡像(Mirroring)
一個針對企業關鍵應用非常關注可用性而設計的熱備方案,可以大大提高SQL Server的高可用性,能在資料庫發生故障幾秒鐘內切換負載到備用系統上。
8、全文索引增強
Google的成功表明,在資訊量急速增長的時代,如何快速高效地找到需要的資料已經是企業和個人都非常迫切的需要。全文索引提供了將大量文檔儲存在資料庫中而又能夠快速搜尋這些文檔的支援。SQL Server 2005在全文索引的儲存、搜尋效能上比舊版本有了明顯的增強。
9、管理、監控、開發工具的整合和增強
將管理、監控、開發工具整合到一起方便了企業的DBA。
10、BI的增強和改進
如果用SQL Server 2005來做我前面提到的那個客戶行為分析的課題,相信可以很輕鬆地實現。在資料採礦方面,除了系統提供的九種經典的資料採礦模型,還支援自訂模型演算法。
11、儲存引擎的改進
在資料庫核心的儲存引擎部分,SQL Server 2005做了大量的改進,因而整體效能、穩定性和可靠性都比SQL Server 2000有明顯增強。
限於篇幅,我不能在這裡列出所有的SQL Server 2005的改進。但從這些已經可以看到,SQL Server 2005的確是一個很適合企業環境關鍵應用的商務資料庫系統。而相信一個功能強大而穩定的基礎平台,一定能夠為行業使用者的資訊化帶來實實在在的好處,同時也會給軟體開發和系統整合商們提供更多的信心和能力。