SQL2005 CompactEdition數據存儲體系

發表于:2008-05-05來源:作者:點擊數: 標簽:數據存儲
本文詳細介紹了SQL Server 2005 Compact Edition 的數據存儲體系結構。 適用于: SQL Server 2005 Compact Edition 數據存儲體系結構 摘要: SQL Server 2005 Compact Edition (SSCE) 為構建多種應用程序類型提供功能強大并且輕型的數據存儲引擎。本文介紹了

本文詳細介紹了SQL Server 2005 Compact Edition 的數據存儲體系結構。
  適用于:
  • SQL Server 2005 Compact Edition
  • 數據存儲體系結構
 摘要:
  SQL Server 2005 Compact Edition (SSCE) 為構建多種應用程序類型提供功能強大并且輕型的數據存儲引擎。本文介紹了客戶端應用程序和小規模服務器應用程序的數據存儲問題。文章討論了 SSCE 的功能集以及該功能集如何解決數據存儲問題。全文對各種與 SSCE 相適用的應用程序體系結構進行了介紹,重點講解了應用程序類型的屬性以及 SSCE 如何滿足每種應用程序類型的要求。
簡介:
  為應用程序選擇合適的數據存儲體系結構可以說是件令人望而生畏的任務??晒┻x擇的數據存儲技術非常多,并且還在日益增長。數據存儲技術的選擇取決于多種因素。您必須在平臺要求、大小、性能、部署的便捷、數據的易訪問性以及數據存儲能力之間找到平衡點。
  對于服務于大量用戶的服務器應用程序,無疑應當選擇使用 SQL Server 2005。至于具體選擇基于服務器的哪個版本,則取決于應用程序的規模及其針對的領域,但通過功能列表您可以很容易地確定自己需要哪個版本。此外,更改版本只是決定使用何種許可,通常不需要更改體系結構。
 
對于客戶端應用程序或小規模服務器應用程序,選擇數據存儲技術稍微有些棘手。對于客戶端應用程序,由于成本、復雜性、平臺要求和很多其他因素,將完整的 SQL Server 2005 實例放在每個客戶端計算機上是沒有意義的。小規模的服務器應用程序可能不需要 SQL Server 2005 的某些額外功能,并且昂貴的許可成本也是小型項目無法接受的。對于移動設備應用程序,平臺無法支持完整版本的 SQL Server。
  本白皮書主要討論使用新的 SQL Server 2005 Compact Edition (SSCE) 時所涉及的數據存儲體系結構挑戰、方案和解決方案。文章對 SSCE、其他 SQL Server 2005 版本以及其他關系數據庫技術(包括移動設備上的 EDB 嵌入式數據庫引擎)之間的異同進行了比較。 
數據存儲挑戰:
  對于客戶端應用程序或小規模服務器應用程序,您需要解決很多數據存儲方面的挑戰:
  • 數據存儲位置。如果您要構建分布式客戶端應用程序,并且可以承擔將數據存儲于后端服務器并通過網絡檢索數據的費用,完全可以在服務器上使用 SQL Server 2005。如果要構建移動設備或客戶端應用程序,則可能需要在客戶端建立本地數據存儲,以便在脫機時緩存數據。同時您可能還需要在客戶端進行緩存,以避免通過網絡重復檢索諸如產品目錄的大型數據集。對于客戶端應用程序,可能只需在本地訪問數據,在這種情況下,將數據存儲在后端服務器上是沒有意義的。
  • 數據的易訪問性。生產效率對于在預算內將應用程序按時推向市場來說是非常重要的。因此您應該選擇那些能夠輕松從存儲位置讀寫數據的數據存儲技術。
  • 易查詢性。功能強大的數據存儲技術能夠使您便捷迅速地搜索和選擇單個記錄或記錄集合。
  • 同步數據存儲的能力。對于移動客戶端應用程序,存儲在本地的脫機數據必須要與后端數據存儲保持同步。重新編寫同步機制不僅容易出錯,并且很耗時。因此選擇的數據存儲技術應當能夠支持對多個數據存儲的同步。
  • 安全性。在存儲數據時,安全性對于數據的保護來說是非常重要的,尤其對于移動設備或便攜式客戶端計算機更是如此。這樣,一旦計算機被竊,未經授權的用戶是無法訪問其中存儲的數據的。而且在同步數據時,對于傳遞中的數據也要提供一定的保護措施。
  • 數據的完整性。當您對數據存儲進行數據讀寫操作時,需要確保數據存儲一致,沒有發生數據損壞。事務性數據存儲提供了確保完整性的機制,與非事務性數據存儲相比應該更受歡迎。
  • 部署的便捷。對于客戶端應用程序,資源占用較少、安裝過程簡便是實現可支持性和可維護性的關鍵??蛻舳藨贸绦蛩璧呐渲靡矐畲蟪潭鹊鼐?,以便將應用程序連接到數據存儲。
數據存儲概述:
  對數據進行存儲有一系列的可選方案。不久以前,很多應用程序都采用各自的專有格式將數據序列化為磁盤上的平面文件。XML 為在文件中存儲任意數據提供了一種更為結構化、更容易操作的方式,但這并未解決前一節中所述的很多問題。要解決實現強大可靠的數據存儲所面臨的各種挑戰,關系數據庫技術是目前唯一真正廣泛采用的數據存儲技術。
  但即便您已經將目標鎖定為數據庫技術,仍然可以有多種選擇。您需要綜合其他的標準來選擇合適的技術,并根據每個方案解決上節所述挑戰的方法,選擇合適的數據庫技術。此外還需考慮數據庫是以單用戶客戶端數據庫運行還是以多用戶服務器數據庫運行。
  在客戶端應用程序中,應當將目標鎖定在兩種選擇中的其中一個,具體取決于它是桌面應用程序,還是移動設備應用程序。如果是桌面應用程序(運行于桌面工作站、便攜式計算機或 Tablet PC 之上),應考慮采用 SQL Server 2005 Compact Edition (SSCE) 或 SQL Server 2005 速成版 (SSE)。而對于運行 Microsoft Windows CE 或 Mobile 操作系統的移動設備,則可以選擇 SSCE 或 EDB 嵌入式數據庫引擎。
  出于很多原因,SSCE 能夠為大多數客戶端業務應用程序提供功能強大、簡單易用的解決方案。本文稍后將對這些原因給以更加詳細的介紹。SSE 雖然僅用于專門的客戶端應用程序,但它對于那些支持中等用戶負載,同時需要功能更強、可縮放程度更高的體系結構的小規模服務器應用程序來說,也是一個不錯的選擇。如果設備需要本機支持,而您擔心安裝 SSCE 會對設備的磁盤和內存造成影響,則 EDB 可能是個不錯的選擇,但您需要將此方案與生產效率更高、功能更為強大的 SSCE 作一比較。
  對于小規模服務器端應用程序和緩存需要,SSCE 或 SSE 都是適用的。對于將來可能需要增長和擴展的 Web 應用程序,SSE 則是更好的選擇,因為與 SSCE 相比它所支持的功能更為廣泛。
數據存儲應用程序:
  應用程序的形態和大小各不相同。如前所述,大規模服務器應用程序確實需要使用 SQL Server 2005 Workgroup、Standard 或 Enterprise 版本,但這些不是本白皮書重點關注的內容。對于客戶端應用程序和小規模服務器應用程序,應用程序可以劃分為多種應用程序類型。這些類型包括:
  • 現場團隊應用程序。這些是移動工作人員在現場使用的客戶端應用程序。這些應用程序通常運行于便攜式計算機或 Tablet PC 之上,但也可以運行在移動設備上。對于客戶或設備比較分散的工作環境來說,這些程序可以提供交互式數據展示和交流功能。
  • 個人信息管理 (PIM) 應用程序。這些客戶端應用程序用于存儲和訪問信息項集合,例如聯系人、計劃、任務、便箋等等。它們可以運行在臺式機、便攜式計算機或移動客戶端設備上,但越來越多的這類應用程序是出于要在移動設備上實現低資源占用量而開發的。
  • 小規模 Web 應用程序。這些是簡單的 Web 平臺客戶端應用程序,用于通過 Web 向少數用戶展示動態信息。例如小型企業、社區和非贏利組織或俱樂部。這些程序需要公開 Web 服務器,但要能夠從桌面操作系統(例如,Windows Vista 或 Windows XP Professional)運行。
  • 緩存應用程序。無論客戶端應用程序是否是為脫機工作而設計的,在需要查找諸如城市、省份、郵政代碼、產品目錄列表等信息時,每次都執行完整的數據庫往返通常是沒有意義的。通過實現客戶端數據緩存,可以為呈現列表或在很少更改的查找表中進行搜索提供重大的性能改進。另外,某些應用程序在設計時所使用的分布式體系結構可能涉及需要與集中后端應用程序服務器通信的智能客戶端、移動設備或 Web 客戶端應用程序。應用程序服務器可能需要將數據緩存在本地,以避免發生往返數據庫服務器的操作。雖然需要將數據緩存在本地計算機,但不能因此就購買完整的 SQL Server 實例或承擔高昂的開銷將其安裝于本地應用程序服務器上。
數據存儲可選方案:
  要做出正確的體系結構決策,應當在正確理解可用方案的基礎上客觀地找出解決方案。對于體系結構的數據存儲需要,要考察很多可選方案。再次強調,本文著重介紹客戶端和小規模服務器數據存儲。針對您體系結構內這些部分的主要可選方案有文件存儲、EDB、SSCE 和 SSE。要做出合理的選擇,必須研究每種方案的功能和限制,并根據需求對其進行權衡。
平面文件或 XML 文件:
  從簡單化的角度考慮,使用平面文件或 XML 文件表面上看似乎很吸引人:大多數開發人員已經知道如何使用 Microsoft .NET 或 XML 序列化操作對文件進行數據讀寫操作,或使用數據集的各種功能從文件以 XML 的形式對其進行讀寫。但是,文件在一致性和可靠性方面存在問題。如果應用程序在沒有正確完成 I/O 操作并關閉文件的情況下發生中斷或被關閉,則所包含的數據可能會損壞,而文件鎖定功能可能導致應用程序無法正常運行。這些問題可以通過編寫符合標準的代碼和錯誤處理來解決,但一旦這樣做,最初使平面文件吸引人所依靠的簡單性也就蕩然無存了。
  而且其內部也缺乏文件查詢功能,通常必須先將文件的全部或大部分讀取到內存數據結構中,然后數據才可用。因此,如果在應用程序的整個執行過程中需要對數據進行查詢、讀取和寫入操作,則這些數據不適合采用平面文件和 XML 文件。對于諸如配置設置和首選項等簡單數據,采用 XML 配置文件比較合適。另外,最好根據訪問模式將較大的文檔和文件存儲為平面文件,而將元數據保存在數據庫中。但應用程序的大多數隨機訪問讀/寫數據應當通過數據庫引擎進行存儲和訪問。
EDB:
  EDB 嵌入式數據庫引擎是 Windows CE 5.x、6.x 和 Mobile 6.x 操作系統自帶的一部分。EDB 是一種簡單的關系數據引擎,它允許用戶使用有限的類型系統和查詢功能存儲表格數據。如果您希望使用設備上的自帶功能,或者希望安裝的功能在設備上占用資源最少、開銷最低,則 EDB 是個不錯的選擇。對于某些種類的簡單數據檢索,EDB 可能比 SSCE 更快,但如果需要執行復雜查詢操作,它可能較慢。使用 EDB 的最大缺點之一是只能通過使用 Microsoft Visual C++ 中低級別的 API 來訪問它。如果要使用 .NET Compact Framework 來編寫應用程序以實現使用托管代碼開發所帶來的生產力優勢,則必須使用 C++ 編寫單獨的數據訪問組件用以處理 EDB 數據庫,然后需要通過托管代碼與該組件進行互操作。這樣做所帶來的復雜性很可能會遠遠抵消使用 EDB 的優勢。只有在您編寫應用程序時使用了嵌入式 C++ 并且側重于使資源占用量最小化和使應用程序性能最大化的情況下,才應當考慮 EDB。
  SQL Server 2005 Compact Edition (SSCE):
  SSCE 是一種輕型的 (< 2 MB)、免費的關系數據庫引擎,可以安裝在目前任何的 Windows 操作系統上。由于 SSCE 是本白皮書的重點討論對象,因此在隨后一節中將介紹它的完整功能集。從較高的層面上看,SSCE 支持表、關系、約束、復雜查詢處理、事務、復制和數據安全性。若要為 SSCE 編程,需要使用 ADO.NET 托管提供程序,其數據訪問編碼模式與用于其他托管提供程序(例如,SQL Server SQLClient 托管提供程序)的模式類似。還可以使用 OLE DB 從非托管客戶端訪問 SSCE。SSCE 作為一組通過使用應用程序進行引用的庫在進程中運行,很容易用應用程序庫或作為單獨的 MSI 安裝來部署它。SSCE 可以很方便地用 ClickOnce 應用程序進行部署,或者通過 Xcopy 部署到移動設備上。SSCE 還將預安裝在 Windows Mobile 6.0 或更高版本上。
  SSCE 類型系統是 SQL Server 2005 類型系統的子集,并非支持完整 SQL Server 實例所支持的所有功能。SSCE 不支持的 SQL Server 用于服務器應用程序的常用功能包括存儲過程、觸發器、視圖、函數、用戶定義的數據類型以及參與 SQL Server Service Broker 消息傳遞的功能。 
SQL Server 2005 速成版 (SSE):
  SSE 是一種資源占用量相當少的 (< 55 MB)、免費的數據庫引擎服務,它可以安裝在目前任何桌面機或服務器的 Windows 操作系統上。由于 SSE 作為一項 Windows 服務運行,因此它需要目標計算機安裝 Windows Installer (MSI)。SSE 可以通過 ClickOnce Bootstrapper 進行部署,以允許通過 ClickOnce 部署的應用程序使用它。SSE 支持用戶實例隔離,該功能通過確保將一個用戶的數據與其他用戶的數據自動隔離,從而方便 ClickOnce 部署。
  SSE 支持完整 SQL Server 實例的大多數功能,包括表、視圖、存儲過程、觸發器、函數和 SQL CLR。從托管代碼訪問 SSE 實例中的數據與從完整 SQL Server 實例訪問數據的方式相同,都要使用 SQLClient 托管提供程序。還可以通過使用 OLE DB 提供程序,從非托管應用程序訪問它。
  與完整 SQL Server 實例相比,SSE 的限制相當容易理解。SSE 只使用計算機的一個處理器(即使存在多個處理器);它只使用 1 GB 內存;并且它只允許數據庫大小增長到 4 GB。另外,對于所有類型的復制,SSE 可以是訂閱者但不能是發布者,只要 SQL Server Service Broker 消息是通過完整的 SQL Server 實例傳遞的(就是說,在傳遞鏈中 SSE 實例之間除了完整實例以外沒有對等消息傳遞),它就可以發送和接收該消息。 
SQL Server 2005 Compact Edition 概述
  在概念上,可以將 SSCE 視為 SQL Server 2005 數據庫引擎的高度精簡版本。但是,它是單獨的數據庫引擎,旨在使駐留應用程序的磁盤、內存和安裝要求最小化,同時最大程度提供簡單、安全和事務性關系數據存儲所需的關鍵功能。

SSCE 歷史:

  SSCE 的起源可以追溯到 2001 年發布的 SQL Server CE 1.0,這是 Microsoft 針對移動設備操作系統發布的第一個關系數據引擎,它基于 SQL Server 2000 數據庫功能。后續版本 1.1 和 2.0 改進了用戶體驗,并且 2.0 提供了與 .NET Compact Framework 應用程序的集成。SQL Server 2005 Mobile Edition 作為下一代移動數據庫引擎與 .NET 2.0 和 SQL Server 2005 一起發布。SQL Server 2005 Mobile Edition 提供了很多新功能,可靠性更高,性能更為強大,同步選項更加合理,并且能夠與 SQL Server 2005 和 Microsoft Visual Studio 2005 更好的集成。

  當 SSCE 在 TechEd 2006 上首次發布時,此版本的新名稱為 SQL Server 2005 Everywhere Edition。第一次發布后僅過了很短時間,Microsoft 即優化了 SSCE 的計劃和版本功能,并于 2006 年 11 月在 TechEd Europe 2006 會議上發布了這些內容和新名稱。因此,您可能會發現 Web 上的某些材料在短期內還會使用舊名稱 SQL Server 2005 Everywhere Edition 或簡稱 SQL Everywhere,對于這些名稱,請將它們視為與 SSCE 相同。值得注意的是,與早期的 SQL Server CE 版本相比,SSCE 這一數據引擎完全不同并且功能得到了大幅增強,因此需要小心分辨它們。

SSCE 核心功能

  SSCE 的核心功能是允許對事務性關系數據進行安全的訪問和存儲。通過 SSCE 引擎,可以執行包括數據定義語言 (DDL) 和數據操作語言 (DML) 查詢的 SQL 查詢。使用 SSCE,可以將數據庫實例創建為單個 .sdf 文件。在該數據庫中,可以定義有主鍵和約束的表。通過外鍵約束以及級聯刪除和更新,SSCE 支持完全的引用完整性。

  另外,SSCE 支持以下功能:

• 多線程數據訪問的多個并發連接。

• 對 .sdf SSCE 數據文件的密碼保護和 128 位加密。

• 廣泛的列數據類型。

• 可滾動、可更新的游標,以便快速輕松地訪問已連接的數據。

• 數據庫大小可以增大到 4 GB。

• 通過合并復制和遠程數據訪問 (RDA) 與 SQL Server 同步。

SSCE 新功能

  SSCE 的所有核心功能實際上是 SQL Server 2005 Mobile Edition 的一部分,后者在 2005 年 10 月與 SQL Server 2005 和 .NET 2.0 一同發布。SSCE 添加了很多外圍功能,這些功能使其不同于 Mobile Edition:

• SSCE 現在可以在任何受支持的 Windows 操作系統上運行,包括移動設備、Tablet PC、便攜式計算機、臺式機和服務器。

• SSCE 可以通過 Microsoft Update、Systems Management Server 或 Microsoft Windows Server 更新服務進行更新。

• 可以使用 ClickOnce 部署 SSCE。

SSCE 的數據同步:

  在將 SSCE 用作分布式應用程序體系結構中客戶端或中間層應用程序的本地數據緩存時,通常需要能夠將 SSCE 數據庫與后端數據庫服務器同步。最初可能需要從后端數據庫填充 SSCE 數據庫表,并且還可能需要能夠將更新的或新的記錄從客戶端推送到服務器數據庫。

  使用 SSCE,將有很多同步選項。有兩個內置的同步選項:合并復制和 RDA。這兩個功能都允許您雙向同步數據:從 SSCE 數據庫向 SQL Server 2005,或通過 HTTP 向 SQL Server 2000 數據庫。除了這些功能以外,您還可以通過調用自己公開的 Web 服務端點來實現自定義同步解決方案,從而可以在服務器端通過自定義業務邏輯層雙向傳遞數據。而且,即將發布的下一版 Visual Studio(代號為 Orcas)中將有稱為偶爾連接系統 (OCS) 同步框架的新同步子系統。

  合并復制是功能最強大的內置同步選項,因為它允許同時在客戶端 (SSCE) 和服務器 (SQL Server) 數據庫上自主而獨立地更新記錄。SSCE 作為訂閱者參與合并復制,并且可以訂閱由 SQL Server 2000 或 SQL Server 2005 公開的合并復制發布。由于合并復制還支持服務器端的沖突檢測和解決機制,因此它可以輕松地響應很多客戶端。合并復制的設置稍顯復雜,它需要服務器端具有特定的數據庫設計功能和配置。

  RDA 是最易于使用的內置同步選項。使用 RDA 時,對服務器端數據庫沒有特定要求。若要與 RDA 同步數據,需要將整個結果集從服務器端拉到 SSCE 數據庫中,以便用服務器的當前數據對表進行初始化。然后,可以在您選擇同步時將更改(插入、更新和刪除)推回服務器。若要獲得自從最初拉入數據以來在服務器端所做的更改,則必須再次拉入同一結果集(在推送更改以便所拉入的數據包含更改之后)。RDA 沒有任何并發沖突檢測或解決機制。因此,如果通過應用程序(多個客戶端可以同時修改不同記錄)使用 RDA,則最后一個客戶端寫入記錄的更改可以覆蓋另一個客戶端的最近更改(后進有效)。

  發布 OCS 同步框架時,您可以選擇與 RDA 和合并復制都很相似的數據庫到數據庫同步功能,也可以選擇將自己的服務端點插入同步管道中的更面向服務的同步方法。前一種方法在設置時更簡單,因為它需要的自定義代碼最少。后一種方法稍微復雜一些,但您可以在客戶端和服務器之間插入業務邏輯,還可以針對可以打包到適當同步服務的其他數據源。

OCS 框架為面向服務的數據同步提供了可直接使用的解決方案,而且提供了許多可擴展點以便對同步過程進行更顯式的控制??蛻舳送ㄟ^同步提供程序進行調用,以執行數據的同步。如果需要,提供程序可以調用自定義邏輯,例如驗證邏輯。然后,同步提供程序通過同步代理調用服務器上的同步服務。所公開的服務可以是框架提供的服務,也可以是您公開的自定義服務。該服務通過接收端的同步提供程序進行調用,還可以調用自定義邏輯。通過合適的同步適配器及其關聯的數據庫命令對同步進行調度。適配器和命令的體系結構與和 ADO.NET 2.0 類型化數據集相關的 TableAdapter 的體系結構類似。

SSCE 并發:

  SSCE 允許建立從同一應用程序(甚至是同一計算機的多個應用程序)到同一數據庫(.sdf 文件)的多個連接。這樣,您就可以更自由地根據需要構建應用程序(例如,用戶可以在與后端數據庫進行同步的同時繼續與數據交互),或者讓同一計算機上的多個應用程序共享 SSCE 數據存儲。事務性并發鎖定是由數據庫引擎執行的,目的是防止并發連接同時訪問同一記錄。從技術上看,單個數據庫的最大并發連接數是 256 個,但從實際性能角度來看,連接最好限制在 70-80 個。

SSCE 安全性:

  SSCE 不支持基于角色的安全性和權限。SSCE 數據庫的預期用途是充當在客戶端計算機上執行本地數據存儲和訪問(或在應用程序服務器上執行簡單的持久性數據緩存)的簡單數據存儲機制。因此,由于需要使數據庫引擎盡可能小和盡可能快,所以不會考慮包括表級別的基于角色的安全性和權限。通過密碼保護訪問,可以強制對整個數據庫進行訪問控制。當數據存儲在磁盤上時,可以通過加密數據庫輕松地實現數據保護。

SSCE 非托管代碼訪問:

  SSCE 還允許用戶輕松地從非托管應用程序訪問數據存儲。SSCE 包括 OLE DB 提供程序,以便使用 Microsoft Aclearcase/" target="_blank" >ccess、Microsoft Visual Basic 6、C++ 或其他形式的非托管代碼的應用程序仍然可以訪問和使用已放入 SSCE 數據庫中的數據。例如,這有助于從非托管應用程序和舊數據存儲遞增地遷移到 SSCE 和托管代碼。

SSCE 性能:

  SSCE 在本文檔所述的所有使用情況下都表現出非常良好的性能。如果將 SSCE 性能與 SSE、EDB 或 Microsoft Access 進行比較,沒有哪個產品可以在所有使用情況中都明顯領先其他產品。根據查詢大小、存儲模式和其他變量的不同,某個產品的性能可能看起來會好于其他產品,但我們可以一致地衡量幾個趨勢。

  如果將 SSCE 與 SSE 進行比較,我們可以從性能測試中看到幾種模式。在 SSCE 中,事務的開始和提交比在 SSE 中略快,但差別不大 (20 %)。對于插入大量行 (> 100) 的參數化查詢,SSCE 快于 SSE;但如果插入單行或少量行,則 SSE 更快。使用 SqlCeResultSet 的連接模型時,對于單行選擇,SSCE 比 SSE 大約慢一倍;100 或更多行時,兩者相當。但是,使用 SqlCeConnection API 時,由于啟動和關閉存儲引擎需要大量開銷,因此在 SSCE 中第一次打開和最后關閉要比 SSE 慢很多(在某些情況下 > 1000 倍)。獲得更好性能的優化措施是在事務之前打開 SqlCeConnection,并在最后關閉。在這種情況下,性能與 SqlCeResultSet API 相當。

  如果在設備上將 SSCE 的性能與 EDB 進行比較,則在某些情況下(例如,確定數據庫大小和執行插入或更新),EDB 可以快很多(100 % 或更高)。但是,在大多數搜索和查詢操作中 SSCE 速度都快 20-30%,或者性能大致相當。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97