人大金仓三大兼容:Oracle迁移无忧

news2024/11/23 15:16:47

dde005c9b876525dd34828050c603809.gif

企业级应用早期的架构模式是C/S(Client/Server)模式,Client做人机交互逻辑的呈现,Sever做业务计算逻辑的实现。这就类似餐馆的运作模式,Client是前台的服务员提供点菜和上菜服务,而Server则是后厨完成菜品的制作。

那么扮演Server的角色是谁?数据库管理系统(DBMS)。在C/S架构中,Client发起请求,调用数据库中的存储过程或函数来完成业务逻辑的计算。所以在早期的企业级应用中,大量的业务逻辑运算是在数据库内完成的。为了最大程度简化开发过程,充分发挥出数据库的能力,开发人员会使用数据库提供的各种辅助功能来完成业务应用开发。在这样的情况下,上层业务应用实质上是构建在数据库管理系统之上的,两者紧密关联,不可分割。

虽然在数据库管理系统领域有一系列的国际标准,但商业数据库厂商提供的能力是远远超出国际标准的。以Oracle为例,作为行业事实标准的制定者,Oracle提供了上层应用所需的各种能力及行业最佳实践,通过四十多年在千行百业中数万个应用场景中的打磨锤炼,无论是功能还是性能方面都远超其他数据库管理系统。这些能力帮助应用软件开发商降低了应用软件开发难度,同时提高了开发效率和质量。

如果应用开发商深度使用了Oracle的各种能力,那么将应用迁移到其他数据库管理系统之上将面临巨大的难度、高昂的成本、以及未知的风险!这也是为什么数据库管理系统国产化推进如此艰难的一个重要原因。

而要解决这个问题,最大程度利用原有资产,必须在迁移过程中尽可能对上层应用透明,通过国产数据库自身能力的增强,实现对国外数据库产品的原生兼容,做到低难度、低成本、低风险平滑迁移。

KingbaseES是人大金仓自主研发的企业级大型通用数据库管理系统,提供Oracle、MySQL和SQLServer三大兼容模式,在应用不改、性能不降、习惯不变的情况下,实现国外数据库的迁移替代。本文将全面阐述KingbaseES的异构数据库兼容架构设计思路及Oracle兼容的高级功能。

01

灵活扩展的兼容架构

KingbaseES在产品架构上采用可插拔式的体系架构,可灵活扩展,兼容多种生态,兼容商业和开源的外部接口协议,能够支撑更多核心能力。

ea10073779648b586e3e7781b02652ff.png

KingbaseES在默认情况即为兼容Oracle模式,并支持通过控制参数“initdb -m”切换兼容模式。

02

全面完备的兼容能力

Oracle兼容性是一个系统性的工作,KingbaseES以内核兼容为基础,打造出涵盖内核、工具和接口的全方位 Oracle 兼容能力。当前Oracle 常用能力兼容性已达100%!

7c965bae1a439dd606d34a599ee83565.png

KingbaseES

应用不改,原生兼容

随着各行各业数字化转型的演进,应用对数据处理的需求越来越复杂。随之而来的是数据库的能力越来越多样,这一点在传统交易业务OLTP场景中尤为突出。KingbaseES 以一系统多模式的方式,提供不同数据库的兼容能力。以应用中占比最大的Oracle数据库为例,KingbaseES除全部兼容其基本能力外,还兼容PL/SQL内置包、DBLink等高级能力,从而在客户应用移植时,实现应用无感、平滑迁移。

KingbaseES提供PL/SQL内置包,通过内置包扩展数据库功能,当前内置包数量达200+,可提供各类的功能和服务。后续,KingbaseES将会继续完善并扩展这些包的能力。

DBlink是Oracle的一项重要功能,基于DBlink,用户可以实现跨库的查询和事务。DBLink是KingbaseES数据库中的增强功能,KingbaseES 兼容Oracle的DBlink访问语法及功能,支持同构和异构数据库访问,应用无须修改代码。此外,KingbaseES还在DBlink的性能方面做了诸多优化。

基于KingbaseES的DBlink,用户可实现:

Ø 数据的共享和交换;

Ø 数据分片,提高数据库的扩展性和性能;

Ø 数据库集成,便于数据的整合和管理;

Ø 跨数据库查询,便于数据的统计和分析。

KingbaseES

性能不降,稳定高效

数据库性能一直都是用户关注的核心议题,在当下数字化建设带来爆炸式增长的海量数据的场景下,数据库性能面临着新的要求和挑战。KingbaseES在提升数据处理性能方面做了大量工作,如提供分区能力支持处理大数据量数据,通过物化视图提升数据查询中查询效率,通过批量DML优化、copy等功能提升接口的效率......

用户在应用中会遇到超大表的情况,为提升查询效率和数据更新的效率,可将表拆分为小表,这就涉及到如何拆分的问题。KingbaseES 完全兼容Oracle 的分区形式,在分区优化方面也提供分区剪枝和并行分区智能优化,从而提供能与Oracle比肩的分区能力。分区管理方面,KingbaseES支持增加、删除、合并、交换、拆分等与Oracle相同的操作。

物化视图预先将计算好的结果集存储在数据库中,可被多次查询和访问,避免了每次查询都需要重新计算的问题,从而提高查询性能。还可将复杂的查询逻辑封装在视图中,简化查询语句,提高查询的可读性和可维护性。

KingbaseES支持对物化视图的创建以及手动刷新和增量刷新,如果修改了物化视图基表可根据相应规则更新物化视图中的数据,以保证物化视图与基表的数据一致性。

而在客户端编程接口的性能方面,KingbaseES的多数接口都实现了批量DML的优化。通过批量操作,其插入效率是单条多批次的几何倍数,例如:10000数据,如果采用循环单条插入的耗时为5s,采用批量插入后,耗时为5/10000 s,可以有近10000倍的收益;如果针对批量插入,还可以考虑采用copy的方法,其效率更高,可以有近100000倍的收益

KingbaseES

习惯不变,好用易用

KingbaseES提供了完全符合标准规范的 JDBC、ODBC 等通用接口,同时兼容Oracle 的C语言的自有接口OCI,OCCI,Pro*C的所有常用API,与国内竞争对手的兼容度相比较处于领先地位,并扩展了基于各类语言开发的数据库访问接口包括Perl、GoLang、PHP、Python、QT、 .Net,Rust等。同时,支持开发常用框架,包括基于JDBC的Hibernate、Mybatis、Mybatis-plus,数据库管理框架Flyway和liquibase,工作流框架Activiti,基于Python的Django、sqlalchemy,基于ado.net的ef6、efcore,基于libkci的QT,基于PHP的thinkphp,迁移过程中对于应用程序中使用的框架和接口部分,只需要修改连接串和更换应用驱动,便可实现业务的无缝迁移。

此外,KingbaseES数据库还提供与Oracle 对等的空间数据GIS处理能力;兼容Oracle内置原生XML/JSON能力,实现对半结构化文档型数据的处理。开发人员无需学习多种数据处理平台的专用API,从而降低开发成本。

KingbaseES在Oracle兼容上有着独特的优势和深厚的积累,以上仅仅是冰山一角。未来,人大金仓还将继续在Oracle兼容上深耕,不断升级打磨产品。

更多兼容性信息

请查阅https://help.kingbase.com.cn/v8/development/develop-transfer/kes-vs-oracle/index.html

END

Oracle数据库自发布至今的40多年里,伴随着数据库产业潮水变迁般的发展史,一直处于领先地位,使得国内诸多关键行业深度依赖Oracle。

面对市场和业务用户的需求,人大金仓KingbaseES选择了Oracle兼容性的道路,以提供更大的客户价值!这其实也是一个选择性重走Oracle 40年发展之路的过程,通过不断地兼收并蓄去融合各类数据库技术与能力,满足纷繁复杂的客户需求和业务挑战。然而,无论是Oracle兼容性或是其他软件的兼容性都非一朝一夕之功,也非一蹴而就。在兼容性的道路上,人大金仓通过了大量的测试和验证,反复打磨锤炼,来确保产品的稳定性和可用性,从而真正能够支撑和保障用户业务。

坚持自主创新与兼收并蓄的发展思路,当前人大金仓KingbaseES已跨越“能用”的阶段,正趋于“好用、易用”,并全面兼容Oracle模式。在迁移替换场景下,人大金仓KingbaseES数据库将是更好的选择,助力用户低难度、低风险、低成本,平滑地实现国产数据库迁移!

23a063a432c6d225ebf197924a7a22a7.jpeg

18c254b43d024ad5c29931e7a967aa0f.jpeg

dde0a766822e280d4b7d2c755c1ccb43.jpeg

a982ad94c25e0ccfb1d71ee4fa57caa1.png供稿:产品研发中心

编辑:王堇

审核:日尧

f7f46d60dff44b6b73fb3379837b4f4d.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/866255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础篇--修饰符

Java语言提供了很多修饰符,主要分为以下两类: 访问控制修饰符 非访问修饰符 访问控制修饰符 private:私有访问权限,用于修饰类的属性和方法。被private修饰的成员只能在本类中进行访问。default(默认访问权限&…

spark 图计算 助力解决 dataframe中的链式依赖

链式依赖说明 name newName a b c d b c 我们需要的结果 即我们可以支持获取到链式转换的 起点 重点 以及链式的中间转换过程顺序数组. 特别说明: 出版只支持 单向 无分叉的图,其他复杂场景暂时未测试. 场景举例: 比如某件商品价格变化,我们需要知…

原始套接字编程(AF_PACKET+SOCK_RAW)模拟一个PING

1. 背景 最近看一个客户的代码片段,发现他在用原始套接字编程,一般学习套接字都是流式套接字和数据报套接字,本来也不是搞网络的,原始套接字了解得很少,借着这次机会,自己来学习一下原始套接字编程。 2. …

函数的模拟实现

题一&#xff1a; 模拟实现strncpy #include <stdio.h>void my_strncpy(char* arr2, char* arr1, size_t num){int i 0;for (i 0; i < num; i){*(arr2 i) *(arr1 i);}}int main(){char arr1[] "hello liangzai";char arr2[10] { 0 };//strncpy(ar…

包管理工具详解npm 、 yarn 、 cnpm 、 npx 、 pnpm(2023)

1、包管理工具npm &#xff08;1&#xff09;包管理工具npm&#xff1a; Node Package Manager&#xff0c;也就是Node包管理器&#xff1b;但是目前已经不仅仅是Node包管理器了&#xff0c;在前端项目中我们也在使用它来管理依赖的包&#xff1b;比如vue、vue-router、vuex、…

3.6 Spring MVC文件上传

1. 文件上传到本地 实现方式 Spring MVC使用commons-fileupload实现文件上传&#xff0c;注意事项如下&#xff1a; l HTTP请求方法是POST。 l HTTP请求头的Content-Type是multipart/form-data。 SpringMVC配置 配置commons-fileupload插件的文件上传解析器CommonsMultip…

搭建servlet服务

目录 servlet的生命周期 配置tomcat环境 创建web后端项目 配置web.xml http请求 get和post 其他请求 http响应 Servlet是Server Applet的简称&#xff0c;意思为用Java编写的服务器端的程序&#xff0c;它运行在web服务器中&#xff0c;web服务器负责Servlet和客户的通…

Springboot开发常用注解

文章目录 1.RestController2.Data3.RequestMapping4.Builder 1.RestController RestController注解其实就是将 return 中的内容以 JSON字符串的形式返回客户端 controller的详解 2.Data Data详解 3.RequestMapping RequestMapping 4.Builder Builder

文件系统目录结构

1. 目录结构 linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录/ &#xff0c;然后在此目录下再创建其他的目录。 在linux中&#xff0c;一切皆文件(Linux将所有的设备、文件、进程等都当做文件来处理) 2. 目录作用具体介绍 目录名解析/b…

访企聚力促创新:长安大学来访闪马智能

7月31日&#xff0c;长安大学运输工程学院院长葛颖恩教授、学院副书记李婷以及学办主任董彬一行来访闪马智能&#xff0c;闪马智能创始人兼CEO彭垚、城市交通行业总经理兼营销副总裁詹诚以及公共交通行业总经理熊天圣等出席了本次交流会。 长安大学运输工程学院院长葛颖恩教授…

软考考点之Mccabe度量计算及路径覆盖

软考考点之Mccabe度量计算及路径覆盖 [2023年上半年] 34、35、以下流程图中&#xff0c;至少需要(34)个测试用例才能覆盖所有路径。采用McCabe方法计算程序复杂度为(35) A&#xff0e;3B&#xff0e;4C&#xff0e;5D&#xff0e;6(35)A&#xff0e;2B&#xff0e;3C&#xf…

【框架类】—Vue3的生命周期

一、生命周期的相关函数 onBeforeMount 页面渲染之前 和 onMounted渲染之后 示例 <template><div class"test"><div ref"el">组件初始化</div></div> </template> <script> //按需引入所需方法 import { ref,…

sudo root命令不在sudoers文件中。此事将被报告。全网比较详细版本,解决报错问题步骤较多

我在使用个人用户zhang&#xff08;非root用户&#xff09;时&#xff0c;在执行其他命令时&#xff0c;使用sudo命令来执行的时候&#xff0c;需要验证当前用户的密码&#xff0c; 输入了之后&#xff0c;提示“zhang‘ 不在sudoers文件中&#xff0c;此事将被报告” 分析原…

JAVA设计模式----原型设计模式

文章目录 一、简介二、实现方式三、原型模式的注意事项浅拷贝与深拷贝浅拷贝深拷贝一、简介 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Protot…

eNSP:ibgp的破水平切割练习

实验要求&#xff1a; 拓扑展示&#xff1a; 命令操作&#xff1a; R1&#xff1a; <Huawei>sys [Huawei]sys r1 [r1]int g 0/0/1 [r1-GigabitEthernet0/0/1]ip add 12.1.1.1 24 [r1-GigabitEthernet0/0/1]int lo0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]osp…

dingding机器人

“自定义机器人”只支持消息发送&#xff0c;自动回复需要“企业内部机器人” 消息发送 import requests import jsonres requests.post(https://oapi.dingtalk.com/robot/send?access_token036a339axxx,data json.dumps({"text": {"content":"h…

React UI组件库

1 流行的开源React UI组件库 1 material-ui(国外) 官网: Material UI: React components based on Material Design github: GitHub - mui/material-ui: MUI Core: Ready-to-use foundational React components, free forever. It includes Material UI, which implements Go…

【Hilog】鸿蒙系统日志源码分析

【Hilog】鸿蒙系统日志源码分析 Hilog采用C/S结构&#xff0c;Hilogd作为服务端提供日志功能。Client端通过API调用&#xff08;最终通过socket通讯&#xff09;与HiLogd打交道。简易Block图如下。 这里主要分析一下。Hilog的读、写、压缩落盘&#xff0c;以及higlog与android…

PIL报错:TypeError: Cannot handle this data type: (1, 1, 3), <f4

问题&#xff1a; mi_fgsm.py:101: DeprecationWarning: Starting with ImageIO v3 the behavior of this function will switch to that of iio.v3.imread. To keep the current behavior (and make this warning disappear) use import imageio.v2 as imageio or call image…

django boostrap html实现可拖拽的左右布局,鼠标拖动调整左右布局的大小或占比

一、实现的效果 最近需要在Django项目中,实现一个左右布局的html页面,页面框架使用的是boostrap。但这个布局不是简单的左右分栏布局,而是需要实现可以通过鼠标拖拽的方式动态调整左右两侧布局的大小和占比。效果大致如下: 一开始,页面分为左右两块布局: 鼠标放到中间的…