1. MSSQL系列:开启全新数据管理方式
MSSQL是微软公司研发的关系数据库管理系统,被广泛应用于企业级应用程序、数据分析和商业智能。随着数据分析业务的不断扩大和数据量的不断增加,MSSQL需要开启全新的数据管理方式,来满足企业级应用程序的高可用性和性能需求。
2. 列存储技术:提高查询性能
2.1 列存储与行存储
在传统的行存储模式下,数据是按照行的方式存储在磁盘中。每一行包含多个列,这种存储方式适用于对每一行进行更新、插入和删除操作。但是在数据分析过程中,往往需要进行大量的聚合查询,需要统计一列或多列的数值,而单行数据读取所有列的操作占用了大量的计算资源和IO资源。因此,MSSQL引入了列存储技术,将数据按照列的方式存储在磁盘中,这种方式可以快速地扫描一个或多个列的数值,并且可以对每一列进行独立的压缩和编码。这种存储方式适用于OLAP (Online Analytical Processing)分析型业务,可以快速地响应复杂的查询。
2.2 实现方法
实现列存储技术需要对表的存储方式进行改变,将表的数据按照列的方式存储,并且对每一列进行编码和压缩,以减少存储空间和IO读取。MSSQL使用的列存储技术是基于列存储索引 (Columnstore Index)的,这是一种建立在非聚簇索引上的索引,支持快速地扫描单个或多个列,并且可以压缩和编码每一列的数据。
下面是创建列存储索引的方法:
CREATE CLUSTERED COLUMNSTORE INDEX [索引名称]
ON [表名称]
如果要将行存储的表改为列存储的表,需要使用以下两种方法之一:
1. 创建一个新的列存储表,将原表中的数据导入新表
2. 将已有的行存储表转换为列存储表,使用以下语句:
CREATE CLUSTERED COLUMNSTORE INDEX [索引名称]
ON [表名称]
WITH (DROP_EXISTING = ON)
3. 接入分布式文件系统:提高可用性
3.1 HDFS与MSSQL
Hadoop Distributed File System (HDFS)是一个分布式文件系统,用于存储大量数据并提供可靠的数据访问。HDFS将数据分散存储在多个物理节点上,并通过多副本机制确保数据的可靠性和可用性。这种分布式存储和多副本机制与MSSQL的高可用性需求相吻合,因此,将MSSQL接入分布式文件系统可以提高MSSQL的可用性。
3.2 实现方法
将MSSQL接入分布式文件系统需要使用PolyBase技术,它是MSSQL Server 2016版本中的新功能。PolyBase允许在MSSQL中访问外部数据源,包括Hadoop、Azure Blob Storage和SQL Server等数据源。
下面是使用PolyBase将MSSQL连接到Hadoop的方法:
1. 安装Hadoop客户端
需要安装Hadoop客户端,或者使用Hadoop for Windows的场合,则需要安装Microsoft提供的Hadoop on Windows客户端。
2. 启用PolyBase
在MSSQL Server中启用PolyBase:
sp_configure 'polybase enabled', 1
GO
RECONFIGURE
GO
3. 创建外部数据源
创建外部数据源来连接Hadoop:
CREATE EXTERNAL DATA SOURCE HadoopDataSource
WITH (LOCATION = 'hdfs://localhost:9000',
USERNAME = 'hadoop',
PASSWORD = 'hadoop',
TYPE = HADOOP);
GO
4. 创建外部表
创建外部表来访问Hadoop上的数据,这里创建了一个外部表,读取了Hadoop上的csv文件:
CREATE EXTERNAL TABLE ExternalTable
(
[id] INT,
[name] VARCHAR(50),
[age] INT
)
WITH (
LOCATION='/test/hr.csv',
DATA_SOURCE=HadoopDataSource,
FILE_FORMAT=CSV);
5. 查询外部表
查询外部表的语法和查询MSSQL表的语法相同:
SELECT * FROM ExternalTable;
4. 总结
MSSQL作为企业级应用程序的基础数据库,需要不断地开启新的数据管理方式来满足不断扩大的数据分析业务和高可用性需求。本文介绍了列存储技术和PolyBase技术,它们可以提高MSSQL的查询性能和可用性,为企业数据分析提供了更强的支持。