【51CTO.com快译】在过去这几年,开源关系数据库管理系统MySQL和MariaDB经历了巨大的变化:新增和改进功能、修复长期存在的问题以及全面提升性能。
由于变化很大,很容易错过MySQL和MariaDB在此期间添加的一些优秀功能。本文将介绍添加到MySQL、MariaDB或两者的七项最主要的新功能以及为什么你应使用它们。
1.JSON支持
NoSQL数据库出现时,承诺开发人员易于使用、可灵活扩展,许多人想知道关系数据库是否会消失。简短的回答:根本没有消失。NoSQL系统方便又灵活,但模式(schema)和表始终会有一席之地。
此外,许多老式关系数据库(包括MySQL和MariaDB)借鉴了NoSQL,添加了JSON支持这项标准功能。最终结果是,你需要时可使用NoSQL,而同一数据库中还有传统SQL。
MySQL和MariaDB中的JSON支持让你可以将JSON文件插入到特别指定的表列中。插入的JSON数据可以使用用于其他数据列的同一种约束加以自动验证。你可以将数据检索为JSON文档或简单标量,可以使用生成的列或虚拟的列获得类似JSON索引的效果。
这里有两个要点值得记住。首先,虽然MySQL和MariaDB中的JSON处理函数集相似,但它们不是彼此的简易替代者。其次,MySQL和MariaDB实现原生JSON列数据类型的机制也不一样。如果你在两个数据库之间迁移或同步数据,这会导致轻微的不兼容性,需要注意。
2.资源组(仅限于MySQL)
所有数据库作业都很重要,但一些作业比其他作业更紧迫。比如说,你可能希望在后台运行归档或计划批处理任务等作业,同时确保尽可能快速地执行关键业务工作。MySQL的资源组使其成为可能。
使用资源组,你可以为分配给该组的所有数据库作业指定类型(“系统”或“用户”)、CPU亲和性以及线程优先级。你可以为会话选择资源组,也可以使用优化器提示为单个语句选择一个资源组。
注意,资源组在MySQL平台上的实现方式不同,你不能将资源组与企业线程池插件结合使用。此外,虽然有一项功能请求在MariaDB中实现类似的功能,但还没有计划实现该功能。
3.OQGRAPH存储引擎(仅限于MariaDB)
图形数据库让你可以比使用关系数据库更有效地存储和探索数据之间的关系。虽然像Neo4j或Amazon Neptune这种专用图形数据库专注于图形存储和处理,但MariaDB让你可以通过OQGRAPH存储引擎,将传统的SQL查询与图形处理一并执行。
大多数图形数据库使用各自的自定义查询语言。借助OQGRAPH,你可以使用传统SQL加载数据并构建图形查询。结果以MariaDB的传统查询格式返回,因此可以与传统SQL表查询的结果相结合或组合。
4.Oracle兼容性功能(仅限于MariaDB)
Oracle的数据库产品仍然是所有IT中使用最广泛的产品,但其许可成本和合同限制使许多用户考虑退出。此外,许多基于Oracle的应用程序大量使用Oracle PL/SQL及其语法所独有的功能。
在过去的几个版本中,MariaDB推出了大量新功能,旨在模仿Oracle数据库的行为,尤其是Oracle的PL/SQL语言。从理论上来说,这让许多现有的PL/SQL代码可以在MariaDB中按原样运行,或者只需稍作修改。MariaDB团队估计,使用兼容性功能,大约80%的旧版Oracle PL/SQL可以按原样运行。
注意:使用Oracle PL/SQL模式的MariaDB命令针对具体的客户端才生效。你无需全局更改MariaDB的行为即可使用该功能。
5.系统版本表(MariaDB)
2011版SQL标准添加了版本表,即数据库跟踪表行的功能。MariaDB在10.3.4版本中添加了系统版本表这项原生功能。
有了MariaDB的系统版本表,你可以使用特定的时间范围来运行查询,得到的结果会在该时间段内显示。你还可以修改或删除属于日期范围的行,添加或删除要跟踪的时间段,以及使用在应用程序级别、系统级别或这两个级别指定的时间段。从理论上来讲,你可以对任何支持时间值的数据库执行该操作,但很难自行执行;MariaDB在底层执行这项工作。
虽然MariaDB中为任何数据库引擎支持系统版本表,但一些功能(比如显示特定事务中间记录的事务精确历史记录)只有使用InnoDB引擎才能享用。
6.ColumnStore存储引擎/ InfiniDB(MariaDB)
MariaDB和MySQL中的可插入式存储引擎技术允许两个数据库都可以极大地扩展原生功能。其中一个存储引擎ColumnStore将MariaDB变成了列存储数据库。(ColumnStore不适用于MySQL,但项目ColumnStore源自InfiniDB,使用MySQL来执行查询。)
列存储是高速查询大量数据的理想选择。OLAP系统使用列存储,因此ColumnStore相当于在MariaDB中提供类似OLAP的功能,而不依赖Teradata或Greenplum这样的外部(通常是商业)产品。ColumnStore并不提供那些产品随附的一整套开箱即用的分析或数据编排功能,但它可以为内部分析解决方案提供数据层。
7.Spider存储引擎
功能越强大,就越难部署到生产环境。数据库分片就是这样一项功能,该功能将数据库分割到多台服务器上以提升性能,这通常需要大量的修改和调整。
MariaDB 10.3.4(及更高版本)借助Spider这种拥有内置分片和数据分区功能的存储引擎简化了这项工作。Spider支持几种不同的模式:简单联合、高可用性、分片以及分片加高可用性。
Spider确实与MariaDB用于负载均衡、代理、故障切换和高可用性的系统MaxScale在功能上有一些重叠。MaxScale的使用范围比Spider广泛得多,但如果你想在较一般的部署环境中充分利用分片功能,Spider很有用。
Spider最初只是MySQL插件,它仍然以这种方式供MySQL用户使用。两个版本中的绝大多数功能都一样,只有少数例外。
原文标题:7 MySQL and MariaDB features you don’t want to miss,作者:Serdar Yegulalp
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】