程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用SQL Server 2008管理非結構化數據。

使用SQL Server 2008管理非結構化數據。

編輯:關於SqlServer
google_ad_clIEnt = "pub-6430022987645146";google_ad_slot = "6984174763";google_ad_width = 160;google_ad_height = 600;



google_ad_clIEnt = "pub-6430022987645146";google_ad_width = 160;google_ad_height = 600;google_ad_format = "160x600_as";google_cpa_choice = "CAEaCIxsmjE5mLWmUDRQHVAFUAdQLFAMUANQnQJQL1AU";google_color_border = "336699";google_color_bg = "FFFFFF";google_color_link = "0000FF";google_color_text = "000000";google_color_url = "008000"; 我的另一個不錯的博客,東東還多些!http://onlyzq.cnblogs.com 

var alimama_pid="mm_10096109_566393_892186"; var alimama_titlecolor="0000FF"; var alimama_descolor ="000000"; var alimama_bgcolor="FFFFFF"; var alimama_bordercolor="E6E6E6"; var alimama_linkcolor="008000"; var alimama_bottomcolor="FFFFFF"; var alimama_anglesize="0"; var alimama_bgpic="0"; var alimama_icon="0"; var alimama_sizecode="11"; var alimama_width=760; var alimama_height=90; var alimama_type=2; 


microsoft SQL Server™ 2008提供了一個靈活的解決方案,使得可以存儲非結構化數據,並將它與關系數據合並起來建立使用整個公司范圍內的數據的綜合的解決方案。
  1. 導言
  在最近幾年,個人和公司創建和存儲的數字數據的數量急劇膨脹。過去,企業使用計算機系統和數據庫以結構化格式例如關系表或固定的格式文檔來存儲它們的大部分商業數據,軟件應用程序使用這些結構化數據存儲來執行商業操作。然而在現今,公司的很大一部分數據是存儲在使用功能強大的工具例如Microsoft® Office Excel®和Microsoft Office Word所創建的文檔中的,而數字攝影、文檔掃描、視頻產品和音頻格式進一步的擴大了用於商業數據的非結構化數據格式的范圍。此外,在存儲硬件和內存上的成本的顯著降低極大的影響了存儲在計算機中的數據的數量和類型,並導致產生了新一代的商業應用,這些商業應用合並了傳統的關系數據結構和非結構化數字內容。數字內容的豐富意味著公司現在正在試圖能夠在企業范圍內管理關系數據和非結構化數據,並需要一個能夠全面滿足關系數據存儲和非關系數據存儲,同時降低管理和建立使用這些數據的應用程序的成本的解決方案。
  例如,考慮一個保險索賠應用程序在過去的15年裡是怎樣改變的。15年前,這個應用程序一般維護一列以簡單的行和列來存儲的保險索賠記錄。而今天,一個保險索賠應用程序更趨向於管理一組包括圖片、照片和文檔的索賠記錄。它還可能需要以基於XML的格式來顯示索賠數據,以此來與其它的系統集成,並且它還可能包括更高級別的功能像空間可視化、報表和分析。
  SQL Server 2008提供了一些超出傳統的數據庫系統、向能夠存儲、管理和查詢所有類型的數據的數據平台發展的功能;包括非結構化二進制數據、XML和空間數據。這篇白皮書集中講述了非結構化數據,並描述了使用SQL Server 2008的存儲、管理和使用非結構化數據的選項。
  2. 商業推動非結構化數據
  大多數公司依賴於存儲在數據庫中的關鍵業務數據,並在存儲和操縱這些數據的數據管理系統和應用上投入很大。然而,日漸增長的業務產生了大量的數字圖片、文檔視頻和其它多媒體格式的非關系和非結構化數據——這些新的數據格式迅速成為正式的和非正式的商業處理的一個關鍵組成部分,它們與現有的商業應用程序集成在一起,遵守調整要求,或者簡單的提供了一個更加豐富的用戶體驗。
  例如,在下面這些商業情景中:
  · 一個保險公司需要存儲政策文檔和按照要求處理來提取這些文檔。
  · 一個在線的零售商需要存儲用於在一個電子商城中顯示它的產品的視頻膠片。
  · 一個電話系統需要保存語音信息的音頻流以便他們可以遠程傳送。
  · 一個廣播台需要制作一個在它的網站上用於下載的並可以搜索的廣播庫。
  · 一個操作需要存儲文檔的圖片形式的電子拷貝,並能很容易的獲取與一個單獨的客戶端或例子相關的文檔。
  · 一個建築合伙企業需要存儲和提取數字計劃和其相關聯的客戶端數據。
  · 一個需要轉換和保存大量的現有的文件和分類內容的庫,用於在一個數字搜索工具中進行檢索和使用。
  這些是全球商業中使用的非機構化數字數據的一些新的例子;並且隨著創建數字內容變得越來越容易,公司也在尋找新的創新方式來使用這個數字內容來改進或擴展它們的商業能力。
  2.1 對於非結構化數據的挑戰
  當新的非結構化數據的類型在不斷增加的同時,數字內容帶來了很多好處和商業機遇,但是它同時還帶來了一些針對需要合並這些非結構化數據源到計算機應用程序和服務中去的系統架構師、管理員和應用程序開發人員的挑戰。
  存儲非結構化數據的挑戰
  要考慮的第一個挑戰,同時也可能是最明顯的挑戰,就是非結構化數據的大量存儲。你值得擁有一個使你可以靈活地滿足存儲非關系數據、同時將成本和管理費用降低到最小的特定需求的系統。當你計劃存儲非結構化數據時你要考慮的主要問題包括:
 · 存儲你的非結構化數據的成本,不只是包括硬件成本,還包括管理成本。
  · 非結構化數據的物理存儲位置,例如文件服務器和網絡附加存儲(NAS)設備。
  · 管理持久力和存檔政策。
  · 將非結構化數據文件和相關聯的關系數據集成起來,並維護結構化數據源和非結構化數據源間的事務一致性。
  · 將與維護關系數據和非結構化數據相關的管理費用降低到最小。
  · 性能和可擴展性。.
  · 保護非結構化數據,並確保相關的關系數據的一致性。
  · 非結構化數據的可用性和可恢復性。
  使用非結構化數據的挑戰
  還有關於存儲非結構化數據的相關問題,你必須考慮數據將怎樣被你公司的應用程序使用。一些具有代表性的要考慮的事項包括:
  · 在建立使用結構化數據和非結構化數據的應用程序時遇到的開發挑戰包括編寫代碼來創建、提取、更新和刪除非結構化數據,並維護相關聯的關系數據源和非結構化數據源間的事務一致性。
  · 索引和搜索非結構化數據。
  · 顯式提取可用的元數據(例如從表格區域或文件屬性),並將它顯示給用戶。
  · 將文檔內容轉換為可以搜索和查詢的格式(例如,轉換音頻文件到文本形式,從而可以被數據庫查詢或純文本引擎檢索到。)
  2.2 在SQL Server 2008中的非結構化數據的目標
  非結構化數據面臨的相關挑戰反應了那些開始為數字內容建立解決方案的公司所關注的一些常見情況:
  · 管理多個不同的平台來處理關系數據和非關系數據,從而導致不必要的復雜性。
  · 這些分散的數據存儲使得對於開發人員來說增加了復雜度,並提高了經理的部署難度。
  · 開發人員和數據庫管理員缺乏在這些不同的數據類型中可以使用的服務。
  SQL Server 2008旨在解決這些問題,通過:
  · 降低管理這些不同的數據類型的成本。
  · 簡化使用關系數據和非關系數據的應用程序的開發工作。
  · 將現在只用於關系數據的功能擴展到非關系數據。
  3. 在SQL Server 2008中存儲非結構化數據
  依賴於關系數據和非關系數據的應用程序通常使用下面的三個架構中的一個:
  · 數據庫中的關系數據以及文件系統和文件服務器上的非關系型二進制大對象(BLOB)。
  · 數據庫中的關系數據和只用於BLOB的存儲中的非關系數據。
  · 數據庫中的關系數據和非關系數據。
 每一個方法都有其優劣之處。例如,在文件服務器或只用於BLOB的存儲中存儲非結構化數據會降低每GB所花費的費用,但是通常會增加管理和建立應用程序的復雜性,因為應用程序不得不維護包含BLOB數據的數據庫和單獨的系統中的記錄以及這些記錄所關聯的對象間的完整性。另一方面,在數據庫中存儲BLOB數據方便地集中了數據存儲,但是通常帶來了更高的成本並會導致性能下降。
  SQL Server 2008推出了兩個用於存儲BLOB數據的新功能:
  · FILESTREAM:是一個你可以在varbinary字段上設置的屬性,以便數據存儲在文件系統中(因此受益於它的快速流式功能和存儲能力)但是直接在數據庫的上下文中管理和訪問。:
  · 遠程BLOB存儲:一個客戶端應用程序編程接口(API),它降低了建立依賴於一個用於BLOB的外部存儲和一個用於關系數據的數據庫的應用程序的復雜性。
  此外,SQL Server 2008繼續通過varbinary 數據庫類型支持標准的BLOB字段。
  3.1 SQL Server BLOB
  SQL Server 2005推出了varbinary(max)數據類型,它使得你可以在一個SQL Server字段或變量中存儲最大為2,147,483,647字節的大型二進制數據值。當使用修訂過的max時,你可以通過設置large value types out of row表選項來控制數據怎樣存儲在物理的表的數據頁面中。當這個選項設置為ON時,所有的值存儲在單獨的鏈接頁面上,而在這個記錄的數據頁面上會保存一個指向這些頁面的16位的根指針。當這個選項設置為OFF時,最大為8000字節的值存儲在這行的數據頁面上,而更大的值存儲在單獨的鏈接頁面上。
  盡管新的FILESTREAM 和遠程BLOB能力是設計用來提供比標准的varbinaryBLOB字段更好的性能和可管理性,但有一些場景是使用varbinary 字段更適合的(具有代表性的是當BLOB平均規模小於250 KB的時候。)
  3.2 FILESTREAM 屬性
  在SQL Server 2008中,你可以將FILESTREAM 屬性應用到一個varbinary 字段,然後SQL Server 為這個字段在本地NTFS文件系統上存儲數據。在文件系統上存儲數據帶來兩個重大的優勢:
  · 性能可匹配文件系統的流性能。
  · BLOB 規模只受文件系統的空間規模限制。
  然而,字段可以像SQL Server中的其它任何BLOB字段一樣來管理,所以管理員可以使用SQL Server的可管理性和安全功能來集成BLOB數據管理和關系數據庫中的其它數據——而不需要單獨管理文件系統數據。在SQL Server中將數據定義為一個FILESTREAM字段還確保了在數據庫中的關系數據和存儲在文件系統中的非結構化數據在數據級的一致性。FILESTREAM字段的使用和BLOB字段一樣,這意味著維護操作的完全集成(例如備份和恢復)、和SQL Server安全模型的完全集成、以及純事務的支持。 

  應用程序開發人員可以通過兩個編程模型中的一個來使用FILESTREAM數據;他們可以使用Transact-SQL就像對待標准的BLOB字段一樣的來訪問和操縱數據,或者他們可以使用Win32流式API和Transact-SQL事務型語義來確保一致性,這意味著他們可以對FILESTREAM BLOB使用標准的Win32讀/寫調用,這和他們與文件系統上的文件交互時所做的一樣。
  在SQL Server 2008中,FILESTREAM 字段只可以將數據存儲在本地磁盤空間,並且FILESTREAM 字段不支持像簡單加密和以表為值的參數等功能。此外,你不能在數據庫快照或數據庫鏡像會話中使用包含了FILESTREAM字段的表,不過支持日志傳送功能。
  3.3 遠程BLOB存儲API
  盡管FILESTREAM 屬性將文件系統的性能和可擴展性與在數據庫中存儲BLOB的可管理性和數據一致性結合起來,但是通常會出現在像EMC Centera、Fujitsu Nearline、Microsoft Windows®這樣的文件服務器或其它任何只用於BLOB的存儲的系統中存儲BLOB更有效或成本利用率更高的場景。在SQL Server 2008中的遠程BLOB存儲API通過提供一個基於提供商的架構使得可以更容易的將只用於遠程BLOB存儲解決方案和你的數據庫中的關系數據集成起來,這個架構使得你的應用程序可以使用任何BLOB存儲而不需要特定的BLOB存儲功能或代碼。
 在架構方面有兩個關鍵部分: 

  · 客戶端庫:它是一個能夠使得任何提供商和你的BLOB以及關系數據一起使用的組件。客戶端應用程序使用客戶端庫和任何適用的提供商庫來插入、更新和查詢存儲在BLOB中的數據和數據庫中存儲的數據。 
  · 供應商庫:它是一個由BLOB存儲供應商提供的具有代表性的組件(盡管它可以定制開發)。供應商庫實現了一個常規接口,提供了一組標准的服務,這些服務抽象了對這個特定的存儲執行Create、Fetch、Enumerate、Delete和Garbage Collect操作的細節。. 
  當你的數據庫BLOB需要存儲在與數據庫不同的服務器上並需要和其它系統協作時,遠程BLOB存儲API(Remote BLOB Store API)是一個理想的選擇。它對BLOB存儲沒有任何限制。任何提供遠程BLOB存儲提供商的系統或任何可以建立於遠程BLOB存儲提供商的系統都支持它。因為與BLOB存儲的交互細節被提供商庫抽象出來了,所以你可以改變存儲而不必改動應用程序,這帶來了很大的好處並且降低了開發人員和管理員的復雜度。Microsoft與業內的所有存儲供應商合作,以確保提供一個適當的供應商庫用於遠程BLOB存儲API。 
  使用遠程BLOB存儲API使你能夠靈活地使用不同的系統來管理關系數據和非關系數據。遠程BLOB存儲API通過鏈接級別的一致性維護了數據庫中的記錄與在外部存儲的BLOB之間的一致性。例如,如果你通過一個刪除語句從數據庫中刪除BLOB參照,系統將從存儲中刪除BLOB。然而,使用遠程BLOB存儲API不能提供隨著BLOB直接存儲到數據庫中而來的數據級別的一致性,要做到這一點你需要使用FILESTREAM或者varbinary。 
  3.4 比較BLOB的存儲選擇 
  下表比較了SQL Server 2008中的BLOB數據的存儲選擇。 

  
只使用文件服務器或者BLOB存儲 
SQL Server BLOB 
遠程BLOB存儲API 
FILESTREAM 字段 

快速流式性能 
取決於文件存儲 
否 
取決於BLOB存儲 
Yes 

鏈接級一致性 
是 
是 
是 
是 

數據級一致性 
否 
是 
否 
是 

綜合管理 
否 
是 
否 
是 

使用遠程Windows 文件服務器 
n/a 
否 
是 
這個版本中沒有 

與外部的BLOB存儲協同工作 
n/a 
否 
是 
否 

  表1:BLOB存儲選項對照 
  這些選項意味著SQL Server 2008為存儲非結構化數據提供了一個最適合你的業務需求的靈活的解決方案。 
  4. 在SQL Server 2008中搜索非結構化數據 
  使用非關系數據的應用程序的一個最常見的要求是使得可以在數據上作純文本搜索。 
  4.1 綜合的純文本搜索 
  SQL Server 在之前的版本中支持純文本搜索。然而,它一直依賴於一個外部的服務——Windows Search Service ——作為它的純文本搜索引擎。使用外部服務產生了下面兩個挑戰: 
  · 對外部服務的依賴使得部署更加復雜,也更難進行支持。 
  · 結合了純文本搜索謂詞和標准的SQL謂詞的查詢性能受到影響,因為從搜索的純文本部分得來的整個結果集不得不在標准的謂詞應用之前放置在這個引擎上。查詢優化器不能創建與純文本搜索謂詞協作的計劃。 
  在SQL Server 2008,純文本搜索是完全集成在數據庫引擎中的。通過將純文本引擎直接集成到SQL核心中,SQL Server 2008解決了之前版本中所面臨的挑戰,降低了管理和部署SQL Server的成本,同時提高了搜索非結構化數據的性能。 
  5. 總結 
  SQL Server 2008為存儲和搜索非結構化數據提供了一個靈活的解決方案。FILESTREAM加強了存儲數據庫中的非關系數據像BLOB和關系數據的性能,而沒有降低可管理性。如果你需要使用一個只用於BLOB的存儲,那麼遠程BLOB存儲API能夠幫助你集成你的BLOB數據和你的數據庫中的關系數據,並提供一個一致的編程界面用於與這個數據交互,還提供了系統的獨立性,用來存儲數據。最後,當你需要通過使用在這篇白皮書中討論的任何解決方案來存儲和使用大型文檔庫時,SQL Server 2008幫助你使得搜索非關系數據更加有效也更易於管理。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved