SQL Server已不再是一套單純存放資料的資料庫系統,微軟企圖聯合資料管理與程式開發兩種應用,繼續去開拓動態IT的策略。此外,對效能的改善也成了其力求突破的重點。
更明確走向資料與應用程式雙棲的企業IT的核心平臺
SQL Server 2008的新功能,具有濃厚的程式開發風格,不論從企業到個人端、行動運算、甚至雲端,微軟都想在這個平臺上發展出對應的功能。
先期導入的企業測試實例:財金資訊
財金資訊以歷史資料庫為測試對象,啟用SQL Server 2008的資料壓縮功能,效能相當理想,資料壓縮讓儲存空間佔用減少6成,空間只需原來的4成不到,而且取出特定資料只要1秒。
與Visual Studio及.NET之間的關聯性日趨緊密
ADO.NET Entity Framework是.NET Framework 3.5 SP1針對SQL Server 2008最主要的更新,Visual Studio 2008 SP1也連帶推出輔佐的設計功能。而SQL Server本身則新增許多新的資料型態,未來在檔案及地理資訊方面的應用,將比以往簡便。
LINQ─提供統一的資料存取方法
LINQ是微軟的另一個物件導向資料存取機制,其設計的目的乃是希望能解決開發者須熟悉多種資料存取模式的麻煩。不過目前LINQ有個關鍵限制,就是現階段只支援SQL Server。
強化資料庫集中管理及延展性
2008新的管理介面,雖然納入了許多管理工具,但對於習慣SQL Server 2000或2005等系統的管理人員來說,要上手並不是很困難,2008比以往更加強集中管理功能,採用了原則管理,並建立組態伺服器,以單一介面集中管理所有的SQL Server資料庫。
視覺效果與執行效能皆大幅改善
Reporting Services 2008版結合Dundas的技術,引進大量圖表元件,提供炫麗的圖表元件,並改寫分頁引擎,提升巨量報表的產出效能。
效能改善是主要訴求
SQL Server 2008在整合服務與分析服務沒有大幅度變動,主要降低了系統的負載與強化的分析方法,同時也擴充資料採礦中的時間序列演算法運用。
撰文⊙李宗翰、李延華、林郁翔、林柏凱更明確走向資料與應用程式雙棲的企業IT的核心平臺
繼Windows Server和Visual Studio在2008年2月底上市之後,微軟伺服器環境當中,資料平臺SQL Server終於在5個月後發布了正式版本,距離上一個版本2005只有2年半的間隔,完全不像SQL Server 2000與2005中間整整差了5年,因此功能上而言,新版與SQL Server 2005相近,但與SQL Server 2000之間就有更大幅度的差異。
為資料庫應用程式開發提供更多強大的火力
從SQL Server 2005以後,微軟的關聯式資料平臺庫與.NET應用程式開發環境的結合程度,越來越緊密。毫無意外地,新版擴充這方面的功能應用,同時也增加對空間資料與非結構化資料的處理。報表服務上的改良也非常明顯,報表伺服器不再需要IIS的幫忙,可以單靠HTTP.SYS來處理報表伺服器回應瀏覽的要求。
在這樣的資料庫環境下,程式開發人員將能夠使用上述幾套開發元件內所帶來的新技術,將5種不同類型的資料來源以物件的方式對應,讓C#和Visual Basic .NET程式碼得以用簡單的方式查詢資料,或者是用複雜的資料庫關係轉換成單一的資料實體概念模型,方便程式碼去存取資料。簡單地說,就是不直接透過傳統關聯式資料庫的SQL語法來處理資料的存取。
所謂的物件存取,是指隨Visual Studio 2008和.NET Framework 3.5所內建的LINQ,實體資料概念模型則來自於ADO .NET Entity Framework、ADO .NET Data Services。再加上Sync Framework所內含的Sync Services for ADO.NET。
Visual Studio 2008本身也和SQL Server關係很密切。因為微軟從Visual Studio 2005 SP1就開始採用SQL Server Compact版作為內建的資料庫,到了現在,Visual Studio 2008 SP1及SQL Server 2008也都內建了SQL Server Compact 版3.5 SP1。
在資料型別上,SQL Server 2008也新支援了Geography和Geometry,讓開發人員能夠處理針對地理位置和平面空間等2種類型的資料。
至於要儲存文字檔、影像和視訊這類非結構化的BLOB資料,SQL Server 2008會宣告成varbinary(max),以它的原始檔案格式直接儲存在NTFS檔案系統,而非資料庫檔案內,所使用的空間可以超過2GB。這種做法稱為「FILESTREAM」,但目前只能在本機伺服器上,還無法用在遠端儲存設備,例如檔案伺服器。如果有這方面需求,可以用Remote BLOB Store來處理(可以至微軟網站下載SQL Server 2008 Feature Pack取得)。
控管與提升效能的工具增多
在資料庫程式開發上繼續拓展功能之餘,SQL Server的系統管理方式、效能的管理與改善,以及延展性的提升,都有相當大的突破。
例如,原則管理與集中控管多伺服器組態,可以簡化作業程序與規範的執行與稽核;也有資料收集器(Data Collector)能夠自動記錄效能資訊,建立一個長期收集、儲存伺服器效能資料的「資料倉儲」,供後續分析,就是所謂的「Performance Studio」。在工作負載與系統資源耗用量的調度上,有新加入的資源管理員(Resource Governor)能夠限制各應用程式存取的處理器與記憶體等資源的使用量與優先順序。
為了減少磁碟的I/O,SQL Server 2008也支援資料壓縮,主要是透過增加處理器的用量,來換取更少的資料存取時間。此外,同一個資料表所屬的索引也可以分割,透過指定多個檔案群組,將歷史資料與近期資料分別指定儲存於不同的磁碟區,應用程式不必修改存取的資料表名稱,也能照舊運作,同時也不需要因近期資料的更動,而重組整個資料表的索引。
不只做到集中化管理,還可以針對特定狀況自動套用原則
宣告式管理架構(Declarative Management Framework,DMF)或所謂的以原則為基礎的管理(Policy Based Management),是SQL Server 2008很早就宣布的系統管理新功能。講起來很抽象,但實際上是微軟為了想利用建模的方式,讓管理者得以用定義原則、條件來協助管理SQL Server,使系統遇到特殊狀況能自動化處理。以往這些進階的做法,可能都得靠撰寫T-SQL 的指令碼才能做到。
在Management Studio裡,這功能叫做「原則管理」,管理者可以針對多臺資料庫伺服器建立和執行原則,目的是為了確保伺服器本身和資料庫都能套用組態,符合標準。
每一條原則皆包含一組預先定義的Facet(問題的層面)與條件,而這些屬性裡面有SQL Server的設定值和可偵測的狀態、事件型態。
多個原則為了方便管理,還可以把它們分成不同群組,構成類別目錄(Category)。
實施原則的方式有4種,具有一定的彈性。例如允許手動執行,或是排程檢查,此外,也可以做到在事件發生時自動套用,一旦出現不符合原則的狀況時,只單純記錄,或是自動放棄變更。
SQL Server 2008還有一項與原則管理有關的大量管理功能,叫做組態伺服器(Configuration Servers),企業可以搭配原則部署,去強制管理多臺已註冊的SQL Server伺服器設定。
軟體+服務的策略:SQL Server Data Services
未來SQL Server還會有哪些發展?接下來除了繼續改善本身的開發、管理、商業智慧的功能,落實動態IT的平臺策略之外,SQL Server在2008版本發表後,近期還有受到眾人矚目的一件大事──與雲端運算相關的SQL Server Data Services(SSDS)。
這項發展,顯然是為了回應微軟所提倡的「軟體+服務」的口號,更早之前微軟BizTalk Services,但至今使用者的反應並不大。
有人直接把SSDS稱為「微軟的雲端資料庫」。事實上,我們不免拿它和剛推出ADO .NET Data Services相提並論,根據微軟的說法,兩者技術上是有相似處,例如都是利用Services的方式來傳輸資料,而且也利用ADO.NET 技術為基礎。不過SSDS的適用範圍、架構與功能會比ADO .NET Data Services更廣。
在微軟的規畫當中,未來SSDS也可以用ADO .NET Data Services來當作存取的技術,然而後者對於熟悉微軟開發方式的程式人來說,會是最佳的選擇。文⊙李宗翰
| 比較ADO .NET Data Services與SQL Server Data Services |
||
| 技術名稱 | ADO .NET Data Services | SQL Server Data Services |
| 相似處 | 都 是利用Services來傳輸資料 都有利用ADO.NET 技術為基礎 |
|
| 相異處 | 以類似REST 的方式傳輸 | 支援SOAP和REST |
| 可與各種資料庫搭配,條件是只要能利用 ADO.NET 存取即可 | 只支援 SQL Server | |
| 只是資料存取的技術 | 一種提供資料儲存及服務的技術 | |
| 資料來源:微軟,2008年8月 | ||
先期導入的企業測試實例:財金資訊
隨著交易資料量的不斷膨脹,儲存空間的需求日益增加,這種狀況在企業的資料庫應用當中,相當普遍。如果你的儲存設備硬碟空間還很充裕,可能沒有太大的感覺,可是當資料大到某個臨界點,硬體必須擴充,這些成本就會影響你的考量。如何在兼顧效能、建置成本與管理負擔的情況之下,能夠平順地承載與處理更多資料量,已成為許多企業IT面臨的重大議題。
SQL Server的運用上,同樣面臨這樣的狀況,到了2008這個版本,微軟已提出一套新的解決方式──資料壓縮。財金資訊在最近進行的SQL Server 2008的先期導入測試中,已經率先驗證這項功能的效果。
財金資訊目前採用的SQL Server 版本,仍是以2000為主。先前他們與亞洲資採合作過幾次先期導入測試,一次在SQL Server 2005上執行與Oracle Database 10g同在Windows Server環境上的比較。而最近這一次,他們同樣與亞洲資採一起完成,主要是以歷史資料庫的資料為對象,來比較SQL Server 2008與SQL Server 2005。
須處理全臺灣金融機構之間每天產生的大量金融資料
這套資料庫的日常作業,並非以交易處理為主,部分用途是支援檢警調單位去調查某帳號在特定時間的交易,作為辦案證據。然而,由於全臺灣所有銀行的提款、轉帳、通匯,都要透過財金資訊,加上他們必須保留3年的資料,因此處理起來相當大。
財金資訊研發部高級工程師黃建隆表示,2年的資料就要四、五百GB,資料之所以只保留3年,也是因為效能和成本的考量,超過這段時間的資料,就要從磁帶去找。
該公司每天匯入歷史資料庫的平均數量是250萬筆記錄,包含提款、轉帳、通匯等業務。所要處理的資料期間是以營業日為主,但遇到假日時,有時候也要往前「回補」,例如,星期二處理的資料,需包含星期五三點半以後、星期六、日、一的部分。每天處理完成的時間大約是2小時。
不只是因為定期匯入的資料量,才使得資料膨脹的速度很驚人,黃建隆說,他們最近把某些資料表加上索引,就發現平白無故需要80GB的空間,如果日後有更多業務需要處理,額外儲存空間耗損的狀況將更嚴重。
省了儲存空間,同時又獲得效能提升的好處
在所有資料都一樣的狀態下,他們從SQL Server 2005直接升級到2008,查詢速度的確變快一些。再以SQL Server 2008測試,同樣的資料量,開啟資料壓縮功能後,所占用的空間最多可縮小為原來的38.96%,而且查詢的速度跟先前差不多,並沒有變慢。這樣一來,硬碟空間可以省很多。他曾經也擔心壓縮和解壓縮使得查詢速度受影響,測試的結果顯示並沒有變差,等於省了空間、速度又變快。
黃建隆認為,即使處理時間跟之前相近,空間卻能省很多,光是這樣就有很大的效用。
亞洲資採技術總監尹相志解釋,這是因為I/O效率的關係,查詢時資料量越少,速度越快,I/O速度提升,效能會有很可怕的成長。在企業資料庫系統的運作上,處理器、記憶體的配置量應該都遊刃有餘,瓶頸往往不在於是否充裕,幾乎都是磁碟I/O無法承載。
實際上,資料壓縮的做法,主要是利用單次的重整,來解決空間的需求和查詢的需求,除了資料表之外,還可以連同索引一起處理。
尹相志說,數字是效果最好的資料類型,其次是文字,Binary基本上是沒辦法被壓縮的。壓縮後,系統過一段時間後,後續還需要一些重整的工作。需要時可以排程執行,或是匯出成指令,再結合ETL、排程重整。周期視資料更新的頻率而定。
資料分割變得更易用,省掉Log寫入讓ETL更輕鬆
這個歷史資料庫的環境不只用了資料壓縮,也同時使用資料分割(Partition)。這項功能在SQL Server 2005就提供了,當時沒有比較友善的圖形使用者介面可以輔助,但2008提供了資料分割精靈,能自動根據所指定的條件和範圍、產生指令碼,可以調整的項目彈性較大,只要將語法敘述貼上執行的視窗、按執行即可。如果未來要增加分割時,就可以利用這程式碼在ETL上自動作業。
財金資訊是怎麼用資料分割呢?他們用年月去切,將某個資料表展成30幾個資料檔(因為是3年的資料),假如使用者要存取某年某月,只要取這一小塊即可。黃建隆說,以前沒用這功能時,資料會集中到某幾個資料檔裡,因為取出的資料量很大,所以查詢的速度比較慢;假如要用人工去拆,對管理者與應用程式的開發來說,比較麻煩。
對於歷史資料庫的處理來說,因為性質不同於一般交易系統,所以不需要為寫入失敗的還原作業而留下記錄檔,只要重新再匯入一次即可,而且這些資料在原有的系統也找得到。因此,財金資訊也用了SQL Server 2008的新功能,稱為No Log Insert。他們認為在歷史資料庫上沒太大意義,寫入記錄檔只是浪費時間和空間。
在SQL Server 2005時,黃建隆曾經試過把Recovery model設成Simple,企圖使用最小化記錄檔(minimal logging)的機制,但應用的結果比他預期的還是大了許多,有時候甚至要占到好幾GB。到了2008實測,雖然有9千萬筆資料,但記錄檔最大只有4MB。尹相志說,資料壓縮已省了空間,再加上No Log Insert的關係,所以就連記錄檔的壓縮也不用多做。
提出更多穩定運作的保證,才能改變迷思
對於SQL Server的長期發展,黃建隆預期,未來的版本執行速度上一定是會越來越快,但他們希望微軟能在產品發表初期,能推出更穩定一點的版本。雖然財金資訊是先期導入測試,所使用的SQL Server並非正式版,但他也經歷過一些特殊狀況,是等到Service Pack更新之後才解決的,因此他們和許多企業一樣,對於穩定度的提升仍有很高的期望。文⊙李宗翰
|
資料壓縮大幅減少磁碟空間的耗用,連帶改善查詢效能 |
使用Page壓縮時,資料量變成原來的38.96%,而查詢速度也顯著加快。使用Row壓縮時,效能和Page差異不大,但是在資料的占用量上較大,兩者約16.5%的落差。
|
與Visual Studio及.NET之間的關聯性日趨緊密
因應SQL Server 2008的上市,在開發方面.NET Framework 3.5及Visual Studio 2008也在8月同步釋出中文版Service Pack 1,包含傳聞已久的微軟ORM(Object Relational Mapping)解決方案──ADO.NET Entity Framework,而LINQ(Language Integrated Query)也將增加支援存取Entity Framework物件的LINQ To Entities。
此外, ADO.NET Data Services也是新的,包含比SOAP(Simple Object Access Protocol)通訊協定更簡單的REST(Representational State Transfer)存取模式,可滿足傾向簡單應用Web Services的Web開發者。
事實上,Visual Studio必須升級才能平順使用SQL Server 2008,微軟的.NET與SQL Server研發團隊,有越來越緊密合作的趨勢,操作SQL Server最好用的開發工具是Visual Studio,而.NET Framework目前支援度最完整的資料庫也是SQL Server,可以看出微軟企圖藉由彼此綑綁的策略,拉抬兩者市占率的野心。
而SQL Server 2008本身跟程式開發有關的部分,比較重要的改變是增加許多新的資料型態,包括FileStream及Geography、Geometry等空間資料格式。FileStream可以存放檔案的中介資料(Metadata),並指定存放檔案的實體目錄。而空間資料型態則包含許多函式,幫助開發者處理點/線/面的空間計算。
物件與關聯式資料對應的解決方案
LINQ與ADO.NET Entity Framework在微軟是由兩個不同的團隊研發,功能上看似有些重疊,但實際上是要解決現今程式開發上,所面臨的不同問題。
LINQ提供統一操作各種資料集合的模式;而ADO.NET Entity Framework則是提供物件導向開發者,物件與關聯式資料對應的解決方案。
相對於物件導向程式開發的思維,在發明SQL的年代,並沒有物件導向的觀念,所以SQL語法一點也不物件導向。而習慣用物件思考,並希望物件導向觀念與關聯式資料庫可以平順整合的開發者,會希望有一套ORM解決方案。
而ORM的目的,是企圖幫助開發者從物件導向程式開發的角度,單純地思考類別之間的繼承及參照關係,而不需要知道實體的資料是如何分散在不同的資料表,以及物件背後對應哪些資料表,甚至SQL指令的組成,也交由平臺處理。
ADO.NET Entity Framework就是微軟的ORM解決方案,事實上,ORM在Java及PHP等陣營早有對應的解決方案,所以微軟在這方面的腳步並不算是很快。
隱藏物件與資料庫對應的複雜度,才能突顯ORM的價值
ADO.NET Entity Framework中的「Entity(資料實體)」,是指物件化的資料記錄。使用資料實體而不直接連結資料庫的好處,在於開發者不必使用SQL指令,而是透過物件的方法(Method)存取資料庫,藉以簡化程式設計的複雜度,並提升程式碼重複使用的機會。
以客戶資料為例,在資料庫有Customer和Customer Detail兩個資料表(Table),運用ADO.NET Entity Framework,可以把2個資料表對應(Mapping)成一個Customer資料實體,也就是物件類別,開發者只需呼叫Customer類別的Insert、Update和Delete等Method,並輸入必要的參數,那麼ADO.NET Entity Framework即自動產生對應的SQL語法,一對多地新增、修改及刪除Customer和Customer Detail資料表中的資料。
物件與資料表的對應,除了一對多的情況,也可能是多對一甚至多對多的複雜對應。例如一個Employee資料表,在業務面因為屬性不同,而拆成Manager、Employee和新人等3個不同的類別。
由於ORM需要對應資料庫與物件的關聯,還要處理物件之間的繼承關係,使得應用上存在一定的複雜度,因此,設計工具扮演的角色,相形之下變得重要,如果它無法使對應關係的設定,盡可能地簡單而直覺,就會減損使用ORM的好處。
Visual Studio 2008升級至SP1之後,將提供視覺化的精靈及操作工具,處理資料實體與資料庫的對應。主要的功能包括透過實體資料模型(Entity Data Model)匯入現有資料庫的資料表,再以此為基礎,設定資料表之間的關聯,然後經由概念模型(Conceptual Model)處理資料表與資料實體兩者的對應。
這些作法的背後,實際上底層是透過3個XML檔案記錄資料實體、資料庫結構及兩者之間的對應關係。不過,Visual Studio的操作介面,將透過圖形化的設計工具簡化對應的難度。
概念模型與ER Model不同
微軟所謂的概念模型,與過去設計資料庫架構常見的ER Model(Entity Relationship Model,實體關係模型)並不相同。
ER Model以圖形化的方式,描述實體資料表之間的一對一、一對多或多對多關係,是屬於實體的資料庫模型。而概念模型則貼近系統分析階段的思維,以業務的角度看待資料實體。
從這裏也可以看出物件導向與資料庫設計理念的不同之處。
資料庫設計時,為了避免同樣的資料重複存在於多個資料表,造成空間的浪費及維護的困難,所以必須歷經正規化過程。
例如員工基本資料包含親屬資料,但設計關聯式資料庫時為了正規化,親屬資料可能被拆出來,成為另一個資料表,而兩者透過主鍵(Primary Key)和外部索引鍵(Foreign Key)建立一對多關係。
使用ER Model就會是兩個資料表透過一對多關係連結,而進入概念模型之後,就物件導向的觀點,將是以一個資料實體代表員工,其中會有一個屬性是親屬資料的集合。而在概念模型的背後,是員工這個資料實體,一對多地對應到資料庫的員工資料及親屬資料兩個資料表。
|
.NET Framework 3.5 SP1因應SQL Server 2008推出的新功能 |
| 支援空間資料類型與相關函式 SQL Server 2008不但可儲存地理空間的經緯度,並提供空間函式(.NET內建),以本圖為例,開發者可透過SQL指令查詢與微軟園區交錯的道路,若是再與Google Map或Virtual Earth結合,即可提供地圖服務。
ADO.NET Data Services支援REST ADO.NET Entity Framework
|
LINQ─提供統一的資料存取方法
LINQ提供統一的資料存取方法
微軟的另一個物件導向資料存取機制──LINQ,其實是今年初.NET Framework 3.5即推出的存取技術,SP1的更新主要是因應ADO.NET Entity Framework,而推出LINQ to Entities。
LINQ設計的目的,是希望解決開發者需要熟悉多種資料存取模式的麻煩。由於開發者需要處理的資料型態,越來越複雜,而且混合使用的趨勢日益明顯。例如應用程式需要存取檔案,而檔案的中介資料常常是以XML格式描述,再加上應用系統需要以資料庫記載人員與權限相關資訊。
就這個例子看來,開發者所面對的資料型態,除了結構化的關聯式資料,還包括半結構的XML及非結構化的文件和影音檔案。
而用以操作這些資料型態的類別物件各有不同:資料庫用ADO或ADO.NET;XML用XML DOM(Document Object Model);存取檔案用IO。除此之外,查詢語法也不一樣:存取SQL Server資料用T-SQL;存取XML,用Xpath;存取檔案,用類別的屬性。因此開發者撰寫程式時,往往需要熟悉多種資料存取模式。
事實上,無論是關聯式資料、XML或檔案,有一個共通特徵──都是物件集合。
LINQ的出發點,是提供操作物件集合統一的模式,未來只要是集合的物件,都可以利用LINQ統一操作。也就是說,開發者只要熟悉一種語法,就可以操作各種集合物件,背後由.NET Framework根據集合物件的種類,自動產生對應的語法。
這麼做的好處,除了.NET Framework可以用多執行緒處理集合,通常會比較有效率之外,也可保有一致性,無論存取XML、資料庫、DataSet或檔案,所使用的LINQ查詢語法是統一的,因此開發者不需要了解什麼是XML DOM、T-SQL、DataSet的Method和Property,轉而交由LINQ產生對應的語法。
|
LINQ的用法與架構圖 |
|
| 過去開發者必須根據不同的資料型別,撰寫不同的查詢陳述式,LINQ的目的是希望提供開發人員一致性的資料存取方法,不用再學習各種資料型別的存取方法。
|
|
![]() |
![]() |
| LINQ以一致性的方法存取各類的資料 以上三段程式碼,分別是以LINQ存取XML、資料庫及DataSet,可以看出透過LINQ可使用一致性的方法,存取不同類型的資料。 |
|
不過目前LINQ存取資料庫有一個關鍵的限制,是現階段微軟只推出LINQ to SQL,而它是針對SQL Server的Provider,而其他資料庫的支援,仍待協力廠商開發對應的LINQ Provider。
|
LINQ to SQL vs. 傳統資料庫開發 |
![]() 使用LINQ to SQL比傳統SQL開發模式簡潔且不易出錯 左右兩圖同樣是從Production資料庫的Product、ProductModelProductDescriptionCulture及ProductDescription等3個資料表,查詢符合條件的資料,並顯示在畫面上。使用LINQ與傳統結合SQL指令開發模式的差別是:LINQ程式碼29行,而搭配SQL指令則需45行。 而且SQL指令若是敲錯,開發者需自行除錯;而LINQ將欄位轉換成物件的屬性,Visual Studio 2008提供Intellisense機制,透過Visual Studio的提示功能,較不易出錯。 |
LINQ結合Entity Framework,可強化本機查詢
.NET Framework 3.5 SP1新增的LINQ to Entities,是為了配合ADO.NET Entity Framework,提供存取Entities的能力。
因為ADO.NET Entity Framework必須依賴資料庫的查詢能力,所以當開發者執行實體查詢語言(Entity Query Language),自資料庫得到一堆物件暫存於本機記憶體之後,可以運用LINQ To Entities把資料庫回傳的結果,作更進一步的新增、刪除、修改及查詢。
例如ADO.NET Entity Framework取得100筆員工資料實體,若要再找出性別為女的資料,逐筆搜尋是比較辛苦的方式,藉助LINQ to Entities就可以直接下條件,篩選出符合的資料。
懂物件導向資料設計的人才,才能善用ORM
由上面的描述可以得知,LINQ著重的方向,是以統一的方法存取各類資料型態;而ADO.NET Entity Framework是微軟為了結合資料庫存取與新式物件導向模型,所推出的ORM解決方案。
不過,針對兩者交集的資料庫存取部分,適合使用LINQ to SQL或者ADO.NET Entity Framework的時機到底為何?
事實上,LINQ並沒有很細緻的對應能力,因為它並不是專門用來解決關聯式資料庫與物件對應的方案,所以針對關聯式資料庫,它只能做到一對一的對應。
一般看來,由於LINQ to SQL針對物件與資料表的對應,只能做到一對一關係,所以如果要處理一對多或多對多的對應,就只能選擇ADO.NET Entity Framework。
負責教授SQL Server的資深講師胡百敬說:「如果開發者不想面對物件導向化的資料實體,希望了解資料庫的結構,則可以選擇LINQ to SQL。」
在資料庫中的資料表不多的情況下,開發者是可以清楚掌握資料庫結構的。但如果是一套ERP,有成千上萬個資料表的話,開發者可能會只希望看資料實體,而忽略資料庫真正的設計架構,就適合ADO.NET Entity Framework。
不過,未必是越抽象就越好,微軟開發工具暨平臺推廣處應用架構技術資深經理李匡正提醒:「系統分的層次越多,表示架構越大。那麼就需要有專人負責調校。」資料庫與物件導向的關聯,會衍生出複雜的對應與繼承關係,所以企業必須要具備懂得物件導向資料設計的人才,負責處理物件與資料表的對應,開發者才可能只專心在處理商業邏輯的部分。
T-SQL仍是DBA與開發者必學的基礎
自從LINQ及ADO.NET Entity Framework問世以來,胡百敬最常被詢問的是──到底要學SQL語法?還是LINQ to SQL?還是ADO.NET Entity Framework?
他認為,.NET開發者確實可以只學LINQ而不管SQL,把所有資料存取的行為通通改用LINQ處理。但是資料庫程式開發又有人是負責撰寫預存程序(Stored Procedure),他們還是必須要學習SQL語法。
李匡正分析:「嚴格講起來,如果有好的ORM解決方案,資料庫開發者確實可以不用學SQL。」過去的資料庫存取確實是很複雜的工作,不過開發者已經習慣了。
雖然T-SQL一點也不物件導向,但是結構化查詢語法很接近人類自然語言,非常地簡單、易學也易懂,所以開發者不用懂C#、VB.NET等程式語言,光看SQL語法,也猜得出來處理的工作類型。他說:「所以就現階段的開發習慣,SQL還是必學的基礎。」尤其是資料庫管理者,如果在SQL Server伺服器端,沒能善用T-SQL的話,根本無法有效存取。
至於有沒有必要跟隨微軟技術發展的腳步,學習LINQ和ADO.NET Entity Framework?李匡正認為:「要回歸到開發團隊在思考資料存取時,是不是使用物件導向的方式。」無論LINQ或ADO.NET Entity Framework,都提供能與物件導向模型結合的查詢能力。
習慣用物件思考、希望物件導向觀念與關聯式資料庫平順整合的人,可以嘗試學習新的查詢語言。如果不是,其實T-SQL也夠用的,開發者還是可以用老方法撰寫資料庫存取的應用。支援比SOAP更簡單的REST存取Web Services
.NET Framework 3.5 SP1另一個重要的更新,是新增ADO.NET Data Services,提供比SOAP通訊協定更簡潔的REST模式,讓開發者可以利用HTTP內建的GET、POST、PUT及DELETE讓資料庫執行新增、刪除、修改及查詢等資料存取行為,再以XML或JSON格式回傳結果。
以REST存取資料有它的實用性。雖然WS-I定義的Web Services通訊協定是SOAP,但在Web 2.0的時代,其實只有IBM、微軟、SAP、Oracle等企業級的大廠,提供SOAP API,其他如Google、Amazon、eBay、Yahoo等都是使用REST存取資料。
原因在於SOAP考量到安全性、授權、可信賴度等問題,於是XML封包比較複雜。而REST使用HTTP、URI、XML和HTML等現行的協議和標準,以URL表達資料的存取行為,相形之下簡單易懂。例如:
http://www.ithome.com.tw/customer/add/?id=3?name=tom#
就可以新增一筆ID=3,姓名為Tom的客戶資料至資料庫。
微軟考量到Web開發者會有嚴謹和簡潔兩種不同的設計需求,於是在.NET Framework 3.5 SP1推出ADO.NET Data Services,提供比較簡單的存取介面,讓Web Services的應用可與REST及JSON結合。
FileStream資料格式,儲存檔案的中介資料
除了.NET Framework的更新,SQL Server 2008也允許使用者自訂資料型態。不過,一般而言,大部分的開發者會懼怕.NET程式放進SQL Server,所以在企業應用裡比較少有自訂資料型態的情況。
不過根據統計,現今只有不到30%的資料儲存在資料庫,另有70~90%的圖形、影音、X光檔案、Office文件等非結構性資料,都存放在資料庫之外。因此微軟在SQL Server 2008,加入不少新的資料型態,例如FileStream、Geography、Geometry等。
FileStream資料型態,允許使用者輸入檔案的中介資料,並在SQL Server中定義存放檔案的實體目錄,那麼後續新增資料時,檔案就會自動儲存在指定目錄底下。
也就是說,檔案仍然存放到檔案系統中,並沒有進入資料庫,SQL Server儲存的是中介資料。
那麼,使用FileStream的用意在於:
1. 維持交易一致性:檔案與資料的新增、修改、刪除,由SQL Server作交易管理,以維持資料的一致性。所以使用者新增一筆包含檔案的資料,卻因意外狀況而復原(Rollback)時,SQL Server 2008會把新增的檔案刪除;更新(Update)資料內容時,相對應的檔案也保存新的版本。
2. 便於備份與還原:資料庫管理者執行資料的備份(Backup)與還原(Restore)時,相關檔案也會一起備份與還原。
3. 安全性:可與資料庫套用相同的安全、交易、備援的模式處理資料。
4. 檔案大小不受限於2GB:儲存在SQL Server 2008內的大型資料,有2GB的限制,但透過FileStream置於檔案系統就不會受限於資料庫。
|
影音、圖檔缺乏專屬索引,置於檔案系統較適合 |
| SQL Server 2005由於沒有FileStream資料格式, 仍可運用V a r B i n a r y ( M a x ) 或NVarChar(Max)等資料格式,將大型資料放進資料庫。事實上,SQL Server 2008也可以存放檔案,只不過有2GB的基本限制。 除了檔案大小的限制,胡百敬認為現階段多媒體檔案不適合儲存於資料庫的原因在於:「現在沒有針對影音與圖檔資料設計的特殊索引,所以儲存在資料庫,並沒有特別的好處。」每一種資料大量放入資料庫,主要的目的是希望可以很容易地新增、刪除、修改及查詢,所以關聯式資料必須結構化。 而許多資料的索引與一般欄位的B-Tree結構不一樣,如全文檢索是檢索結構、地理資訊則是階層式索引,而XML 也有特殊索引。 無論XML 、關聯式資料、地理資料以及全文檢索等。任何儲存於資料庫的資料格式,都需要專屬的索引結構。然而因為目前的資料庫,仍未針對影音與圖檔研發索引機制, 因此開發者在查詢時不能以「Select * where 影音欄位=某個圖案」找出所有符合條件的資料。 胡百敬舉例,曾有一家國外廠商展示獨家的技術,他們拍一段喬丹身著有Nike 字樣的衣服,在球場上跑的影音檔,當使用者針對這段影片搜尋「Nike」之後,喬丹的影像淡出,變成Nike在球場上跑。 如果這樣的索引技術在資料庫領域發展成熟,就值得把影音和圖檔放進資料庫,否則,反而是增加資料庫管理者的麻煩,不但占用資料庫的資源,還要處理備份和還原的工作。文☉李延華 |
空間資料型態提供多種計算函式
另一個SQL Server 2008新增的資料型態是空間資料,包括Geography及Geometry兩種。Geography儲存的是地理座標;而Geometry則是使用者自行設計的任意空間。
現階段的Web應用,顯示地理資訊時,搭配地圖是很常見的應用,更進階的用法,還包括計算距離、面積或者路線交錯點。
過去協力廠商的作法,在儲存經緯度的欄位上,是設定為浮點數資料格式,然後研發一套引擎,將浮點數轉換成X、Y座標。
SQL Server 2008提供了Geography資料型態,可以儲存點、線、多邊形、點的集合、線的集合和多邊形的集合,更重要的是,系統提供大量符合OGC(Open Geospatial Consortium,開放式地理空間協會)規格的空間函式,因此開發者可以直接用T-SQL語法計算距離與面積等,結合Google Map或Virtual Earth等地圖服務機制,就可以呈現圖文共茂的資訊。
事實上,現在只要在Google Map或Virtual Earth輸入地址,開發者就可以輕易取得經/緯度,後續點/線/面等空間計算,透過SQL Server 2008的函式就不是難事。
不過,由於目前Virtual Earth目前只支援英文,所以對於臺灣的使用者而言,使用Google Map取得經緯度是比較方便的途徑。
另一個要注意的事情是,目前Geography只支援二維空間,雖然有屬性可以記錄Z軸座標,但由於沒有高度相關的操作函式,所以應用在地理資訊上時,無法辨識高架橋或平面道路的差別。文⊙李延華
|
比較LINQ To SQL與ADO.NET Entity Framework |
||
| 資料存 取 技術 特性比較 |
LINQ To SQL | ADO.NET Entity Framework |
| 支援的資料庫 | 目前只有SQL Server 2000/2005/2008 | 針對主流資料庫都已準備對應方案 |
| 支援的物件集合 | 資料庫、XML、DataSet、檔案 | 目前只有資料庫 |
| 物件與集合的對應 | 只能一對一 | 可處理一對多、多對一及多對多的對應 |
| 繼承應用 | 無法使用繼承 | 可以使用繼承 |
| 報表與BI的應用 | LINQ沒有Model的概念,並非用來解決這類問題 | 保有未來與資料庫處理相關的能力 |
| 適合應用的層面 |
1. 需要操作XML、資料庫及檔案等多種資料型態的開發者 2. 存取行為單純,沒有一對多或多對多的應用 | 1. 熟悉物件導向2. 希望物件導向觀念與關聯式資料庫平順整合 3. ERP之類大型資料庫應用 |
| 資料來源:iThome整理,2008 年8 月 | ||
強化資料庫集中管理及延展性
SQL Server 2008加強集中管理功能,可將企業的多臺SQL Server主機,除了透過單一管理介面分群監控、管理,如果搭配新的原則管理,可根據管理需求設定限制條件,將這些作法統一部署至管轄的資料庫系統內。
在資料處理面,SQL Server 2008提供新的資料庫壓縮功能,讓檔案在I/O時皆以壓縮檔傳遞,以處理器資源換取I/O時間,藉此提升整體運作效能。
管理介面相較於SQL Server 2000,新版的Management Studio結合了Visual Studio開發工具,所包含的工具更多樣化,部分功能是由右鍵選單中獨立出來的,有些則是此版新添加的功能。財金資訊研發部高級工程師黃建隆認為,2008新的管理介面,雖然納入了許多管理工具,看起來有些複雜,但對於習慣SQL Server 2000或2005等系統的管理人員來說,要上手並不是很困難,當用慣了2008版的介面,反而會覺得舊有版本操作起來有些不方便。
管理資料庫時,可套用原則
SQL Server 2008採用了原則依據管理(Policy-Based Management)方式,它可以讓我們透過精靈,定義出一套規範,然後套用到特定物件上,如資料庫或資料表等,好讓資料庫系統符合「原則」的要求,例如資料表的命名規範,或是停用特定資料庫功能等。
在2005以前的版本,如果要關閉資料表上的特定功能,我們得要在每個表單上以管理物件(SQL Server Management Objects,SMO)調整;或是撰寫一支T-SQL程式,再針對個別表單逐一執行,才能完成這種條件式設定。當資料庫架構很單純時,個別設定或許不會帶來太多困擾,但如果要設定或修改的物件數量很多,那麼建立這種條件式規範,就變成了一項浩大工程。
上述的情況,在SQL Server 2008已經有更好的作法。我們可以在SQL Management Studio中啟動原則管理,先針對需要落實的規範制定一個原則,接著SQL Server 2008會先執行初步評估,以制定出來的原則去比對預備套用的表單或資料庫,藉此確認要套用的物件群,是否符合制定出來的原則。
在初步評估的結果中,精靈會提示資料庫中會觸發原則的物件,並以紅色警示符號告知有哪些物件沒有通過原則。此時,我們可以直接將原則套用到該物件上,好讓它符合先前訂出的規範。原則確認完畢後,我們可以排定原則評估模式,也就是執行原則判斷的時間點及處理方式。
要啟動原則評估的模式時間點分為4種,包含依照使用需求、依照時間排程、變更時記錄評估,以及變更時避免違規,其中依照使用需求模式為手動,另外3種則是自動化模式。
第一種可以讓管理人員依照需求,直接啟動評估原則。而依照時間排程,則是使用SQL Server Agent排定時間表定期執行;變更時記錄評估,代表依據原則的物件異動時,如果沒有符合原則定義,就會產生一個記錄資料,通知管理人員異動狀態;而所謂的變更時避免違規,會在物件變更時,先以資料定義語言(Data Definition Language,DDL)判斷這種結果是否符合原則,如果不符,就會避免這個異動。要注意一點,變更違規避免模式,需要具備執行DDL觸發程序(Trigger)的權限,這項伺服器組態如果停用,會導致此模式錯誤。
|
原則管理建立步驟 |
|
| 當我們要建立原則管理資料庫時,首先要指定Facet,也就是我們要評估的條件,像是DBMail等特定資料表功能。接著將選定的Facet建立一組布林運算式,藉此建立原則條件。再來選取要符合原則的資料庫元件,最後挑選要執行原則評估的方式,就能以制定好的原則規範特定物件。 | |
| 建立原則 | 1.選擇Facet:從SQL Server2008 內建的各項評估條件中,挑選我們需要 的。 2.建立原則 條件:將剛才選擇的建立一組布林預算式 ※注意:每項原則僅能包含一項條件。 |
| 確定原則目標 | 3.選擇目標:為建立好的原則指定要符合的資料庫元件,如資料庫、 資料表。 |
| 設定評估模式 | 4.設定評估模式:選擇原則評估的時機有4 ,包含:依需求、依排程、 異動時記錄Log、異動時避免違規。 |
集中管理多個SQL Server伺服器
有許多以SQL Server建置的資料庫系統,並不是僅僅建立在單一伺服器上,而是分別在許多實體主機中,在SQL Server 2008中,提供組態伺服器(Configuration Servers),可讓我們在Management Studio中,建立中央管理伺服器,再將所有需要統整的資料庫系統,加入管理群組中。如此一來,企業可藉由單一SQL Server管理介面,監控轄下所有資料庫伺服器。
將所有資料庫系統納入管理範圍後,企業可依照資料庫管理規範,建立多個群組,把轄下的每一個SQL Server歸類到不同群組中。如果管理上需要針對多個伺服器內的一些特定資料庫,可將它們加入相同群組,再於操作指令上選擇即可。
集合成群組的資料庫,除了便於管理,當我們要跨資料庫查詢資料時,也只要將目標資料庫指定為同一群組,再執行查詢語法,就能同時取得各別資料庫上的資料。相形之下,前代的版本如果要跨資料庫查詢,必須個別下達命令,再將結果整合為單一表單。
![]() 透過組態伺服器建立伺服器群組,除了能針對特定資料庫集中管理,亦可以群組為查詢目標,藉此達到跨資料庫查詢。 |
壓縮資料以減少I/O來增加效能
資料壓縮以往給人的印象,都是資料庫備份時執行的,主要的用意不外乎節省磁碟空間,而SQL Server 2008則藉由壓縮資料表及索引,增加查詢效率。
將資料壓縮後,啟動時不是會耗用更多處理器等系統資源嗎?為什麼會更有效率?微軟表示,將資料表壓縮,雖然在存取時,會耗用較多的處理器、記憶體等核心系統資源,但經過壓縮的資料,所占用的磁碟空間較少,依賴磁碟I/O的頻率也會降低,也就是以處理器效能換取I/O時間,加強整體查詢效能,特別是資料量大,占用磁碟容量較多的資料庫。
當我們建立資料壓縮時,可以選擇以「頁面(Page)」為單位壓縮,或以「資料列(Row)」為基準,當然,壓縮比會根據資料內容而有不同結果,通常以文字、數字為主的資料,得到的效果會比二進位資料較佳。在SQL Server 2008中,僅有企業版支援此功能。
新支援線上增加處理器
在硬體管理上,2005時開始可支援記憶體熱抽換,SQL Server 2008則增加了支援線上新增處理器的功能,能於資料庫系統不停機的狀態下,增加SQL Server使用的處理器數量。這個功能不只適用於具有處理器熱抽換的硬體主機,若我們將資料庫建立在虛擬機器上,當我們在實體主機上,新增處理器至這臺設備時,也能使用這項功能,讓資料庫系統取得更多處理器資源。
要使用這項新功能,除了硬體支援外,作業系統和資料庫管理系統的版本亦有限制,需使用64位元的Windows Server 2008資料中心版,或是Itanium平臺上的Server 2008企業版,並搭配SQL Server 2008企業版,才能支援這項新功能。文⊙林郁翔
|
透過鏡像資料庫比對,快速回復受損的資料表 |
| 從SQL Server 2005開始,IT人員可以在上面建立鏡像資料庫,在交易記錄更新時,會同步更新鏡像資料庫的內容,萬一資料庫系統損毀時,我們就能將原有的資料處理轉移至鏡像資料上,延續資料庫系統正常運作。
到了SQL Server 2008,鏡像資料庫加強了資料即時復原的功能,在具有鏡像資料庫及見證伺服器的架構下,當SQL Server2008發現資料表出現異常時,就會透過見證伺服器,將交易記錄轉移到鏡像資料庫上,即時自動修復資料表。在我們的實際觀察,資料表重建的時間非常短暫,當初次資料查詢語法回傳資料庫損毀的結果後,於第二次執行查詢指令時,伺服器就 透過組態伺服器建立伺服器群組,除了能針對特定資料庫集中管能夠將原本的資料即時回傳。文☉林郁翔 |
視覺效果與執行效能皆大幅改善
新版Reporting Services在內容的呈現及執行效能方面,都有不小的改進。由於微軟買下合作廠商Dundas的元件技術,因此在報表設計與呈現上,爆增許多酷炫的圖表元件,算是視覺效果的大躍進。
效能方面,Reporting Services不再依賴IIS,使得效能調校工作變得更為單純,並允許管理者調整使用資源的分配。再者,在大型報表的分頁呈現上,2008版調整引擎的處理程序,可以逐頁產出報表,不需要等到所有的報表都處理完成,才顯示第一頁的內容。此外,報表可以轉成Word格式,方便使用者修改與應用。
結合Dundas的技術,提供炫麗的圖表元件
新版的Reporting Services在視覺呈現有很大的突破。過去文字的變化及圖表元件的選擇有限,圓餅圖、長條圖、折線圖等,只能滿足企業基本的需求。在微軟買下Dundas公司的報表元件技術之後,2008版提供許多專業的圖表元件。
在2008版,微軟首先提供圖表(Chart)和量測軌(Gauge)兩個模組,包含雷達圖、甜甜圈、溫度計、紅綠燈及儀表板等,甚至可以客製儀表板元件的背景。
這些酷炫效果強化了報表的豐富性,微軟預計在下一個Service Pack,再增加地圖(Map)、日期(Calendar)及條碼(Barcode)等元件。
另一項視覺上的改進是,報表上所有的文字方塊都支援Rich Text。之前Reporting Services儲存格內的字型、色彩及底色是統一格式的,而2008版的每一段文字呈現,都可以自訂像設定Word文件的內容一樣,選擇不同的顏色、底色與字型。
Tablix增加表格設計的彈性
除了視覺呈現的改進,在表格的設計上,Reporting Services也結合資料表(Table)與矩陣(Matrix)的優點,推出Tablix元件。
過去資料表或矩陣,都有一些局限。資料表的欄位固定,資料筆數則根據資料量自動成長;而矩陣則可以動態增加橫軸的數量或縱軸的數量,例如依年份或營業據點彈性擴增,然而階層式的資料展現,排版上比較不美觀。
這些元件以前是各自獨立,適用的狀況與限制也不同,到了這一版的Reporting Services,則採用共通的Tablix物件去呈現資料表、矩陣及清單,讓報表的橫軸或縱軸,都可以動態地產生複雜的群組。
所謂「動態」是指相同群組的資料可以選擇縮合,例如同樣是腳踏車的群組列表。
此外,也可以作不同條件的並排呈現,例如,業績的分析,前3欄是依年份排列,後10欄改以營業據點排列。如此一來,企業報表的設計,就有更多的彈性。
脫離IIS,效能調校工作更為單純
在系統管理上的變化,是Reporting Services脫離IIS,成為可以獨立運行的報表系統。過去Reporting Services依存在IIS之下,所以當效能不彰時,管理者未必知道是哪一方出了問題。
微軟於是在2008版Reporting Services做了架構上的簡化,利用作業系統的HTTP.sys做為HTTP協定的Listener,然後又把.NET功能放在SQL Server Common Language Runtime。使用者同樣透過Report Manager,即可連上Reporting Services。
唯一的限制是,舊版的Reporting Services不能與新版並存,因為在網址相同的情況下,URL的優先順序將是以2008版為優先。
此外,亞洲資採技術總監尹相志表示:「2008版的報表引擎也幾乎重寫,可以彈性地管控資源。」舊版Reporting Services在完成報表之後,並不會馬上釋放系統資源,2008版已加上資源的管理程式,所以系統會自動釋放資源。
而且管理者可以設定各項資源使用的門檻,例如最多只能占用處理器或記憶體50%的資源,或者設定固定時間後執行一次資源的回收,因此管理者可以做更彈性的資源配置。
分頁引擎大幅改寫,提升使用體驗
針對多頁數的報表內容,先前的使用者可能會覺得Reporting Services製作巨量報表時的效能不夠理想。Reporting Services呈現的作法改變,微軟表示過去的作法是產出所有的報表之後,再顯示第一頁的內容, 2008版在這方面做了調整,Reporting Services在產出大型報表時,改為完成一頁就丟出一頁的方式。尹相志試用新版的機制後說:「第一頁出現的速度比2005版快很多。」這部分的改良是影響使用者操作體驗的重要因素。文⊙李延華
|
Reporting Services新增多款報表元件 |
| 微軟買下合作夥伴Dundas 的技術,推出圖表(Chart)及量測軌(Gauge)兩類圖表元件,包含多種樣式,開發者可突破圖形的限制,例如只有一兩個數字特別突出的圖表,可以使用截斷圖;溫度資訊可選擇溫度計;雙軸圖則將單一元件分為內外兩圈,呈現兩種數據。透過多樣化的元件,企業可達到過去難以呈現的效果。(資料來源:Dundas,iThome整理,2008 年8 月)
|
效能改善是主要訴求
對於資料倉儲的建置,以及商業智慧系統的運用,整體而言,SQL Server 2008的主要改變是增加處理的效能。
資料庫的資料要整合和轉換,在SQL Server 2000之前,微軟提供了資料轉換服務(Data Transformation Services,DTS),到了SQL Server 2005時,取而代之的是全新開發的整合服務(SQL Server Integration Services,SSIS)。在SQL Server 2008,整合服務雖然在使用介面上沒有新增功能,乍看之下,和SQL Server 2005差不多,但是據微軟表示,效能已經比先前提升了不少。
要將資料擷取出有價值的資訊,便需要適當的分析方法。SQL Server 2008加強先前版本就存在的分析服務,增加演算法及增益集等功能;改良後的Cube建置精靈也提升效能。這些改變都讓SQL Server 2008分析服務,較以往版本更加靈活、符合導入者的需求。
從資料轉換服務邁入資料整合服務
自SQL Server 7.0版首次出現的資料轉換服務(DTS),讓不同資料來源與目的的資料,透過ODBC與OLE DB來互相轉換。雖然搬移資料的工具在SQL Server中就有5、6種,但是它們的搬動來源與目的都是以SQL Server為主,而DTS之所以稱為資料轉換服務,便是它主要目的不只是資料搬移,還可以轉換。
SSIS最大的變革是將控制流程與資料轉換,分成兩大引擎來處理。與DTS僅能處理簡單的資料轉換相比,資料流程引擎分開,可以提供更明確清理(Cleaning)、彙總(Aggregation)、分支與合併(Merging)、以及複製(copying)等資料轉換功能。
以往DTL僅能以C/C++或ActiveX Script語言,來自動化簡單的資料轉換工作,並不支援C#及VB.NET。而SSIS以資料流程提供了較佳的延伸性,並且可以接收或載入多種資料來源,如ADO.NET、OLE DN、ODBC、純文字檔、Excel以及XML。
跨越單處理器的拘束,提升效能
SQL Server 2008的SSIS較前一版增強的部分,在於效能的提升。例如,過去的資料執行管道,不能跨越兩個處理器,而SSIS 2008可以在多處理器平臺上,將工作負載分給兩個處理器,因此執行大型程序時,運用硬體資源的做法上較有效率。
此外,以Lookup為例,在SQL Server 2008已改善這功能的效能。這是一個在SSIS上搜尋取得相關資訊的功能,例如從EmployeeID搜尋EmployeeName來取得相關的資料集,這項機制在SSIS經常使用,且可以處理龐大的資料量。
分析服務提升處理效能,新加入了設計工具輔助開發
微軟的分析服務(Analysis Service,AS),多用於線上分析處理(OnLine Analytical Processing,OLAP),並提供資料採礦(Data Mining)的資料來源。它能從資料倉儲的事實表格與維度表格中,擷取訊息來建立多維度結構模型。
微軟在SQL Server 7.0、2000時就內建了線上分析處理,在SQL Server 2005的時候,發表了新一代的線上分析處理以及資料採礦的技術:分析服務,且在SQL Server 2008持續延用並加強。
SQL Server 2008的多維度架構模型(Cube)精靈,能幫助使用者輕鬆的開發,並且簡化分析基礎結構,進而建立效能較佳的解決方案。為因應使用者階層結構的深度與計算複雜度,分析服務大幅改善集區計算(Block Computations)的處理效能。而回寫(Write Back)的功能,讓SQL Server 2008的分析服務,可以不再需要查詢ROLAP分割才能回寫,可直接對MOLAP啟用回寫,增強使用者在分析系統中的回寫應用功能,無需犧牲傳統的OLAP功能。
資料採礦以增益集的方式整合在Office上,拓展一般使用者應用
原本在SQL Server 2000、2005時,分析服務就能夠以Excel呈現,到了2008這一版,你還可以透過適用於Office 2007環境的SQL Server 2008資料採礦增益集,額外用Visio呈現與處理資料採礦的內容。換句話說,員工能透過一般文書作業環境,即可使用與操作資料分析系統,方便性增加不少。
在Excel 2007裡面,你可以使用資料採礦個人端的軟體Data Mining Client for Excel和資料表分析工具Table Analysis Tools for Excel。前者能協助以專案的方式,建立、管理SQL Server 2008的分析服務及資料採礦模型;後者則在讓使用者在Excel的工作表當中,即可使用分析服務與資料採礦。如果想在Visio上繪製相關的圖表,可透過適用於 Visio 的資料採礦範本Data Mining Templates for Visio,就能直接做出決策樹、回歸樹、叢集圖表及相依性網路圖的圖解。
![]() 我們可以在Excel上連結至SQL Server 2008,直接在Excel上使用分析服務及資料採礦的功能。 |
可做交叉預測,提升長期預測的準確性
根據資料統計趨勢來預測,是分析服務中的一項功能。在SQL Server 2000的分析服務內建了決策樹與群集兩種演算法,在SQL Server 2005與2008中,還增加至9種演算法。
SQL Server 2008中,微軟的時間序列演算法使用了ARTxp與另一個新增的演算法:ARIMA。ARTxp會預測序列中下一個可能的值,進而做出短時間的預測。ARIMA是一種針對長時間預測做了最佳化的演算法,SQL Server新版上的時間序列演算法在分析模型、做出預測的時候,會混合使用這些演算法,將相同的資料上套用這兩種演算法。融合兩種演算法,並針對數據變動與時間關係產生最佳預測。
ARTxp與ARIMA可以由使用者選擇使用。對於短期預測可以只使用ARTxp;長期預測只使用ARIMA;或者使用預設的混合演算法以符合自己的預測需求。文⊙林柏凱
熱門新聞
2025-12-12
2025-12-12
2025-12-12
2025-12-12
2025-12-12
2025-12-12







