近期又接触到部分兼容性工作,特收集整理了部分国产数据库的兼容情况,整体感觉国内产品这部分做的差异还是蛮大的。本文将从一张对比表入手,谈谈国内产品的兼容性问题,并简单介绍下各家的兼容性情况。
1. 常见国产数据库兼容性一览
让我们先从一张《数据库库兼容性一览表》开始,谈谈各家兼容性。
在兼容对象上,大部分产品都将Oracle、MySQL、PostgreSQL作为兼容对象,部分产品还将如DB2、SQL Server等作为兼容对象。在实现上有些产品是支持多种模式,可以在初始化时进行选择,这里用[MultiDB]进行区分。
兼容层次,是指产品在那个层次提供的兼容能力,这里分为多种情况。
数据库兼容性包含的维度很多,为了方便用户了解数据库的兼容能力,很多产品提供了兼容评估。在实现上有些提供了工具,有些则通过文档进行说明。
除了对象、语法等兼容外,是否能从源端将数据很方便地迁移、同步到目标端也很重要。这里列出产品是否提供的异构数据库的迁移能力。
协议的兼容,可以提供一种很友好的管理、使用体验,不用改变原有连接方式的情况下就可以使用新的一种数据库。特别是针对上下游生态工具而言,协议兼容有助于快速上手使用新数据库;例如常见的如 Navicat、DBeaver 等工具可以快速连接访问数据库或者如 MySQL、PostgreSQL 的命令行工具也如此。
数据库系统存储和处理数据时,不同数据库管理系统可能对数据类型的支持存在差异,这就需要考虑数据类型兼容性。数据类型兼容性主要涉及以下几个方面:
所以数据类型兼容性在数据库兼容性评估中具有重要的意义,需要综合考虑数据完整性、查询效率和应用开发难度等因素,以确保数据在不同数据库管理系统之间的兼容性和一致性。
字符集是一种用来表示不同语言和字符的编码规范。在数据库中,字符集决定了数据如何存储和显示。不同的数据库管理系统支持不同的字符集,例如MySQL支持utf8、utf8mb4等字符集,而Oracle支持AL32UTF8、AL16UTF16等字符集。在数据库替换过程中进行数据库迁移或数据交换的时候,字符集兼容性就显得非常重要。当要将数据从一个数据库迁移到另一个数据库时,需要确保数据的字符集不会丢失或损坏,务必注意字符集的兼容性,以确保数据能够正确地存储和显示。数据库厂商应明确自己兼容的数据库类型,以及如何设置字符集,以方便用户选择和使用。
尽管 SQL 是一种标准化的查询语言,但实际上不同的数据库实现了自己的 SQL 语法扩展和特性,导致其之间的 SQL 语法存在一定的差异。在进行数据库替换过程中,跨数据库的开发、迁移和数据交互等环节,由于不同数据库之间 SQL 语法的差异,会直接影响客户的决策和项目周期。各数据库厂商应在兼容性部分尽可能的细化 SQL 语法的兼容性程度,以便研发和运维管理人员做综合的评估
数据库对象的兼容性在数据库替换或迁移中起着至关重要的作用。当需要将一个数据库系统替换成另一个数据库系统时,数据库对象的兼容性可以影响到替换过程的顺利进行以及数据的完整性和准确性。以下是数据库对象兼容性在数据库替换中的作用:
数据库过程化语言是一种用于编写存储过程和触发器等数据库对象的编程语言。它是针对特定数据库管理系统而设计的,以支持在数据库中执行复杂逻辑和业务规则的编程需求。通过数据库过程化语言,用户可以在数据库中定义和执行一系列的操作和逻辑,实现对数据的处理和管理。在数据库替换过程中,过程化语言的重要性主要体现在数据转换、业务逻辑实现、数据一致性和完整性、性能优化以及数据迁移逻辑控制等方面。通过合理地使用过程化语言,数据库替换工作可以更有效地进行,同时保证数据的完整性和业务规则的实现。
数据库内置函数是数据库提供的一组用于处理数据和执行特定操作的函数。这些内置函数可以用于查询、操作和处理数据库中的数据,简化开发和提高查询效率。不同的数据库系统支持不同的内置函数,通常包括字符串函数、数值函数、日期函数、聚合函数等。同时数据库内置函数的使用可以简化数据处理过程,减少手动编写复杂的逻辑代码的工作量,提高开发效率和代码的可读性。在编写SQL查询语句或存储过程时,合理地使用数据库内置函数能够更高效地实现各种数据处理和操作。如果数据库替换后,原本使用的内置函数在新的数据库中不被支持或者功能有所改变,就会导致原有的数据库操作无法正常进行,甚至可能会导致数据丢失或错误。因此,在进行数据库替换时,需要仔细评估新数据库对内置函数的支持情况,确保原有的数据库操作能够在新数据库中正常运行。如果存在兼容性问题,可能需要重新设计数据库操作,或者寻找替代的内置函数来实现相同的功能。保证数据库内置函数的兼容性对于保障数据库操作的正常运行和数据的完整性至关重要。
数据库系统视图是数据库系统中的一种虚拟表,它是通过查询一张或多张基本表生成的视图。这些视图可以帮助用户简化复杂的查询操作,隐藏数据的复杂性,提供不同层次的数据访问权限,以及提供数据安全性。兼容数据库的系统视图可以有效地降低数据库替换或升级过程中的风险,保障原有数据和应用的正常运行。
通过优化器的功能,数据库可以根据查询的复杂度和特点生成最优化的执行计划,从而提高查询性能,降低系统资源的消耗,提升数据库系统整体的性能表现。通过确保数据库优化器功能的兼容性,可以有效降低数据库替换或升级带来的风险,并保障系统的性能和效率得到长期维持和提升。
数据库安全特性是数据库系统中用于保护数据安全的一系列功能和措施。这些特性旨在防止未经授权的访问、数据泄露、数据损坏和其他安全威胁,确保数据库系统的完整性、可用性和保密性。常见的数据库安全特性:访问控制、数据加密、审计和监控、数据完整性、数据备份和恢复、数据脱敏、异常检测和防范。兼容原数据库的安全特性可以帮助组织顺利迁移或升级数据库系统,同时保持数据的安全性和完整性。在进行数据库系统替换或升级之前,建议对数据库安全特性进行仔细评估和规划,确保数据库系统在安全方面的兼容性得到充分考虑。
数据库生态工具是指与数据库系统相关的一系列软件和工具,用于管理、监控、优化和扩展数据库系统的功能和性能。这些工具涵盖了数据库开发、运维、安全、备份恢复、性能调优等不同领域,旨在帮助数据库管理员和开发人员更好地管理和利用数据库系统。兼容原有数据库的生态工具,可以大大降低用户的学习成本,复用原有生态工具,可以减少用户在数据库生态方面的投入,降低用户成本。
2. 各家数据库兼容性能力说明
OceanBase 是在租户级别提供对数据库的兼容能力,即在一个系统中可同时支持 MySQL 模式和 Oracle 模式两种模式的租户。用户在创建租户时,可选择创建 MySQL 兼容模式的租户或 Oracle 兼容模式的租户,租户的兼容模式一经确定就无法更改,所有数据类型、SQL 功能、视图等相应地与 MySQL 数据库或 Oracle 数据库保持一致。
OceanBase 数据库从 V2.x.x 版本开始支持 Oracle 兼容模式。Oracle 模式目前能够支持绝大部分的 Oracle 语法和过程性语言功能,可以做到大部分的 Oracle 业务进行少量修改后的自动迁移。OceanBase 数据库在数据类型、SQL 功能和数据库对象等基本功能上与 Oracle 数据库兼容。在过程化程序语言(Procedural Language,PL)方面,已经基本能够兼容全部的研发功能。在数据库安全、备份恢复、高可用和优化器等高级特性上 OceanBase 数据库的兼容性也非常好,而且有些特性还要优于 Oracle 数据库。这意味着在从 Oracle 数据库迁移到 OceanBase 数据库的过程中,用户不需要消耗大量的时间去学习新知识,即可流畅地实现从 Oracle 数据库到 OceanBase 数据库的迁移。
MySQL 模式是为降低 MySQL 数据库迁移至 OceanBase 数据库所引发的业务系统改造成本,同时使业务数据库设计人员、开发人员、数据库管理员等可复用积累的 MySQL 数据库技术知识经验,并能快速上手 OceanBase 数据库而支持的一种租户类型功能。OceanBase 数据库的 MySQL 模式兼容 MySQL 5.7 的绝大部分功能和语法,兼容 MySQL 5.7 版本的全量以及 8.0 版本的部分 JSON 函数,基于 MySQL 的应用能够平滑迁移。
OceanBase 迁移评估工具(OceanBase Migration Assessment,OMA)是 OceanBase 提供的数据库迁移评估的产品,为数据迁移提供精准的兼容性评估、高效的性能评估以及应用逻辑改造建议。OMA 支持评估 Oracle、DB2 LUW、PostgreSQL 等多种数据库与 OceanBase 的兼容情况,提供画像分析和自动转换方案;支持应用负载回放功能,帮助客户预知迁移后可能的性能风险并提供优化方案;OMA 还支持评估 C、Java 业务代码以及驱动的兼容性以助力用户高效率、低成本迁移至OceanBase。
OceanBase 数据迁移工具(OceanBase Migration Service,OMS)是 OceanBase 数据库一站式数据传输和同步的产品。它支持多种关系型数据库、消息队列与 OceanBase 数据库之间的数据复制,是集数据迁移、实时数据同步和增量数据订阅于一体的数据传输服务,OMS 帮助您低风险、低成本、高效率的实现 OceanBase 的数据流通,助力构建安全、稳定、高效的数据复制架构。
GoldenDB 数据库提供了对 Oracle、MySQL 的兼容能力。
GoldenDB 分布式数据库兼容 SQL92、99、2003SQL标准,同时兼容常用 Oracle 语法,其支持的语法类别全面覆盖数据库语法类别,包括DDL、DML、DQL等等。同时,GoldenDB对跨节点的复杂 SQL 操作支持全面,使得业务人员的开发工作量大幅降低,无需考虑大量的SQL改造。
GoldenDB 分布式数据库完全兼容 MySQL 语法,兼容SQL92、99、2003SQL标准,其支持的语法类别全面覆盖数据库语法类别,包括DDL、DML、DQL等等。
GoldenDB数据迁移工具SLOTH,完成 GoldenDB 数据库与GoldenDB(包括不同的分片数量场景)、异构数据库(Oracle、MySQL等)之间的全量数据、增量数据的迁移和同步,同时提供迁移过程中的数据比对功能。
GaussDB 是华为自主创新研发的分布式关系型数据库。GaussDB 可以在创建数据库时,通过参数 DBCOMPATIBILITY 指定兼容数据库的类型,支持 A、B、C和PG四种兼容模式,分别表示兼容 Oracle、MySQL、Teradata(TD)和PostgreSQL。但是C目前已经放弃支持,因此常用的取值是A、B、PG。不同兼容模式下的语法行为存在一定差异,默认为A兼容模式。此外,为了适配 MySQL 语句及pymysql、JDBC等多种连接方式,GaussDB新增了 M-Compatibility 协议,简称为M-Compatibility兼容模式。
UGO,全称为数据库和应用迁移 UGO,是专注于异构数据库结构迁移的专业服务。可将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB/RDS的SQL语法,通过数据库评估、对象迁移两大核心功能和自动化语法转换,提前识别可能存在的改造工作、提高转化率、最大化降低用户数据库迁移成本。在异构数据库迁移场景中,UGO实现结构迁移和语法转化,数据复制服务 DRS实现异构数据库数据在线搬迁,可以形成完整的平滑异构数据库端到端搬迁方案。
TDSQL,是腾讯云提供的一个数据库品牌,包含多个产品。按照其生态兼容,主要是两款 TDSQL-MySQL、TDSQL-PG。
TDSQL MySQL版(TDSQL for MySQL)是部署在腾讯云上的一种支持自动水平拆分、Shared Nothing 架构的分布式数据库。TDSQL-MySQL 高度兼容 MySQL 的协议和语法,但由于架构的差异,对于 SQL 有一定的限制。
TDSQL PostgreSQL版(TDSQL for PostgreSQL)是腾讯自主研发的分布式数据库系统。TDSQL PostgreSQL版 集高扩展性、SQL 高兼容度、完整的分布式事务支持、多级容灾及多维度资源隔离等功能于一身,采用无共享的集群架构,提供容灾、备份、恢复、监控、安全、审计等全套解决方案,适用于GB级 - PB级的海量 HTAP 场景。TDSQL PostgreSQL版 完全兼容 PostgreSQL。
TDSQL PostgreSQL版 正式孵化出 Oracle 兼容版,即 TDSQL PostgreSQL版(Oracle 兼容版),该版本高度兼容 Oracle 语法,包含数据类型与运算符、分区表、系统内置包、系统视图、函数、存储过程、PL/SQL 等语法的兼容。
PolarDB,是阿里云提供的一个数据库品牌,包含多个产品。按照其生态兼容,主要是两款 PolarDB-MySQL、PolarDB-PG。这里吐槽一下,PolarDB 产品在文档方面还需加强,关于兼容性很多内容都查不到。
PolarDB MySQL 版是阿里巴巴自研的云原生HTAP数据库。PolarDB MySQL版100%兼容原生MySQL的多个版本,包括MySQL 5.6、MySQL 5.7和MySQL 8.0。PolarDB MySQL版的企业版基于云原生架构、计算存储分离、软硬件一体化设计,为用户提供具备超高弹性和性能、高可用和高可靠保障、高性价比的数据库服务。
PolarDB-PG 是阿里巴巴自研的新一代云原生数据库,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。PolarDB 100%兼容PostgreSQL 11,PostgreSQL 14,高度兼容Oracle。
PolarDB是阿里巴巴自研的新一代云原生数据库,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。高度兼容Oracle。
异构数据库迁移ADAM(Advanced> 来源: 韩锋频道