標籤:blog http io ar os 使用 sp 資料 div
http://www.cnblogs.com/xxxtech/archive/2011/12/30/2307859.html
by Euan Garden
這些年來我聽說過關於這個流言的許多版本,其中最有趣的要數是“微軟來不及去混淆購買來的Sybase代碼,所以SQL Server其實還是Sybase的產品”。
首先讓我們來回顧一下曆史。1987年,微軟和Sybase公司展開了合作,共同建立和銷售基於Sybase DataServer的資料庫管理系統。Sybase享有SQL Server在Unix/小型機平台上的的權利,而微軟享有SQL Server在當時新生的OS/2平台和任何微軟開發的平台上的權利。
那個時期,Ashton Tate的dBase 在“PC”資料庫系統(非大型主機/小型機/Unix)中處於的領先地位(我的第一個資料庫應用就是在DOS 3.3平台上使用的dBaseIII+)。為了更好的利用現有的大型dBase並使Ashton Tate提供真正的客戶服務器,微軟和Ashton Tate在Sybase的協助下發布了Ashton Tate/Microsoft SQL Server(Sybase後來將他們在UNIX和VMS平台上的產品重新命名為Sybase SQL Server),這後來也成為了Sybase DataServer在OS/2平台上的名稱。
Ashton Tate/Microsoft SQL Server的第一個版本在1989年發布。最初,dBase IV計劃為SQL Server提供前端的開發工具(基於先前的合作),但是dBase IV在當年的延遲發布導致了該計劃的流產。於是,微軟和Ashton Tate解除了合作關係,產品也被命名為Microsoft SQL Server(現在仍有一些當時的開發群組成員非常得意的擁有印著Ashton-Tate/Microsoft SQL Server的封裝盒)。
此後微軟繼續改進SQL Server,在1990年發布的SQL Server 1.1中加入了對Windows平台的支援。然而其中大部分的工作仍由Sybase完成,微軟只負責測試、專案管理和一些次要的開發。到了1991年,為了修正產品中的缺陷,微軟的團隊才得以閱讀而後變為修改SQL Server的代碼。第一個真正意義上的合作版本是1992年發布的4.2版,其OS/2版本的代碼和Sybase 4.0的代碼相同步。值得注意的是微軟的代碼首次像Sybase的代碼一樣被用於該版本。
而後事態開始升溫,微軟著手於32位版SQL Server,Sybase則展開了在System 10平台上的研發。這個時候,OS/2平台顯示出了缺乏競爭力,而微軟已完成了beta版的Windows NT並且只有32位的版本。所以SQL Server團隊決定在穩定的4.2版本代碼的基礎上建立NT平台上的連接埠,而Sybase繼續著為System 10平台開發。現在再用“連接埠”這個詞已經不太貼切了。NT平台為產品使用作業系統的特性提供了很多機會,關鍵是作業系統提供了支援運行在SMP系統上的能力,而不是必須寫入資料庫的代碼裡。這個團隊所做的,導致了OS/2平台上的4.2版和NT上的SQL Server有了很大的不同(邊註:sqlnt曾經是用於開發通訊的內部郵件帳號,該帳號如今仍然存在並擁有Team Dev,支援小組,文檔和課件團隊中的成員)。
至此,微軟和Sybase的合作開始失去了它的價值。Sybase希望保持平台中立性,而微軟希望完全投入於Windows NT平台。另外,受限於協議,微軟必須得到Sybase批准後才能為SQL Server添加新特性。他們的合作在1994年瓦解,Sybase第一次被允許在OS/2和Windows平台上發行自己的產品,微軟則可以將產品帶向自己想要的方向。在短短18個月內,微軟在原先NT平台SQL Server代碼的基礎上,發布了SQL Server 6.0和6.5。這些版本重寫了現存的代碼並添加了新的代碼。也正是在這個時候,微軟成功的擁有了SQL Server的權利和代碼,並使之顯著區別於原先OS/2平台上4.2版本的Sybase代碼。
在這個轉變過程中,微軟決定在資料管理前沿做大。這意味著他們還有很多工作要做,包括建立一個更強大的團隊。微軟聘請了一些資料庫行業中最優秀和最富經驗的專家(來自DEC的Hal Berenson, Peter Spiro, David Campbell等人, IBM的 James Hamilton, Lubor Kollar等人, 甲骨文的Bill Baker, Pedro Celis, 和Tandem的Pat Hellan),並為他們配備的最好的研究人員(Jim Gray, Phil Bernstein等人)以及來自全球最聰明的資料庫專業碩士和博士。他們和原來團隊中的靈魂人物(如Ron Soukup)以及一些微軟內部的人員在短時間內組建了一個偉大而專註團隊。團隊中的一些人致力於SQL Server 6.0/6.5,而大部分人則進行代號為Sphinx即SQL Server 7.0的研發。
Sphinx的目標很明確,建立一套新的標準以簡化完整的資料管理。這意味著在未來的幾年中要建立一個可擴充的平台,並從先前各SQL Server版本和其它資料庫平台中吸取教訓。為此必須重寫資料庫引擎、新的查詢處理器、新的儲存引擎和一套新的資料訪問API(OLE DB and ADO, 最終置入了dblib)。
儘管SQL Server以關係型資料庫管理系統聞名,微軟希望在SQL Server 7.0中提供一個完整的資料解決方案。其通過OLAP服務添加對線上分析處理的支援(這部分的代碼來自於對以色列“Plato”公司的收購),通過DTS整合了資料擷取、轉換和下載(這部分的代碼由內部的Starfighter/Tools團隊開發)。
SQL Server 7.0 RTM版於1998年11月發布(那周我正好在Redmond接受訪問,還記得主園區的1號樓和3號樓非常熱鬧)並在1999年1月發布了正式版。雖然我有些偏見,但我相信微軟所做的工作遠比我以上所列出的要多。所以還能說Microsoft SQL Server是Sybase的產品嗎?主要的組件不是新添加的就是重寫過的,因此Microsoft SQL Server 和 Sybase SQL Server沒有任何關係。
顯然SQL Server的征程並沒有止於7.0版。緊隨其後的是2000年8月的發布SQL Server 2000。其主要的工作包括了多執行個體和叢集的實現(所有的代碼都是微軟自產的),資料採礦(來自於早期微軟研究院的進行的研究項目),SQLXML(來自於MDAC和網路與介面團隊的輔助項目)。
在SQL Server 2005前,SQL Server 2000提供的最具影響力的新特性是報表格服務。SQL Server 2000中的報表格服務的代碼完全是微軟自產的。開發報表格服務的團隊由原先Repository/Meta Data Services 團隊、一些英語查詢團隊的成員和一群新人組成。
SQL Server 2005中主要的新特性和代碼值得用幾篇部落格來分別介紹,但我想特彆強調SQLCLR(來自於對一個長期戰略項目的整合),XML支援(我們調查研究了儲存XML的最佳方法,在使用專用的XML資料庫或將XML整合進SQL Server中選擇了後者。這需要大量的二次規劃和語言上的改變以支援XQuery),Service Broker(在Dave Campbell和在以色列MSMQ團隊調查了messaging/queuing/SOA後,我們決定整合這個輔助項目),Integration Services(來自一些零碎的代碼,由原先DTS團隊和一些來自C++, hardware, AS and COM+團隊的人組建了一個新的團隊,加上一次小規模的收購來建立設計和執行的環境),Report Builder(基於一次收購的概念和架構,但代碼是全新的)。
Dave Campbell曾講述過他10年SQL Server生涯中的一天,現在仍有一些成員在團隊中的時間比他還長,但SQL Server團隊(MDAC, System.Data, System.XML 和 WinFS)所有1000人中,幾乎沒人見過一行不是微軟員工寫的代碼。
結論:流言被終結了!
原文請見:http://blogs.msdn.com/b/euanga/archive/2006/01/19/514479.aspx
後續:http://blogs.msdn.com/b/euanga/archive/2006/05/23/597677.aspx
[譯]流言終結者 —— SQL Server 是Sybase的產品而不是微軟的