這很重要
新專案不再支援適用於 PostgreSQL 的 Azure Cosmos DB。 請勿將此服務用於新專案。 請改用下列兩項服務之一:
使用 Azure Cosmos DB for NoSQL 作為專為高規模應用場景設計的分散式資料庫解決方案,其特色包括99.999% 的可用性服務等級協定(SLA)、即時自動調整,以及跨多個區域的自動容錯移轉。
針對使用開放原始碼超大規模 (Citus) 延伸模組的分區化 PostgreSQL 使用適用於 PostgreSQL 的 Azure 資料庫的彈性叢集功能。
以分區金鑰作為一般篩選
若要挑選高輸送量交易式應用程式的分區金鑰,請遵循下列指導方針:
- 選擇用於點查閱的資料行,且大部分建立、讀取、更新和刪除作業都有該資料行。
- 選擇資料中資然維度的資料行,或應用程式的重要部分。 例如:
- 在 IOT 工作負載中,
device_id是良好的散發資料行。
- 在 IOT 工作負載中,
選擇良好的分區金鑰有助於最佳化網路躍點,同時利用記憶體和計算來達成豪秒延遲。
高輸送量應用程式的最佳資料模型
以下是 IoT 應用程式樣本資料模型的範例,其可以自裝置中擷取遙測 (時間序列資料)。 有兩種資料表可供擷取遙測:devices 和 events。 可能有其他資料表,但未涵蓋在此範例中。
建置高輸送量應用程式時,請記住一些最佳化。
- 在應用程式重要部分的一般資料行和應用程式最常查詢的資料行上,散發大型資料表。 在上述 IoT 應用程式的範例中,
device_id是該資料行且共置事件和裝置資料表。 - 其餘的小型資料表可以作為參考資料表。
- 由於 IOT 應用程式是時間維度,因此請根據時間來分割散發的資料表。 您可以使用原生 Azure Cosmos DB for PostgreSQL 時間序列功能來建立和維護分割區。
- 資料分割協助您有效率以時間篩選條件來篩選資料以供查詢。
- 使用 DROP vs DELETE 命令,也可以快速篩選過期的舊資料。
- 範例中的事件資料表是依月份來進行資料分割。
- 使用 JSONB 資料類型來儲存半結構化的資料。 裝置遙測資料通常不是結構化的,每個裝置都有所屬的計量。
- 在範例中,事件資料表有
detail資料行,也就是 JSONB。
- 在範例中,事件資料表有
- 如果 IoT 應用程式需要地理空間功能,您可以使用 Azure Cosmos DB for PostgreSQL 原生支援的 PostGIS 延伸模組。
後續步驟
現在,我們已完成探索可調整應用程式的資料模型化。 下一步是使用您選擇的程式設計語言來連結和查詢資料庫。