MaxCompute是阿里巴巴推出的大数据分析平台,它随着技术的进步和用户需求的增加,已经发展到2.0版本。在此过程中,MaxCompute不仅继承了传统数据库的强语义和强结构特点,同时也融入了NoSQL的横向扩展性和大数据处理能力,发展成为一种新型的数据库系统,也就是所谓的NewSQL。
在数据库领域,传统关系型数据库因其强语义和强结构而被广泛应用,但它们横向扩展性差、不灵活、容错能力弱,并且在处理大数据能力上存在不足。相对地,NoSQL数据库虽然在横向扩展性、容错能力以及大数据处理上表现出色,但在强语义、强结构方面有所欠缺。
为了克服传统关系型数据库和NoSQL数据库的局限性,MaxCompute2.0在演进过程中,引入了NewSQL概念。NewSQL是试图融合传统关系型数据库的强结构和强语义优势与NoSQL的分布式计算、容错能力和横向扩展性的新型数据库系统。MaxCompute2.0的目标是让程序员能够更加专注于业务逻辑本身,而系统则负责处理复杂的计算过程,提供强大的优化能力,从而自动生成高效的物理执行计划。
MaxCompute2.0的关键技术包括对非结构化、半结构化和结构化数据的支持。用户可以提供Serialize/Deserialize函数,实现非结构化数据到结构化数据的动态转换,支持用户自定义类型,并允许用户定义分区,以便能够有效地连接数据流的上游和下游。此外,MaxCompute2.0通过DAG(有向无环图)执行图来突破MapReduce的限制,支持循环迭代和非对称图表达,能够支持复杂的物理执行计划。
MaxCompute2.0也拥有一套完整的用户自定义函数(UDF)体系,包括Serialize/Deserialize、多路Join函数、聚合处理函数、Processor以及完备的分区函数(Hash/Range/DirectHash等)。这些功能使得MaxCompute2.0可以灵活地构建任意的DAG执行计划。
优化器是MaxCompute2.0的另一个核心技术。它不仅支持存储过程,使得单个语句可以扩展为成千上万的存储过程,还支持Cost-Based Optimization(CBO)、Cascading CBO和Rule-Based Optimization(RBO),提供分布式和Non-SQL场景下的UDF扩展,并且理解数据、计算以及用户的特性,更加智能。优化器与UDF的交互是关键,优化器需能够处理UDF输出的特性,避免由于不感知UDF输出特性而导致的碎片化、低效物理执行计划的产生,并进行全局优化。
MaxCompute2.0通过这样的演进,不仅提供了灵活性——支持任意物理执行计划、处理非结构、半结构以及结构化数据,而且保证了高性能、高智能,具备自适应的能力。
从技术演进的角度来看,MaxCompute2.0的发展也体现了数据库技术从传统关系型到NewSQL的演进过程。例如,Dryad演变为Scope(微软),Spark发展为SparkSQL(DataBricks),MapReduce演变为Hive再发展到Hive 2.0,Spanner(Google),以及MaxCompute从1.0到2.0的转变,都是这一演进过程中的代表。
整体来看,MaxCompute2.0的演进体现了在大数据时代背景下,对于数据库系统提出的新的要求,包括对大数据处理能力的增强、处理复杂业务逻辑的需求、系统优化和性能提升的需求等,这些都推动了传统数据库向NewSQL的转变。NewSQL的出现,使得数据库系统能够更好地适应云计算、分布式计算等新兴计算场景,满足了大数据时代对数据库系统的高要求。