選擇 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 或 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 | 是 | 是 1 | 是 1 | 是 | Yes |
主資料庫模型 | 關聯式 (使用資料行存放區索引時的資料行存放區格式) | 具有資料行儲存體的關聯式資料表 | 寬資料行存放區 | 關聯式 (資料行存放區)、遙測和時間序列存放區 | 寬資料行存放區 | Hive/記憶體內部 | 表格式語意模型 | 檔存放區、圖形、索引鍵/值存放區、寬資料行存放區 |
SQL 語言支援 | Yes | Yes | Yes | Yes | 是 (使用 Phoenix JDBC 驅動程式) | 是 | 否 | Yes |
針對速度服務層優化 | 是 2 | 是 3 | 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 |
支援查詢向外延展 | No | 是 | Yes | Yes | Yes | Yes | Yes | Yes |
動態延展性 (相應增加) | Yes | Yes | Yes | 是 | 無 | 否 | 是 | Yes |
支援資料的記憶體內部快取 | Yes | Yes | Yes | 是 | 否 | 是 | 是 | No |
安全性功能
功能 | 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 Entra ID 透過存取控制 (IAM) |
待用資料加密 | 是 2 | 是 2 | 是 | 是 1 | 是 1 | 是 | Yes |
資料列層級安全性 | Yes | 是 3 | 是 | 是 1 | 是 1 | 是 | No |
支援防火牆 | Yes | Yes | Yes | 是 4 | 是 4 | Yes | 是 |
動態資料遮罩 | 是 | Yes | 是 | 是 1 | 是 | 無 | No |
[1] 需要使用 已加入網域的 HDInsight 叢集 。
[2] 需要使用透明資料加密 (TDE) 來加密和解密待用資料。
[3] 僅篩選述詞。 請參閱 資料列層級安全性
[4] 在 Azure 虛擬網絡內使用時。 請參閱 使用 Azure 虛擬網絡 擴充 Azure HDInsight。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- Zoiner Tejada |CEO 和架構師
下一步
- 分析關聯式資料倉儲中的資料
- 建立單一資料庫 - Azure SQL 資料庫
- 建立 Azure Databricks 工作區
- 使用 Azure 入口網站 在 Azure HDInsight 中建立 Apache Spark 叢集
- 建立 Synapse 工作區
- 探索適用于新式分析的 Azure 資料服務
- 探索 Azure 資料庫與分析服務
- 使用適用于 NoSQL 的 API 查詢 Azure Cosmos DB
相關資源
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應