續接系列,聚焦「不只是關聯資料」的地理空間資料類型、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**。
存取方式
- Transact-SQL:`INSERT/UPDATE/DELETE`、`OPENROWSET(BULK...)`、資料流讀寫。
- 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`)。
- 適用:複雜幾何物件、加密憑證鏈、科學計算中間結果等大型結構化物件。