在 大数据 体系结构中,通常需要分析数据存储以结构化格式提供已处理的数据,可以使用分析工具进行查询。 支持查询热路径和冷路径数据的分析数据存储统称为 服务层或 数据服务存储。
服务层处理来自热路径和冷路径的已处理数据。 在 Lambda 体系结构中,服务层细分为两个层。 速度服务层包含增量处理的数据。 批处理服务层包含批处理处理的输出。 服务层需要对具有低延迟的随机读取提供强有力的支持。 速度层的数据存储还应支持随机写入,因为批量将数据加载到此存储中会引入不需要的延迟。 或者,批处理层的数据存储需要支持批处理写入,而不是随机写入。
对于所有数据存储任务,没有任何最佳数据管理选择。 不同的数据管理解决方案针对不同的任务进行了优化。 大多数实际云应用和大数据进程具有各种数据存储要求,并且通常使用数据存储解决方案的组合。
新式分析解决方案(如 Microsoft Fabric)提供了一个全面的平台,用于集成各种数据服务和工具以满足不同的分析需求。 Fabric 包括 OneLake,它是整个组织的单个、统一的逻辑数据湖。 OneLake 旨在存储、管理和保护一个位置中的所有组织数据。 这种灵活性使组织能够满足各种数据存储和处理要求。
选择分析数据存储
对于 Azure 中的数据服务存储,有多个选项可用,具体取决于你的需求:
- 织物
- Azure Synapse Analytics
- Azure Synapse Analytics Spark 池
- Azure Databricks
- Azure 数据资源管理器
- Azure SQL 数据库
- Azure VM 中的 SQL Server
- Azure HDInsight 上的 Apache HBase 和 Apache Phoenix
- Azure HDInsight 上的 Apache Hive 低延迟分析处理 (LLAP)
- Azure Analysis Services
- Azure Cosmos DB
以下数据库模型针对不同类型的任务进行优化:
键值数据库 为每个键值存储单个序列化对象。 当检索基于特定键时,它们非常适合用于管理大量数据,而无需查询其他项属性。
文档数据库 是其中值是 文档的键值数据库。 在这种情况下,文件是由命名字段和值组成的集合。 数据库通常以 XML、YAML、JSON 或二进制 JSON 等格式存储数据,但可能会使用纯文本。 文档数据库可以查询非键字段并定义辅助索引以提高查询效率。 此功能使文档数据库更适合需要根据比文档键值更复杂的条件检索数据的应用程序。 例如,你可以按产品 ID、客户 ID 或客户名称等字段进行查询。
列存储数据库 是键值数据存储,用于在磁盘上单独存储每个列。 宽列存储数据库是一种列存储数据库,用于存储列系列,而不仅仅是单个列。 例如,人口普查数据库可能为以下每项都有单独的列族:
某人的名字、中间名和姓氏
该人员的地址
该人的个人资料信息,如其出生日期或性别
该数据库可以将每个列族存储在单独的分区中,同时为个人保留与同一键相关的所有数据。 应用程序可以读取单个列系列,而无需扫描实体的所有数据。
图形数据库 将信息存储为对象和关系的集合。 图形数据库可以高效地执行在对象网络以及它们之间的关系中进行遍历的查询。 例如,对象可以是人力资源数据库中的员工,并且你可能希望使“查找直接或间接为 Scott 工作的所有员工”这类查询更为容易。
遥测数据库和时序数据库是仅允许追加对象的集合。 遥测数据库能够高效地为各种列存储和内存结构中的数据建立索引。 此功能使它们成为存储和分析大量遥测和时序数据的最佳选择。
Fabric 支持各种数据库模型,包括键值、文档、列存储、图形和遥测数据库。 这种灵活性可确保各种分析任务的可伸缩性。
关键选择条件
若要优化选择过程,请考虑以下条件:
是否需要使用作为数据的热路径提供服务的服务存储? 如果是,请将选项范围缩小到针对速度服务层进行了优化的那些选项。
是否需要大规模并行处理支持,其中查询自动分布在多个进程或节点之间? 如果是,请选择一个支持查询横向扩展的选项。
是否想要使用关系数据存储? 如果这样做,请将选项范围缩小到具有关系数据库模型的选项。 但是,某些非关系存储支持用于查询的 SQL 语法,而 PolyBase 等工具可用于查询非关系数据存储。
是否收集时序数据? 是否使用仅追加数据?
Fabric OneLake 支持多个分析引擎,包括 Analysis Services、T-SQL 和 Apache Spark。 这种支持使它适合各种数据处理和查询需求。
功能矩阵
以下各表汇总了功能上的关键差异。
常规功能
功能 | SQL 数据库 | Azure Synapse Analytics SQL 数据池 | Azure Synapse Analytics Spark 池 | Azure 数据资源管理器 | HDInsight 上的 Apache HBase 或 Apache Phoenix | HDInsight 上的 Hive LLAP | 分析服务 | Azure Cosmos DB(Azure 宇宙数据库) | 织物 |
---|---|---|---|---|---|---|---|---|---|
这是托管服务吗? | 是 | 是 | 是 | 是 | 是 1 | 是 1 | 是 | 是 | 是 |
主数据库模型 | 关系(在使用列存储索引时的列存储格式) | 具有列存储的关系表 | 宽列存储 | 关系(列式存储)、遥测和时间序列存储库 | 宽列存储 | Hive 或内存中 | 表格语义模型 | 文档存储、图形、键-值存储、宽列存储 | 统一数据湖、关系、遥测、时序、文档存储、图存储、键值存储 |
SQL 语言支持 | 是 | 是 | 是 | 是 | 是(使用 Apache Phoenix Java 数据库连接驱动程序) | 是 | 不 | 是 | 是 |
针对速度服务层进行了优化 | 是 2 | 是 3 | 是 | 是 | 是 | 是 | 不 | 是 | 是 |
[1] 使用手动配置和缩放。
[2] 使用内存优化的表和哈希或非聚集索引。
[3] 支持作为 Azure 流分析输出。
可伸缩性功能
功能 | SQL 数据库 | Azure Synapse Analytics SQL 池 | Azure Synapse Analytics Spark 池 | Azure 数据资源管理器 | HDInsight 上的 Apache HBase 或 Apache Phoenix | HDInsight 上的 Hive LLAP | 分析服务 | Azure Cosmos DB(Azure 宇宙数据库) | 织物 |
---|---|---|---|---|---|---|---|---|---|
用于实现高可用性的的冗余区域服务器 | 是 | 不 | 不 | 是 | 是 | 不 | 是 | 是 | 是 |
支持查询横向扩展 | 不 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
动态可伸缩性(纵向扩展) | 是 | 是 | 是 | 是 | 不 | 不 | 是 | 是 | 是 |
支持数据在内存中的缓存 | 是 | 是 | 是 | 是 | 不 | 是 | 是 | 不 | 是 |
安全功能
功能 | SQL 数据库 | Azure Synapse Analytics | Azure 数据资源管理器 | HDInsight 上的 Apache HBase 或 Apache Phoenix | HDInsight 上的 Hive LLAP | 分析服务 | Azure Cosmos DB(Azure 宇宙数据库) | 织物 |
---|---|---|---|---|---|---|---|---|
身份验证 | SQL 或 Microsoft Entra ID | SQL 或 Microsoft Entra ID | Microsoft Entra 身份识别系统 | 本地账号或Microsoft Entra ID 1 | 本地或Microsoft Entra ID 1 | Microsoft Entra 身份识别系统 | 数据库用户或通过身份和访问管理(IAM)控制的 Microsoft Entra ID | Microsoft Entra 身份识别系统 |
静态数据加密 | 是 2 | 是 2 | 是 | 是 1 | 是 1 | 是 | 是 | 是 |
行级安全性 | 是 | 是 3 | 是 | 是 1 | 是 1 | 是 | 不 | 是 |
支持防火墙 | 是 | 是 | 是 | 是 4 | 是 4 | 是 | 是 | 是 |
动态数据掩码 | 是 | 是 | 是 | 是 1 | 是 | 不 | 不 | 是 |
[1] 需要使用 已加入域的 HDInsight 群集。
[2] 要求使用透明数据加密来加密和解密静止的数据。
[3] 仅过滤谓词。 有关详细信息,请参阅行级安全性。
[4] 在 Azure 虚拟网络中使用时。 有关详细信息,请参阅 使用 Azure 虚拟网络扩展 HDInsight。
后续步骤
- 分析关系数据仓库中的数据
- 在 SQL 数据库中创建单一数据库
- 创建 Azure Databricks 工作区
- 使用 Azure 门户在 HDInsight 中创建 Apache Spark 群集
- 创建 Azure Synapse Analytics 工作区
- 了解用于新式分析的 Azure 数据服务
- 探索 Azure 数据库和分析服务
- 使用 API for NoSQL 查询 Azure Cosmos DB