選擇 Azure 中的分析資料存放區
在巨量數據架構中,分析數據存放區通常需要以結構化格式提供已處理數據,且可使用分析工具進行查詢。 支持查詢經常性路徑和冷路徑數據的分析數據存放區,統稱為服務層或數據服務記憶體。
服務層會處理來自經常性路徑和冷路徑的已處理數據。 在 Lambda 架構中,服務層會細分為速度服務層,以儲存已累加處理的數據,以及包含批次處理輸出的批次服務層。 服務層需要對低延遲的隨機讀取提供強大的支援。 速度層的數據記憶體也應該支援隨機寫入,因為批次將數據載入此存放區會造成不想要的延遲。 另一方面,批次層的數據記憶體不需要支持隨機寫入,而是批次寫入。
所有數據記憶體工作沒有單一最佳數據管理選擇。 不同的數據管理解決方案會針對不同的工作進行優化。 大部分真實世界的雲端應用程式和巨量數據處理程式都有各種不同的數據儲存需求,而且通常會使用數據儲存解決方案的組合。
選擇分析數據存放區時,有哪些選項?
視您的需求而定,Azure 中的數據服務記憶體有數個選項:
- Azure Synapse Analytics
- Azure Synapse Spark 集區
- Azure Databricks
- Azure 資料總管
- Azure SQL Database
- Azure VM 中的 SQL Server
- HDInsight 上的 HBase/Phoenix
- HDInsight 上的Hive LLAP
- Azure Analysis Services
- Azure Cosmos DB
這些選項提供針對不同類型的工作優化的各種資料庫模型:
- 索引鍵/值 資料庫會針對每個索引鍵值保留單一串行化物件。 它們適合用來儲存大量數據,而您想要取得指定索引鍵值的一個專案,而且您不需要根據專案的其他屬性進行查詢。
- 檔 資料庫是索引鍵/值資料庫,其中的值是 檔。 此內容中的「檔」是具名字段和值的集合。 資料庫通常會以 XML、YAML、JSON 或二進位 JSON (BSON) 等格式儲存數據,但可能會使用純文本。 檔資料庫可以查詢非索引鍵字段,並定義次要索引,讓查詢更有效率。 這讓檔資料庫更適合需要根據準則擷取數據的應用程式,比檔索引鍵的值更複雜。 例如,您可以查詢產品識別碼、客戶標識碼或客戶名稱等欄位。
- 數據行存放區 資料庫是索引鍵/值數據存放區,可分別將每個數據行儲存在磁碟上。 寬數據行存放區資料庫是一種數據行存放區資料庫,可儲存數據行系列,而不只是單一數據行。 例如,人口普查資料庫可能有個人名稱的數據行系列(第一個、中間、最後一個)、個人位址的家庭,以及個人配置檔資訊的家庭(出生日期、性別)。 資料庫可以將每個數據行系列儲存在個別的數據分割中,同時保留一個與相同索引鍵相關的人員的所有數據。 應用程式可以讀取單一數據行系列,而不需讀取實體的所有數據。
- 圖形 資料庫會將資訊儲存為對象和關聯性的集合。 圖形資料庫可以有效率地執行查詢,以周遊對象網路及其之間的關聯性。 例如,物件可能是人力資源資料庫中的員工,而您可能想要協助查詢,例如「尋找直接或間接為 Scott 工作的所有員工」。
- 遙測和時間序列資料庫是僅限附加的物件集合。 遙測資料庫可有效率地為各種數據行存放區和記憶體內部結構中的數據編製索引,使其成為儲存和分析大量遙測和時間序列數據的最佳選擇。
索引鍵選取準則
若要縮小選擇範圍,請從回答下列問題開始:
您需要提供可做為資料熱路徑的記憶體嗎? 如果是,請將選項縮小到針對速度服務層優化的選項。
您是否需要大量平行處理 (MPP) 支援,其中查詢會自動分散到數個進程或節點? 如果是,請選取支持查詢向外延展的選項。
您偏好使用關係型數據存放區嗎? 如果是,請將選項縮小到具有關係資料庫模型的選項。 不過,請注意,某些非關係型存放區支援 SQL 語法進行查詢,而 PolyBase 之類的工具可用來查詢非關係型數據存放區。
您是否會收集時間序列資料? 您是否使用僅限附加的數據?
功能對照表
下表摘要列出功能的主要差異。
一般功能
功能 | SQL Database | Azure Synapse SQL 集區 | Azure Synapse Spark 集區 | Azure 資料總管 | HDInsight 上的 HBase/Phoenix | HDInsight 上的Hive LLAP | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|---|
是受控服務 | Yes | Yes | Yes | Yes | 是 1 | 是 1 | Yes | Yes |
主資料庫模型 | 關聯型 (使用資料行存放區索引時的數據行存放區格式) | 具有數據行記憶體的關係型數據表 | 寬資料行儲存區 | 關係型 (資料行儲存區)、遙測,和時間序列儲存區 | 寬資料行儲存區 | Hive/記憶體內部 | 表格式語意模型 | 文件儲存區、圖形、鍵值儲存區、寬資料行儲存區 |
SQL 語言支援 | Yes | Yes | Yes | Yes | 是 (使用 Phoenix JDBC 驅動程式) | Yes | 無 | Yes |
針對速度服務層優化 | 是 2 | 是 3 | Yes | Yes | Yes | Yes | 無 | Yes |
[1] 使用手動設定和調整。
[2] 使用記憶體優化數據表和哈希或非叢集索引。
[3] 支援作為 Azure 串流分析輸出。
延展性功能
功能 | SQL Database | Azure Synapse SQL 集區 | Azure Synapse Spark 集區 | Azure 資料總管 | HDInsight 上的 HBase/Phoenix | HDInsight 上的Hive LLAP | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|---|
備援區域伺服器以提供高可用性 | Yes | 無 | 無 | Yes | Yes | 無 | Yes | Yes |
支持查詢向外延展 | 無 | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
動態延展性 (相應增加) | Yes | Yes | Yes | Yes | 無 | 無 | Yes | Yes |
支援數據的記憶體內部快取 | Yes | Yes | Yes | Yes | 無 | Yes | Yes | 無 |
安全性功能
功能 | SQL Database | Azure Synapse | Azure 資料總管 | HDInsight 上的 HBase/Phoenix | HDInsight 上的Hive LLAP | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|
驗證 | SQL / Microsoft Entra ID | SQL / Microsoft Entra ID | Microsoft Entra ID | local / Microsoft Entra ID 1 | local / Microsoft Entra ID 1 | Microsoft Entra ID | 資料庫使用者/ Microsoft 透過存取管理 (IAM)) |
待用資料加密 | 是 2 | 是 2 | Yes | 是 1 | 是 1 | Yes | Yes |
資料列層級安全性 | Yes | 是 3 | Yes | 是 1 | 是 1 | Yes | 無 |
支援防火牆 | Yes | Yes | Yes | 是 4 | 是 4 | Yes | Yes |
動態資料遮罩 | Yes | Yes | Yes | 是 1 | Yes | 無 | 無 |
[1] 需要使用 已加入網域的 HDInsight 叢集。
[2] 需要使用透明數據加密來加密和解密待用數據。
[3] 僅篩選述詞。 請參閱 數據列層級安全性
[4] 在 Azure 虛擬網络內使用時。 如需詳細資訊,請參閱使用 Azure 虛擬網絡 擴充 Azure HDInsight。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- Zoiner Tejada | CEO 暨架構設計師
下一步
- 分析關係型數據倉儲中的數據
- 建立單一資料庫 - Azure SQL 資料庫
- 建立 Azure Databricks 工作區
- 使用 Azure 入口網站 在 Azure HDInsight 中建立 Apache Spark 叢集
- 建立 Synapse 工作區
- 探索適用於新式分析的 Azure 資料服務
- 探索 Azure 資料庫與分析服務
- 使用 API for NoSQL 查詢 Azure Cosmos DB