首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

深度解析 Microsoft SQL Server 2008 核心新功能 (3):空間資料與非結構化資料管理

     編輯:關於SqlServer

續接系列,聚焦「不只是關聯資料」的地理空間資料類型、FILESTREAM 深度解析、稀疏欄位、大型 UDT、整合全文檢索等非關聯資料核心能力。

地理空間資料類型

SQL Server 2008 內建 **OGC Simple Features 標準** 相容的空間資料類型,提供完整空間索引、空間查詢方法。

Geometry (幾何/平面資料)

  • 適用平面座標系統:室內地圖、CAD 圖面、遊戲地圖、平面投影資料。
  • 支援 Point、LineString、Polygon、MultiPoint/LineString/Polygon、GeometryCollection。
  • 方法:STDistance、STIntersects、STUnion、STBuffer、STArea、STLength 等。

Geography (地理/球面資料)

  • 以 **WGS84 (GPS 標準橢圓體)** 為基準,經緯度定義地球表面區域。
  • 支援大圓距離計算、球面多邊形、考慮地球曲率的空間關聯。
  • 適用:GPS 軌跡、地理圍欄、物流路徑優化、位置基礎服務 (LBS)。

空間索引

  • 基於 **四叉樹 (Quadtree) 分解** 的 B+ 樹結構,支援平面/球面網格層級設定。
  • CREATE SPATIAL INDEX 語法可調整邊界框、網格密度、每層格數。

FILESTREAM 深度解析

解決「資料庫交易一致性」與「檔案系統流式存取效能」的長期矛盾。

運作機制

  • 資料表需具 `ROWGUIDCOL` uniqueidentifier 欄位 + `varbinary(max) FILESTREAM` 欄位。
  • 資料實際儲存於 **NTFS 資料夾結構** (`$FSLOG`、資料容器、檔案),而非資料檔 (MDF/NDF)。
  • 交易日誌仍記錄 FILESTREAM 操作,**完整支援 ACID、備份/還原、資料庫鏡像、AlwaysOn**。

存取方式

  1. Transact-SQL:`INSERT/UPDATE/DELETE`、`OPENROWSET(BULK...)`、資料流讀寫。
  2. Win32 檔案 API:`OpenSqlFilestream` 取得控制代碼,後續 `ReadFile`/`WriteFile`/`TransmitFile` 等,**繞過 SQL 引擎層,極高吞吐量**,適用串流媒體、大檔上傳下載。

優勢總結

  • 大檔 (>1MB) 效能優於 `varbinary(max)` 儲存於資料檔。
  • 檔案系統層級備份/防毒/複寫工具可直接操作。
  • 資料庫層級安全性 (權限、加密、稽核) 完整延伸至檔案。

整合全文檢索

  • 全文索引**內建資料庫引擎**,不再依賴外部 Microsoft Search 服務。
  • 支援 `CONTAINS`、`FREETEXT`、`CONTAINSTABLE`、`FREETEXTTABLE` 無縫混合關聯查詢。
  • 斷詞器、詞幹分析器、同義字典支援多語言,可自訂斷詞邏輯。

稀疏欄位與資料行集合

  • 稀疏欄位:`CREATE TABLE T (Col1 INT SPARSE, ...)`,NULL 值**零儲存成本**,非 NULL 略增 4 bytes 額外負擔。
  • 資料行集合 (Column Set):`ColSet XML COLUMN_SET FOR ALL_SPARSE_COLUMNS`,將所有稀疏欄位序列化為單一 XML 欄位,動態新增/移除屬性無需 ALTER TABLE。
  • 突破 1024 欄位限制,支援寬表/動態結構模型 (EAV 替代方案)。

大型使用者定義型別 (Large UDT)

  • 移除 8KB 序列化大小限制,支援 **2GB** (CLR UDT `MaxByteSize = -1`)。
  • 適用:複雜幾何物件、加密憑證鏈、科學計算中間結果等大型結構化物件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved