Deprecated: Creation of dynamic property db::$querynum is deprecated in /www/wwwroot/sdtaoyi.com/inc/func.php on line 1413

Deprecated: Creation of dynamic property db::$database is deprecated in /www/wwwroot/sdtaoyi.com/inc/func.php on line 1414

Deprecated: Creation of dynamic property db::$Stmt is deprecated in /www/wwwroot/sdtaoyi.com/inc/func.php on line 1453

Deprecated: Creation of dynamic property db::$Sql is deprecated in /www/wwwroot/sdtaoyi.com/inc/func.php on line 1454
长文:国产数据库兼容性一览_洗车水管_天博克罗地亚官网-天博克罗地亚首页
当前位置: 首页 > 产品中心 > 洗车水管
  • 天博克罗地亚

长文:国产数据库兼容性一览

来源:天博克罗地亚    发布时间:2025-02-04 00:30:29

  在去年曾写过一篇数据库兼容性的文章《Oracle 兼容性面面观》,得到的很多读者的关注。近期又接触到部分兼容性工作,特收集整理了部分国产数据库的兼容情况,整体感觉国内产品这部分做的差异还是蛮大的。本文将从一张对比表入手,谈谈国内产品的兼容性问题,并粗略地介绍下各家的兼容性情况。

  1. 常见国产数据库兼容性一览让我们先从一张《数据库库兼容性一览表》开始,谈谈各家兼容性.

  在兼容对象上,大部分产品都将Oracle、MySQL、PostgreSQL作为兼容对象,部分产品还将如DB2、SQL Server等作为兼容对象。在实现上有些产品是支持多种模式,可以在初始化时做出合理的选择,这里用[MultiDB]进行区分。

  内核级:有些产品在内核层面就兼容某些数据库,这类已“开源+二开”类产品居多。因为是基于开源产品构建的,因此天然就具备对此产品的兼容性。

  产品级:有些产品是以“品牌”形式存在的,即不是单一产品构成;其为了兼容其他数据库,提供独立产品来满足。这主要是一些云厂商的产品采用这样的策略。

  数据库级:有些产品的兼容性是在数据库初始化的阶段进行指定,且一旦指定后就不能改变。

  租户级:有些产品是在租户层面提供指定的兼容性能力,租户一旦指定兼容性后就不能改变。

  数据库兼容性包含的维度很多,为了方便用户了解数据库的兼容能力,很多产品提供了兼容评估。在实现上有些提供了工具,有些则通过文档进行说明。

  除了对象、语法等兼容外,是否能从源端将数据很方便地迁移、同步到目标端也很重要。这里列出产品是不是提供的异构数据库的迁移能力。

  协议的兼容,能够给大家提供一种很友好的管理、使用体验,不用改变原有连接方式的情况下就能够正常的使用新的一种数据库。特别是针对上下游生态工具而言,协议兼容有助于快速上手使用新数据库;例如常见的如 Navicat、DBeaver 等工具能够迅速连接访问数据库或者如 MySQL、PostgreSQL 的命令行工具也如此。

  数据库系统存储和处理数据时,不同数据库管理系统可能对数据类型的支持存在一定的差异,这就需要仔细考虑数据类型兼容性。数据类型兼容性主要涉及以下几个方面:

  数据完整性:数据类型的兼容性影响了数据的完整性。如果在数据迁移或跨数据库系统操作时,不同数据库系统对数据类型的支持不同,会导致数据类型转换或截断,从而影响数据的完整性。

  查询效率:数据类型的不兼容性会影响查询效率。如果不同数据库系统对数据类型的存储和索引方法不一样,有几率会使查询性能下降。

  应用开发难度:数据类型的不兼容性会增加应用开发的难度。在跨数据库系统开发时,如果数据类型不兼容,就需要针对不一样数据库系统来进行特殊处理,增加了开发和维护的成本。

  所以数据类型兼容性在数据库兼容性评估中具备极其重大的意义,需要考虑数据完整性、查询效率和应用开发难度等因素,以确保数据在不同数据库管理系统之间的兼容性和一致性。

  字符集是一种用来表示不同语言和字符的编码规范。在数据库中,字符集决定了数据如何存储和显示。不同的数据库管理系统支持不同的字符集,例如MySQL支持utf8、utf8mb4等字符集,而Oracle支持AL32UTF8、AL16UTF16等字符集。在数据库替换过程中进行数据库迁移或数据交换的时候,字符集兼容性就显得很重要。当要将数据从一个数据库迁移到另一个数据库时,需要确保数据的字符集不会丢失或损坏,务必注意字符集的兼容性,以确保数据能够正确地存储和显示。数据库厂商应明确自己兼容的数据库类型,以及如何设置字符集,以方便用户选择和使用。

  尽管 SQL 是一种标准化的查询语言,但实际上不同的数据库实现了自己的 SQL 语法扩展和特性,导致其之间的 SQL 语法存在一定的差异。在进行数据库替换过程中,跨数据库的开发、迁移和数据交互等环节,由于不同数据库之间 SQL 语法的差异,会直接影响客户的决策和项目周期。各数据库厂商应在兼容性部分尽可能的细化 SQL 语法的兼容性程度,以便研发和运维管理人员做综合的评估

  数据库对象的兼容性在数据库替换或迁移中起着至关重要的作用。当需要将一个数据库系统替换成另一个数据库系统时,数据库对象的兼容性可以影响到替换过程的顺利进行以及数据的完整性和准确性。以下是数据库对象兼容性在数据库替换中的作用:

  数据迁移:在进行数据库替换时,常常要将原有数据库中的数据迁移到新的数据库系统中。如果数据库对象之间的数据类型、存储结构、索引等不兼容,可能会引起数据丢失、格式不正确或无法正确转换的问题。

  存储过程和触发器:一些数据库对象,如存储过程和触发器,可能是特定于某个数据库系统的特性。在进行数据库替换时,需要确保新的数据库系统能够支持这些对象,并进行一定的迁移和调整。

  数据一致性:数据库对象的兼容性还涉及到数据的一致性和完整性。在数据库替换过程中,需要确保数据库对象的转换和迁移不会造成数据错误或丢失,以保持数据的一致性。

  性能影响:数据库对象的兼容性还会影响到新数据库系统的性能。如果数据库对象的设计不符合新数据库系统的最 佳实践或性能优化策略,可能会造成性能直线下降或不稳定。

  数据库过程化语言是一种用于编写存储过程和触发器等数据库对象的编程语言。它是针对特定数据库管理系统而设计的,以支持在数据库中执行复杂逻辑和业务规则的编程需求。通过数据库过程化语言,用户都能够在数据库中定义和执行一系列的操作和逻辑,实现对数据的处理和管理。在数据库替换过程中,过程化语言的重要性大多数表现在数据转换、业务逻辑实现、数据一致性和完整性、性能优化以及数据迁移逻辑控制等方面。通过合理地使用过程化语言,数据库替换工作可以更有效地进行,同时保证数据的完整性和业务规则的实现。

  数据库内置函数是数据库提供的一组用于处理数据和执行特定操作的函数。这些内置函数能用于查询、操作和处理数据库中的数据,简化开发和提高查询效率。不同的数据库系统支持不同的内置函数,通常包括字符串函数、数值函数、日期函数、聚合函数等。同时数据库内置函数的使用可以简化数据处理过程,减少手动编写复杂的逻辑代码的工作量,提高开发效率和代码的可读性。在编写SQL查询语句或存储过程时,合理地使用数据库内置函数能够更高效地实现各种数据处理和操作。如果数据库替换后,原本使用的内置函数在新的数据库中不被支持或者功能有所改变,就会导致原有的数据库操作无法正常进行,甚至可能会导致数据丢失或错误。因此,在进行数据库替换时,需要仔细评估新数据库对内置函数的支持情况,确保原有的数据库操作能够在新数据库中正常运行。如果存在兼容性问题,可能需要重新设计数据库操作,或者寻找替代的内置函数来实现相同的功能。保证数据库内置函数的兼容性对于保障数据库操作的正常运行和数据的完整性至关重要。

  数据库系统视图是数据库系统中的一种虚拟表,它是通过查询一张或多张基本表生成的视图。这些视图可以帮助用户简化复杂的查询操作,隐藏数据的复杂性,提供不同层次的数据访问权限,以及提供数据安全性。兼容数据库的系统视图可以有效地降低数据库替换或升级过程中的风险,保障原有数据和应用的正常运行。

  通过优化器的功能,数据库可以根据查询的复杂度和特点生成最优化的执行计划,从而提高查询性能,降低系统资源的消耗,提升数据库系统整体的性能表现。通过确保数据库优化器功能的兼容性,可以有效降低数据库替换或升级带来的风险,并保障系统的性能和效率得到长期维持和提升。

  数据库安全特性是数据库系统中用于保护数据安全的一系列功能和措施。这些特性旨在防止未经授权的访问、数据泄露、数据损坏和其他安全威胁,确保数据库系统的完整性、可用性和保密性。常见的数据库安全特性:访问控制、数据加密、审计和监控、数据完整性、数据备份和恢复、数据脱敏、异常检测和防范。兼容原数据库的安全特性可以帮助组织顺利迁移或升级数据库系统,同时保持数据的安全性和完整性。在进行数据库系统替换或升级之前,建议对数据库安全特性进行仔细评估和规划,确保数据库系统在安全方面的兼容性得到充分考虑。

  数据库生态工具是指与数据库系统相关的一系列软件和工具,用于管理、监控、优化和扩展数据库系统的功能和性能。这些工具涵盖了数据库开发、运维、安全、备份恢复、性能调优等不同领域,旨在帮助数据库管理员和开发人员更好地管理和利用数据库系统。兼容原有数据库的生态工具,可以大大降低用户的学习成本,复用原有生态工具,可以减少用户在数据库生态方面的投入,降低用户成本。

  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 分布式数据库兼容 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 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 Database & Application Migration)提供数据库平滑迁云解决方案,全面评估上云可行性、成本和云存储选型,内置实施协助、数据迁移、应用迁移等工具,覆盖数据库迁移的全生命周期,帮助企业降低数据库和应用迁移的风险、技术难度和实施周期,助力企业源数据库迁移上云。数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务,支持关系型数据库(RDBMS)、非关系型的数据库(NoSQL)、数据多维分析(OLAP)等数据源间的数据交互,集数据同步、迁移、订阅、集成、加工于一体,助您构建安全、可扩展、高可用的数据架构。

  GreatDB 是北京万里开源软件有限公司自主研发的一款分布式关系型数据库软件。GreatDB完全兼容 MySQL 语法,兼容 SQL92、99、2003 SQL 标准,同时兼容部分 Oracle 语法,其支持的语法类别全面覆盖数据库语法类别,包括DDL、DML、DDL、TCL、常用函数、程序控制语言、批处理语法、序列等。

  GreatDTS 是万里数据库自主研发的数据库迁移工具,方便用户迁移其他数据库到GreatDB 数据库,实现应用评估、兼容性评估和数据迁移的一站式数据迁移产品,服务全量数据迁移,支持并行执行、断点续传和数据校验等功能。

  KingbaseES在其内部实现了大量的Oracle兼容特性 。这些特性 从语法或功能上对Oracle提供了原生支持。因此,在移植过程中,Oracle程序只需很少甚至不做任何改动就能在KingbaseES环境中运行。

  异构数据库移植的工作量繁重。这些工作量主要来源于:在数据类型、SQL 语言、PL/SQL 语言、甚至客户端应用编程接口等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。同样的,从 MySQL 向 KingbasES 移植的情况也如此。为降低移植工作量,KingbaseES 在其内部实现了部分的 MySQL 兼容特性。这些特性从语法或功能上对 MySQL 提供了原生支持。因此,在移植过程中,MySQL 程序只需很少甚至不做任何改动就能在 KES 环境中运行。

  KingbaseES 提供了 KDTS 和 KFS 2个工具完成迁移数据任务。KDTS 是 KingbaseES 提供的工具,能够适用于离线迁移,并完成数据库中所有对象定义的迁移和数据的迁移。KFS 是一个单独的同步工具,可以应用于数据的同步,主要用于表结构和表数据的初始搬迁,以及初始搬迁之后数据的实时同步。KDTS 和 KFS 一起部署,可以完成一个大型系统的在线).DM

  之前一直听说 DM 对 Oracle 的兼容性是比较好的,但在查看文档中发现资料甚少,只是提到了提供兼容模式及从其他数据库迁移方面的一些经验。看来文档方面,还需要多多增强。

  MultiDB 兼容性DM 提供了 COMPATIBLE_MODE 参数来设置数据库的兼容性模式,0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL, 5:兼容 DM6,6:部分兼容 TERADATA。该参数默认为 0。该参数为静态参数,需要重启数据库后生效。

  迁移工具DM 数据迁移工具 DM DTS 提供了主流大型数据库迁移到 DM、DM 到 DM、文件迁移到 DM 以及 DM 迁移到文件等功能。此外,这个工具也可以完成对象的迁移,但各数据库语法兼容程度不同,部分是需要手工改写。

  Oracle 兼容性南大通用有多款数据库产品,以 GBase 8s 为例,其广泛兼容 Oracle 语法,在 PL/SQL、包、系统函数、系统视图、DML 语句、DDL 语句、数据类型、操作符等方面都有良好的兼容性,最大限度的复用用户和研发人员的数据库经验,降低产品使用门槛。

  Oracle 兼容性AntDB 是一款可扩展、多租户、高可用、高性能、国产自主的分布式数据库产品,旨在为 OLTP (Online Transactional Processing)、 OLAP (Online Analytical Processing)场景提供一站式的解决方案,具备自动高可用、在线弹性扩容、内核级读写分离等特性,支持SQL2016 标准,提供高并发、高吞吐、低时延的PB级数据处理能力,方便应用平滑地从 Oracle 迁移到 AntDB。

  评估+迁移工具AntDB MTK(AntDB Migration ToolKits)是安慧科技精心打造的一款高可用、高性能的分布式数据同步复制产品, 可以在同构、异构数据库之间进行迁移评估、离线迁移、数据校验的能力。MTK使用断点续传技术,具有部署简单、 占用资源少、数据零丢失等技术特点。在兼容性评估功能方面,提供整体数据库层面的兼容度分析,通过自动化的数据采集,并在真实环境中进行模拟重演,得出准确的兼容度分析报告。可将源数据库中的DDL、DML、DCL一键自动转换为AntDB的SQL语法,通过对象评估、SQL评估和自动化语法转换,提前识别可能存在的改造工作、提高转换率、最大化降低用户数据库迁移成本。AntDB MTK负责数据库之间的复制同步,支持Oracle,MySQL,PostgreSQL, AntDB等各种数据库产品数据复制同步,实现可预期、 高效率地进行数据库迁移实施。

  Oracle 兼容性YashanDB在SQL语法、表达式运算、FILTER CONDITION、数据类型、内置函数、系统视图和PL等基本功能上均与Oracle数据库兼容,数据库管理和研发人员不需要花费大量的时间去学习新知识,在已交付特性上直接查阅Oracle相关文档,也可流畅地操作使用YashanDB,实现从Oracle数据库到YashanDB的平滑迁移。

  评估+迁移工具崖山迁移平台(YashanDB Migration Platform,YMP)是YashanDB提供的数据库迁移产品,提供异构RDBMS与YashanDB之间进行迁移评估、离线迁移、数据校验的能力。YMP提供可视化服务,用户只需通过简单的界面操作,就可以完成从评估到迁移整一个流程的执行与监控,实现低门槛、低成本、高效率的异构数据库迁移。

  迁移工具针对MySQL和PostgreSQL数据库,提供了全量+增量的迁移工具。

  MultiDB 兼容性HaloDB能够最终靠一款数据库设置不一样的兼容模式,如此优异的特性得益于 HaloDB 的多模式兼容引擎,HaloDB 数据库具有独有的多模解析引擎技术,可以兼容 PostgreSQL、Oracle、Sybase、MySQL、SQL Server、DB2 等主流数据库语法从而大幅度减少迁移项目中的代码修改量。HaloDB 通过参数 database_compat_mode,表示数据库运行模式。默认值为 postgresql,其它可取值包括 oracle 、mysql、sybase、sqlserver、db2 等。其中部分数据库,如MySQL,还提供了协议方面的支持。