IoT 工作負載中的 Azure Cosmos DB

Azure Cosmos DB
Azure Databricks
Azure Functions
Azure IoT 中樞
Power BI

本文說明依賴 Azure Cosmos DB 資料庫服務的數個功能之物聯網 (IoT) 工作負載。 Azure Cosmos DB 是專為全域散發和水平調整而建置的多模型資料庫。

全域散發會以透明方式調整和復寫跨 Azure 區域的數據。 您可以調整全球的輸送量和記憶體,並只支付您所需的金額。 實時彈性調整可配合各種且無法預測的IoT工作負載,而不需要犧牲擷取或查詢效能。

Azure Cosmos DB 非常適合 IoT 工作負載,因為它能夠:

  • 以高速率擷取裝置遙測數據,並傳回低延遲和高可用性的索引查詢。
  • 儲存來自不同裝置廠商的 JSON 格式,以提供承載架構的彈性。
  • 針對 Cassandra、MongoDB、SQL、Gremlin 等和數據表資料庫使用與有線通訊協定相容的 API 端點,以及 Jupyter Notebook 檔案的內建支援。

潛在的使用案例

  • 使用內建的全域分散式 Azure Cosmos DB 功能,為回應性高回應的 IoT 應用程式啟用低延遲讀寫功能。
  • 處理來自各種裝置廠商和數據類型的數據。

架構

顯示 Azure IoT 解決方案架構中 Azure Cosmos DB 角色的圖表。下載此架構的 Visio 檔案

資料流程

  1. IoT 感測器和 Edge 裝置會將事件當做訊息串流傳送至分析和轉換層 Azure IoT 中樞。 IoT 中樞 可以在指定的持續時間內,將數據流儲存在分割區中。

  2. Azure Databricks 與 Apache Spark 結構化串流會即時從 IoT 中樞 挑選訊息、根據商業規則處理數據,並將數據傳送至記憶體。 結構化串流可以提供即時分析,例如計算移動平均或一段時間內的最小值和最大值。

  3. Azure Cosmos DB 會將裝置訊息儲存為經常性數據存放區中的 JSON 檔。 Azure Cosmos DB 可以針對來自不同裝置廠商的 JSON 架構進行驗證。

    儲存層也包含:

    • Azure Blob 儲存體。 IoT 中樞 訊息路由會將原始裝置訊息儲存至 Blob 記憶體,以提供廉價的長期冷數據存放區
    • Azure SQL 資料庫,用來儲存交易式和關係型數據,例如計費數據和使用者角色。
    • Azure Synapse Analytics 數據倉儲,由 Azure Data Factory 填入,其會匯總來自 Azure Cosmos DB 和 Azure SQL DB 的數據。
  4. Microsoft Power BI 會分析數據倉儲。

  5. 表示層會使用儲存層的數據來建置 Web、行動和 API 應用程式。

  6. 每當新的或更新的裝置訊息送達時,Azure Cosmos DB 變更摘要就會觸發 Azure Functions 函式。

  7. 函式會判斷訊息是否需要裝置動作,例如重新啟動。 如果是,函式會使用 IoT 中樞 服務 API 連線到 IoT 中樞,並起始裝置動作。 函式可以使用裝置對應項、雲端到裝置訊息或直接方法來起始動作。

元件

此工作負載會使用下列 Azure 元件:

Azure Cosmos DB

此 IoT 工作負載聚焦 Azure Cosmos DB,這是全域散發的多模型資料庫。 工作負載會使用下列 Azure Cosmos DB 功能:

  • 一致性層級。 Azure Cosmos DB 支援五個讀取一致性層級,從最強到最弱:強式、限定過期、會話、一致前置詞和最終。 一般而言,較強的一致性會導致較低的可用性、較長的延遲,以及較低的輸送量。 您可以根據您的工作負載需求選擇一致性層級。

  • 存留時間(TTL)。 Azure Cosmos DB 可以在一段時間後自動從容器刪除專案。 這項功能可讓 Azure Cosmos DB 作為最近數據的經常性數據存放區,以及儲存在 Azure Blob 冷記憶體中的長期數據。

  • 變更摘要。 變更摘要功能會以修改檔的順序輸出已變更檔的排序列表。 Azure Cosmos DB 容器變更摘要中的每個新事件都會自動觸發小型反應式 Azure Functions 函式。 根據 JSON 檔的內容,函式可以連線到 Azure IoT 中樞 服務 API,並在裝置上執行動作。

  • 要求單位 (RU)。 RU 是測量 Azure Cosmos DB 輸送量的計算單位。 您可以使用 RU 來動態地相應增加和減少 Azure Cosmos DB,同時維護可用性並優化成本與效能。

  • 數據分割。 分割區索引鍵會決定 Azure Cosmos DB 如何路由數據分割中的數據。 IoT 裝置識別碼是IoT應用程式的一般分割區索引鍵。

其他 Azure 元件

此解決方案也會使用下列 Azure 元件:

  • Azure IoT Edge 會在邊緣執行應用程式,例如機器學習模型。

  • Azure IoT 中樞 可作為雲端網關,大規模擷取裝置遙測。 IoT 中樞 支援對裝置的通訊,允許將動作從雲端傳送至IoT Edge到裝置。

  • Azure Databricks 搭配 Spark 結構化串流是可調整且容錯的串流處理系統,原生支援批次和串流工作負載。 Azure Databricks 是轉換和分析層,並使用 azure-eventhubs-spark_2.11:2.3.6 Maven 連結庫聯機到 IoT 中樞 事件中樞相容端點。

  • Azure Blob 儲存體 為非結構化數據提供可調整、便宜、長期冷數據記憶體。

  • Azure SQL 資料庫 是交易式和其他非 IoT 數據的關係資料庫。

  • Azure Synapse Analytics 是企業數據倉儲和巨量數據分析的數據倉儲和報告平臺。 Synapse Analytics 包含來自 Azure SQL 資料庫 和 Azure Cosmos DB 的匯總數據。

    適用於 Azure Cosmos DB 的 Azure Synapse Link 可讓您對 Azure Cosmos DB 作業數據進行近乎即時的分析,而不會對交易式工作負載造成任何效能或成本影響。 Synapse Link 會在 Azure Synapse 工作區中使用兩個分析引擎: SQL ServerlessSpark 集區

  • Power BI 是一套商務分析工具,可用來分析數據和共用見解。 Power BI 可以查詢儲存在 Azure Analysis Services 中的語意模型,也可以直接查詢 Synapse Analytics。

  • Azure App 服務 建置 Web 和行動應用程式。 Azure API 應用程式 可讓第三方應用程式根據服務層的數據取用 API。

  • Azure Functions 是事件驅動的無伺服器計算平臺,可在雲端大規模運作,並使用觸發程式和系結來整合服務。 Azure Functions 可以轉譯 IoT 訊息格式,或在連線至 Azure Cosmos DB 變更摘要時觸發動作。

替代項目

考量

Azure Cosmos DB 對於單一 邏輯分割區有 20 GB 的限制 。 對於大部分的IoT解決方案,此大小就已足夠。 如果沒有,您可以:

  • 將分割區索引鍵設定為人工字段,並指派複合值,例如 裝置標識碼 + 目前月份和年份。 此策略可確保良好的分割區設計的高價值基數。 如需詳細資訊,請參閱 選擇分割區索引鍵

  • 根據數據生命週期,您可以將較舊的 Azure Cosmos DB 數據移至冷記憶體,例如 Azure Blob 儲存體。 您可以使用變更摘要的組合,將數據復寫到冷記憶體,以及 TTL,以在特定時段後自動從容器中刪除數據。

下一步