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

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.mzph.cn/news/34053.shtml

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

相关文章

设计模式之工厂方法模式(FactoryMethod)

一、概述 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 二、适用性 1.当一个类不知道它所必须创建的对象的类的时候。 2.当一个类希望由它的子类来指定它所创建的对象的时候。 3.当类将创建对象的职责委…

vue生命周期解析

Vue.js 是一个流行的前端 JavaScript 框架,它提供了一种用于构建用户界面的渐进式方法。Vue 组件的生命周期钩子函数是一些特定的函数,它们在组件不同阶段被自动调用,可以让你在这些阶段执行特定的逻辑。下面是 Vue 组件的生命周期钩子函数以…

【Spring】核心容器——Setter注入

1、引入 首先引入Spring框架依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.6.RELEASE</version> </dependency> 在dao层和service层分别准备两个接口以及他…

Stable Diffuion webui Mac版本安装过程

系统环境 操作系统&#xff1a;MacOS Ventura13.5 芯片&#xff1a;Apple M2 Max Python: 3.10 安装前置准备 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git注意事项&#xff1a;修改源码内全部 git clone 链接&#xff0c;设置代理 https://ghpr…

26 | 谷歌应用APP数据分析

基于kaggle公开数据集,对谷歌应用市场的APP情况进行数据探索和分析。 from kaggle: https://www.kaggle.com/lava18/google-play-store-apps 分析思路: 0、数据准备 1、数据概览 2、种类对Rating的影响 3、定价策略 4、因素相关性分析 5、用户评价 6、总结 0、数据准备 (…

Fast SAM与YOLOV8检测模型一起使用实现实例分割以及指定物体分割

Fast SAM与YOLOV8检测模型一起使用 部分源代码在结尾处可获取 晓理紫 1 使用场景 实例分割数据集的获取要比检测数据的获取更加困难&#xff0c;在已有检测模型不想从新标注分割数据进行训练但是又想获取相关物体的mask信息以便从像素级别对物体进行操作&#xff0c;这时就可以…

学习内容散记

git下载网址 &#xff1a;https://registry.npmmirror.com/binary.html?pathgit-for-windows/ error: remote origin already exists 如果你clone下来一个别人的仓库&#xff0c;在此基础上完成你的代码&#xff0c;推送到自己的仓库可能遇到如下问题&#xff1a; error: r…

uniapp开发(由浅到深)

文章目录 1. 项目构建1.1 脚手架构建1.2 HBuilderX创建 uni-app项目步骤&#xff1a; 2 . 包依赖2.1 uView2.2 使用uni原生ui插件2.3 uni-modules2.4 vuex使用 3.跨平台兼容3.1 条件编译 4.API 使用4.1 正逆参数传递 5. 接口封装6. 多端打包3.1 微信小程序3.2 打包App3.2.1 自有…

PHP“牵手”京东商品详情数据获取方法,京东商品详情API接口申请指南

京东详情接口 API 是淘宝开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取淘宝商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在淘宝电商平台的开发中&#xff0c;京东详情接口 API 是非常常用的 API&#xff0c;因此本文将详细介绍京东详情接口 …

VS+QT+Opencv使用YOLOv4对视频流进行目标检测

对单张图像的检测&#xff0c;请参考&#xff1a;https://blog.csdn.net/qq_45445740/article/details/109659938 #include <fstream> #include <sstream> #include <iostream> #include <opencv2/dnn.hpp> #include <opencv2/imgproc.hpp> #inc…

支付整体架构

5.4 支付的技术架构 架构即未来&#xff0c;只有建立在技术架构设计良好的体系上&#xff0c;支付机构才能有美好的未来。如果支付的技术体系在架构上存在问题&#xff0c;那么就没有办法实现高可用性、高安全性、高效率和水平可扩展性。 总结多年来在海内外支付机构主持和参与…

C语言之位运算

一、什么是位运算 所谓位运算是指进行二进制位的运算 在系统软件中&#xff0c;常要处理二进位的问题 例如&#xff0c;将一个存储单元中的各二进位左移或右移一位&#xff0c;两个数按位相加等 二、位运算符和位运算 1、按位与 运算符(&) 参加运算的两个数据&#xff…

php 常用调试方式

要在PHP命令行中配置Xdebug&#xff0c;您需要完成以下步骤&#xff1a; 安装Xdebug扩展&#xff1a;首先&#xff0c;确保已经安装了Xdebug扩展。您可以通过在终端中运行php -m来检查是否安装了Xdebug扩展。如果没有安装&#xff0c;您可以按照官方文档或适用于您所使用的操作…

python正则表达式详解笔记,python正则表达式教学

正则表达式 正则表达式是一个特殊的字符序列&#xff0c;计算机科学的一个概念。通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。在Python中需要通过正则表达式对字符串进行匹配的时候&#xff0c;可以使用re模块…

Exploiting Proximity-Aware Tasks for Embodied Social Navigation 论文阅读

论文信息 题目&#xff1a;Exploiting Proximity-Aware Tasks for Embodied Social Navigation 作者&#xff1a;Enrico Cancelli&#xff0c; Tommaso Campari 来源&#xff1a;arXiv 时间&#xff1a;2023 Abstract 学习如何在封闭且空间受限的室内环境中在人类之间导航&a…

uniapp 获取 view 的宽度、高度以及上下左右左边界位置

<view class"cont-box"></view> /* 获取节点信息的对象 */ getElementRect() {const query uni.createSelectorQuery().in(this);query.select(".cont-box").boundingClientRect(res > {console.log(res);console.log(res.height); // 10…

Taro UI中的AtTabs

TaroUI 中的 AtTabs 是一个用于创建标签页(tab)组件的组件。它提供了一种简单的方式来切换显示不同的内容。 AtTabs 的使用方式如下&#xff1a; 首先&#xff0c;引入 AtTabs 组件和必要的样式&#xff1a; import { AtTabs, AtTabsPane } from taro-ui import taro-ui/dis…

Kubernetes系列-删除deployment和pod

通过deployment创建的pod直接执行delete是不会正常被删除的&#xff0c;因为deployment中设置了pod的数量&#xff0c;deployment会动态维护pod的数量&#xff0c;倘若pod数量少于约定数量&#xff0c;deployment会创建pod&#xff0c;直到pod数量达到约定数量才会停止。 如若…

mysql数据库第十二课------mysql语句的拔高2------飞高高

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

研发工程师玩转Kubernetes——通过PV的节点亲和性影响Pod部署

在《研发工程师玩转Kubernetes——PVC通过storageClassName进行延迟绑定》一文中&#xff0c;我们利用Node亲和性&#xff0c;让Pod部署在节点ubuntud上。因为Pod使用的PVC可以部署在节点ubuntuc或者ubuntud上&#xff0c;而系统为了让Pod可以部署成功&#xff0c;则让PVC与Pod…