使用 Azure SQL Database 滿足現代化資料庫的需求

已完成

設定環境之後,您就可以開始分析和測試可能的解決方案架構的某些元件。 在搭公車情節和及其他許多現代化應用程式中,您需要現代化資料庫來儲存、處理和提供資料。 讓我們探索 Azure SQL Database 如何滿足現代化應用程式的需求。

使用彈性的 Azure SQL Database 選項來縮放以滿足需求

現代化應用程式的核心元素之一,就是要能夠輕鬆擴大或縮小,以正確回應工作負載使用量。 能夠輕鬆更新及發展解決方案,連同確定性自動部署,也都是現代化應用程式開發的基礎支柱。 此原則還可讓應用程式適時隨需付費。

Azure SQL Database 大力支援所有這些必要的功能。 如果您需要與時俱進、可調整、安全又高效能的資料庫,Azure SQL 超大規模資料庫可以滿足一切所需,還不僅止於此。 最多可擴大至 100 TB,其分散式架構可讓您輕鬆擴大和擴展。對於交易式和混合式交易/分析工作負載,這是很理想的資料庫。

為了支援開發和開發人員,您可以使用 Azure SQL Database 無伺服器計算層,它可以在定義的範圍內自動擴大和縮小,並且可以在不使用時自動暫停,為您提供最具成本效益的方式來開發和測試您的解決方案。 鑑於 Azure SQL Database 背後的引擎是相同的,移至 Azure SQL Database 無伺服器計算層和 Azure SQL 超大規模資料庫將不需要更改程式碼,也不需要額外的工作。

使用 GitHub Actions 支援開發工作流程

在 DevOps 實務已普及的今日,現代化解決方案必須適當支援並具有良好的持續整合與持續傳遞/持續部署 (CI/CD) 管線。 Azure SQL Database 原本就支援 GitHub Actions,此功能可讓您在準備好時,將開發資料庫的變更部署至測試和生產資料庫。 Azure SQL Database 動作採用以狀態為基礎的方法。 資料的 DevOps 是很有趣的主題,您可以在本課程模組結尾提及的「資料外洩」劇集中深入了解。

現化代資料庫還有另一項重要需求,就是要能夠掌握和支援最新的開發趨勢與創新。 Azure SQL Database 提供許多功能,可讓您採用最佳的技術或模型,以因應特定的使用案例。 我們在本課程模組結尾的一篇部落格文章,提供所有可用功能的概觀。

使用 Azure SQL Database 讓應用程式與時俱進

在應用程式的存留期內,您想要採用不同的技術以盡可能提高效率。 例如,您可能想要使用圖表模型,輕鬆地追蹤和模仿複雜的網路關聯性,例如社交網路或輸電網路。 或者,您可能需要快速彙總大量資料,以計算特定值的成長率。 Azure SQL Database 能幫您搞定上述所有情況及更多別的情況。 此資料庫支援圖表模型、資料行存放區索引,甚至是輸送量最高的記憶體最佳化的資料表 (這些資料表是已編譯的資料結構,經過同處理序載入而達到高效能)。

在搭公車情節中,您會使用 Azure SQL Database 無伺服器計算層,由於支援自動調整和自動暫停,因此,您只須隨需隨用來付費。 您會使用 GitHub Actions 來建立部署管線,視需要更新資料庫。 此案例還需要一些其他功能。 讓我們仔細看看。 在下一個練習中,您將會實際操作這些功能。

使用原生 JSON 功能處理 JSON 資料

Azure SQL Database 可讓開發人員使用 JSON,既可與資料庫交換資料,又可儲存 JSON 文件。 因此,您可以使用 JSON 當作有效率的傳輸機制,將資料集 (例如陣列和物件) 傳送給預存程式來處理。 一旦您有 JSON 文件,就可以使用原生 JSON 函式來輕鬆操作文件,例如 JSON_VALUE、JSON_MODIFY 或 OPENJSON。 以下是範例:

DECLARE @json NVARCHAR(MAX) = '[{"user":{"id": 1, "name": "Anna"}},{"user":{"id": 2, "name": "Davide"}}]'
SELECT * FROM
    OPENJSON(@json) WITH (
        [Id] INT '$.user.id', 
        [Name] NVARCHAR(100) '$.user.name'
    )

本課程模組結尾有更多範例,示範如何在 Azure SQL Database 中使用 JSON。

使用原生地理空間引擎來分析地理空間資料

Azure SQL Database 具有原生地理空間引擎,可用來執行地理空間查詢,而無須安裝外部程式庫或移動資料,何況移動大量資料的成本很高。 Azure SQL Database 完全支援開放地理空間協會 (OGC) 標準,因此匯出的資料可供 OpenLayers 之類的程式庫使用。

以下範例說明如何建立多邊形,作為搭公車情節中的地理柵欄,以及如何檢查即時公車資料點是否在多邊形內。

-- Microsoft Building 44
declare @bldg44 as geography = geography::STGeomFromText('POLYGON((-122.13403149305233 47.64136608877112,-122.13398769073248 47.64058891712273,-122.13319924946629 47.64011342667547,-122.13285369830483 47.640106868176076,-122.13254221532335 47.640834858789844,-122.13257628383073 47.6410086568205,-122.13334039023833 47.64144150986729,-122.13403149305233 47.64136608877112))', 4326)

-- A point you want to check
declare @p as geography = geography::STPointFromText('POINT(-122.13315058040392 47.64101193601368)', 4326)

-- Is the point within the perimeter?
select @p.STWithin(@bldg44)

由於位置的文字格式 (例如,POINT(-122.13315058040392 47.64101193601368)) 是一種標準,稱為 Well-Known Text (WKT) 格式,只要複製並貼上字串,就可以看到投射在地圖上的圖形。 在下一個練習中,您將會使用 OpenStreetMap WKT 遊樂場自行測試。