21 世纪以来,数据平台的战场上烽火连天、精彩纷呈。所谓江山代有才人出,以 MongoDB、Redis、Neo4j 等为代表的 NoSQL 数据库和 Hive、Impala、Presto 等 Hadoop 体系大数据解决方案风头一时无两。在这些年轻后辈们的冲击之下,关系数据库作为数据架构的中坚力量,不但没有节节败退,近年反倒有王者归来、愈战愈勇之势。在如今各类关键系统的设计和架构中,关系型数据库仍然以稳定的表现和丰富的特性占据着核心地位。
SQL Server是关系数据库中的杰出代表,是与 Oracle、DB2 齐名的企业级商用数据库“三巨头”之一。长达数十年的发展和磨砺,已让它非常成熟稳定;而跟随时代发展不断地融合技术新趋势,又使它非常全面。尤其上一个版本 SQL Server 2017 更是将此款传奇数据库带入了广阔的 Linux 世界,进一步拓展了它的潜在客户群体和使用场景。
我们大可先简单回顾 SQL Server 琳琅满目的丰富特性。在两年前的文章中我们提到,SQL Server 已经集传统行存储、可更新的列存储、内存表、图数据库、机器学习等十八般武艺于一身。这其中许多先进的特性,有些是开源数据库仍在苦苦追赶的领域,或是无法在同一个数据库中进行完美的集成。这正是商业数据库的价值所在:以高稳定性、高性能与高集成度赢得青睐,在帮助客户支撑解决关键业务问题的同时,亦能简化技术架构、减轻维护负担。
仅仅两年的时间,微软就在上一代的基础上发展构建出了全新的 SQL Server 2019,这样的迭代速度对于高度复杂的数据库系统而言颇为惊人。快节奏发布固然和如今业界普遍激进的版本策略有关,但大家也一定好奇,一个已经高度成熟的商业数据库系统,在这样短的时间里究竟能取得怎样的进步?又在哪些方面针对变幻莫测的市场作出了自己的回应呢?本文将与大家一同探索。
结合 SQL Server 2019 的新特性,我们接下来分别从核心引擎增强、数据虚拟化以及此版本最大亮点 SQL Server 大数据集群三个方面来进行分析和探讨。
核心引擎增强
我们首先从核心引擎部分说起。HTAP (Hybrid transaction/analytical processing) 混合负载能力是当今数据库世界的趋势,SQL Server 在这方面是行业引领者之一,之前版本已通过在单一引擎中完美集成行存储和列存储实现了对 OLTP 和 OLAP 工作负载的同时支撑。用户不但可以同时查询和连接行存和列存表,甚至可以为一个行存储表添加非聚集的列存储索引,使得单表能够同时较好地支持 OLTP 和 OLAP 两种工作模式和查询场景。
SQL Server 2019 中继续强化了对于混合负载能力的支持,通过润物细无声式的改进让相关引擎进一步成熟,也使得日常使用更为便捷。例如在列存储索引方面,现已允许在线地创建或重新构建 (REBUILD) 聚集列存储索引——这将大大方便生产环境中大型列存储表的维护和使用,既能节省存储空间,又能提高后续查询性能。在笔者接触的生产环境中就常有列存储表由于部分行的更新导致碎片问题,但为了保障线上业务的连续性,一直只能使用相对轻量的 REORGANIZE 命令进行简单的维护。该问题有望在数据库升级后彻底解决。
上一代 SQL Server 2017 中引入的图数据引擎在 SQL Server 2019 中也得到了相当幅度的增强。其改进既包括在存储层面支持图数据表和索引使用多 filegroup 进行分区,还新增了极为重要的任意长度模式 (Arbitrary Length Pattern) 支持,用户终于可以表达节点间任意次数的跳跃连通关系了。我们来看一个针对人物关系图的官方查询样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|