当前位置: 首页 > article >正文

人大金仓国产数据库与PostgreSQL

一、简介

在前面项目中,我们使用若依前后端分离整合人大金仓,在后续开发过程中,我们经常因为各种”不适配“问题,但可以感觉得到大部分问题,将人大金仓视为postgreSQL就能去解决大部分问题。据了解,Kingbase 是基于 开源数据库 PostgreSQL 开发的,大部分功能与 PostgreSQL兼容。Kingbase 8 是基于 PostgreSQL 9.6 的。那么下面我们来分析下具体哪些不同,也方便程序猿们在开发中更高效的去解决业务场景中出现的问题

二、具体差异

2.1 进程结构基本一致

KingbaseES和PostgreSQL启动后的后台进程

Kingbase:

postgreSQL:

和pg(9.6版本)相比,除了kinbaseES多了一个logger process和一个bgworker:sysloglical supervisor外,其他的后台进程完全是一模一样的,连名字都没变。

在更高一点的版本中,对比就会发现,几乎完全一致。这里也不难理解为什么使用navicat中postgreSQL的连接方式能够管理人大金仓数据库了。

2.2 JDBC

postgresql 9.6

kingbase 8

driver_class

org.postgresql.Driver

com.kingbase8.Driver

url

jdbc:postgresql://127.0.0.1:5432/postgres

jdbc:kingbase8://127.0.0.1:54321/kingbase

jdbc 的 jar

postgresql.jdbc-9.0.jar

org.postgresql

postgresql.jdbc

9.0

kingbase8-8.2.0.jar

com.kingbase8

kingbase8-jdbc

8.2.0

hibernate 的jar

hibernate-5.0.12.jar

org.hibernate

hibernate

5.0.12

hibernate-3.6.0-dialect-1.0.jar

com.kingbase

hibernate-3.6.0-dialect

1.0

hibernate方言

org.hibernate.dialect.PostgreSQL9Dialect

org.hibernate.dialect.Kingbase8Dialect

引用资料:PostgreSQL 与 Kingbase 的差异对比 - 草色青青送马蹄 - 博客园 (cnblogs.com)

这里127.0.0.1 表示本地的ip地址。

5432 是postgresql的默认端口;54321则是人大金仓的的默认端口。

postgres 是postgresql默认的数据库名,kingbase是Kingbase默认的数据库名。

从这一部分来说,发现的是url以及等等上面有明显不同,但是在开发的过程中,将驱动改为PostgreSQL依旧能够驱动,很是耐人寻味,我们接着往下看。

2.3 数据目录结构和组成基本一致。

命令程序

postgresql 9.6

kingbase 8

pgbench

kbbench

postgres

kingbase

psql

ksql

pg_archivecleanup

sys_archivecleanup

pg_basebackup

sys_basebackup

pg_bulkload

sys_bulkload

pg_config

sys_config

pg_controldata

sys_controldata

pg_ctl

sys_ctl

pg_dump

sys_dump

pg_dumpall

sys_dumpall

pg_hm

sys_hm

pg_isready

sys_isready

pglogical_create_subscriber

syslogical_create_subscriber

pg_receivexlog

sys_receivexlog

pg_recvlogical

sys_recvlogical

pg_resetxlog

sys_resetxlog

pg_restore

sys_restore

pg_rewind

sys_rewind

pg_rman

sys_rman

pg_test_fsync

sys_test_fsync

pg_test_timing

sys_test_timing

pg_upgrade

sys_upgrade

pg_xlogdump

sys_xlogdump

系统表和视图

postgresql 9.6

kingbase 8

pg_aggregate

sys_aggregate

pg_am

sys_am

pg_amop

sys_amop

pg_amproc

sys_amproc

pg_attrdef

sys_attrdef

pg_attribute

sys_attribute

pg_authid

sys_authid

pg_auth_members

sys_auth_members

pg_cast

sys_cast

pg_class

sys_class

pg_collation

sys_collation

pg_constraint

sys_constraint

pg_conversion

sys_conversion

pg_database

sys_database

pg_db_role_setting

sys_db_role_setting

pg_default_acl

sys_default_acl

pg_depend

sys_depend

pg_description

sys_description

pg_enum

sys_enum

pg_event_trigger

sys_event_trigger

pg_extension

sys_extension

pg_foreign_data_wrapper

sys_foreign_data_wrapper

pg_foreign_server

sys_foreign_server

pg_foreign_table

sys_foreign_table

pg_index

sys_index

pg_inherits

sys_inherits

pg_init_privs

sys_init_privs

pg_language

sys_language

pg_largeobject

sys_largeobject

pg_largeobject_metadata

sys_largeobject_metadata

pg_namespace

sys_namespace

pg_opclass

sys_opclass

pg_operator

sys_operator

pg_opfamily

sys_opfamily

pg_partitioned_table

sys_partitioned_table

pg_pltemplate

sys_pltemplate

pg_policy

sys_policy

pg_proc

sys_proc

pg_publication

sys_publication

pg_publication_rel

sys_publication_rel

pg_range

sys_range

pg_replication_origin

sys_replication_origin

pg_rewrite

sys_rewrite

pg_seclabel

sys_seclabel

pg_sequence

sys_sequence

pg_shdepend

sys_shdepend

pg_shdescription

sys_shdescription

pg_shseclabel

sys_shseclabel

pg_statistic

sys_statistic

pg_statistic_ext

sys_statistic_ext

pg_subscription

sys_subscription

pg_subscription_rel

sys_subscription_rel

pg_tablespace

sys_tablespace

pg_transform

sys_transform

pg_trigger

sys_trigger

pg_ts_config

sys_ts_config

pg_ts_config_map

sys_ts_config_map

pg_ts_dict

sys_ts_dict

pg_ts_parser

sys_ts_parser

pg_ts_template

sys_ts_template

pg_type

sys_type

pg_user_mapping

sys_user_mapping

System Views

sysstem Views

pg_available_extensions

sys_available_extensions

pg_available_extension_versions

sys_available_extension_versions

pg_config

sys_config

pg_cursors

sys_cursors

pg_file_settings

sys_file_settings

pg_group

sys_group

pg_hba_file_rules

sys_hba_file_rules

pg_indexes

sys_indexes

pg_locks

sys_locks

pg_matviews

sys_matviews

pg_policies

sys_policies

pg_prepared_statements

sys_prepared_statements

pg_prepared_xacts

sys_prepared_xacts

pg_publication_tables

sys_publication_tables

pg_replication_origin_status

sys_replication_origin_status

pg_replication_slots

sys_replication_slots

pg_roles

sys_roles

pg_rules

sys_rules

pg_seclabels

sys_seclabels

pg_sequences

sys_sequences

pg_settings

sys_settings

pg_shadow

sys_shadow

pg_stats

sys_stats

pg_tables

sys_tables

pg_timezone_abbrevs

sys_timezone_abbrevs

pg_timezone_names

sys_timezone_names

pg_user

sys_user

pg_user_mappings

sys_user_mappings

pg_views

sys_views

这两张表都是能找到的,具体来源我也不太确定,kingbase只是将postgresql 的表的前缀从 pg 改成了 sys…数据目录结构和组成基本一致。

2.4 集群方面

图中各组件的介绍和作用:

  • postgresql 官方的数据库系统, 内置了副本机制, 复制模式支持全同步、半同步、全异步模式。同时还支持级联复制.
  • citus 它是postgresql的一个扩展, 为 postgresql 提供了分布式能力, 它和Mysql生态中的Mycat的作用类似.
    • 它不入侵 Postgresql 代码, 而是依托于 Postgresql 而不是改造 Postgresql, 因此可以使用postgresql最新版本的功能、工具和生态系统。
    • 它将 Postgresql 从单个节点扩展到大型分布式数据库集群, 可以随意水平扩展以支持更大的数据量、更大的写入和查询性能。
    • citus将节点分为协调器节点和工作节点, 协调器节点除了集群元数据外不存储任何数据分片。应用程序将查询发送到协调器节点,协调器将其发送给相关工作节点并行执行, 最后协调器汇集结果后返回给应用程序。工作节点接收协调器发送过来的指令,执行命令,存储分片数据,并将执行结果返回给协调器等, 客户端只需连接到协调器即可, 工作节点对于客户端而言是透明的.
    • 但它不具备高可用和自动故障切换的能力, 高可用完全依赖postgresql自身提供功能.
  • patroni 它为 postgresql 提供了自动化配置和自动故障转移能力, patroni内置对citus的集成. Patroni 接管了 Postgresql 的配置和启停管理, 同时自动化执行数据同步. 它依赖DCS(分布式配置存储)系统来实现配置共享和自动故障切换. 它利用DCS的分布式锁实现只有一个Leader. 主备及数据同步则调用Postgresql内置的功能实现(流复制).
  • etcd-server 它作为 Patroni 的 DCS(分布式配置存储)系统, patroni也支持的其它的DCS: consul,zookeeper,kubernetes等.
  • vip-manager 它为citus的协调器组提供了 VIP 漂移功能, 它根据 DCS 中的 leader 的键来决定本机是否应该获取 VIP, 因此能很好的配合 patroni, 虽然keepalived也提供类似的功能, 但keepalived无法根据服务状态漂移VIP, 只能根据机器决定是否漂移VIP, 这可能会导致VIP和Leader不一致的问题. 另外, patroni可以手动切换主备. keepalived无法支持, 当然还有其它一些问题不展开了.
  • 该部分引用:PostgreSQL 分布式高可用集群方案 - 知乎 (zhihu.com)

kingbase集群:

KingbaseES R6 集群修改物理IP和VIP案例-CSDN博客

这里直接引用一篇文章,postgresql高可用的解决方案,然后看看kes86的集群管理,总有对的上号的,比如repmgr。

三、总结

人大金仓与PostgreSQL集群之间的差别主要体现在以下几个方面:

首先,人大金仓的核心产品金仓交易型数据库KingbaseES具备高兼容、高可靠、高性能、高扩展、高安全、易使用和易管理的特点。它是唯一入选国家自主创新产品目录的数据库产品,并在国家级、省部级实际项目中得到广泛应用。特别地,KingbaseES提供了容错功能体系,通过数据备份、恢复、同步复制、多数据副本等高可用技术,确保数据库能够7×24小时不间断地提供服务。此外,它还提供了全新设计的集成开发环境(IDE)和集成管理平台,以及基于并行计算、索引覆盖等技术在内的多种性能优化手段。

而PostgreSQL作为最先进的开源数据库,自诞生之初就带有许多高级特性,如丰富的函数和高级扩展包等。PostgreSQL的集群模式是将多个单机数据库以集群化的方式对外提供服务,主备之间保持数据同步。其高级特性包括主备切换、故障自动切换、负载均衡、备份恢复、慢日志、审计日志等,这些高级特性通常需要结合插件或第三方中间件如pgbouncer、pgpool来实现。

其次,从产品架构上看,Kingbase 8是基于PostgreSQL 9.6的,尽管两者有一些相似之处,但在一些关键细节上存在差异。例如,在JDBC连接方面,PostgreSQL的默认端口是5432,而人大金仓的默认端口是54321。在命令程序方面,Kingbase只是将PostgreSQL的表的前缀从pg改成了sys或者kb。

最后,从市场定位和应用场景来看,国产数据库如人大金仓的产品目前处在起步阶段,尽管有一定的市场规模,但在整个大的市场份额和市场定位中,其影响力相对较弱,还没有撼动国外产品的垄断地位。而PostgreSQL作为开源数据库,已经在全球范围内得到了广泛的应用和认可。只能说完美兼容pg…

相关文章:

人大金仓国产数据库与PostgreSQL

一、简介 在前面项目中,我们使用若依前后端分离整合人大金仓,在后续开发过程中,我们经常因为各种”不适配“问题,但可以感觉得到大部分问题,将人大金仓视为postgreSQL就能去解决大部分问题。据了解,Kingba…...

《认知·策略·跃迁:新能源汽车工程师的深度学习系统构建指南》

--- ## 前言:为什么传统学习法正在杀死你的竞争力? 在新能源汽车领域,我们正经历着每18个月知识体系更新迭代的指数级变革。当磷酸铁锂电池能量密度刚突破200Wh/kg时,固态电池已进入量产倒计时;当自动驾驶还在L2级徘…...

存贮论模型案例与Matlab实现

摘要:本文结合存贮论确定性模型,详细解析经济订购批量(EOQ)、允许缺货生产批量等核心模型,并通过商品库存管理、生产计划等实际案例,配合Matlab代码实现,展示模型求解过程。涵盖公式推导、参数优…...

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…...

linux 内核dumpstack定位使用举例说明

1,在 Linux 内核中,当你需要定位问题时,dump_stack() 函数是一个非常有用的工具,那么什么时候使用dump_stack,怎么使用dump_stack呢 通常使用的是前者)函数通常在以下情况下被用来帮助定位问题: 调试内核代…...

360个人版和企业版的区别

功能方面 管理能力 个人版:主要用于单台设备的安全防护,只能在单独的电脑上进行安装使用,无集中管理和监控其他设备的功能。企业版:可批量管理大量电脑,如公司的十台、百台甚至千台电脑。管理员能通过管理控制台对所有…...

服务器迁移记录【腾讯云-->阿里云】

准备工作 压缩/root /usr/local/nginx /data三个目录到zip,并下载到本地。 zip root.zip /root zip nginx.zip /usr/local/nginx zip data.zip /datasz root.zip sz nginx.zip sz data.zip连接mysql数据库,导出数据库结构与数据到dzs_mysql.sql 安装l…...

APISIX Dashboard上的配置操作

文章目录 登录配置路由配置消费者创建后端服务项目配置上游再创建一个路由测试 登录 http://192.168.10.101:9000/user/login?redirect%2Fdashboard 根据docker 容器里的指定端口: 配置路由 通过apisix 的API管理接口来创建(此路由,直接…...

【vue-echarts】——05.柱状图

文章目录 一、柱状图基本设置1.实现代码2.结果展示二、柱状图效果实现11.代码实现2.结果展示三、柱状图效果实现21.代码实现2.结果展示一、柱状图基本设置 柱状图:一种图表类型,因为构成是由一根一根类似柱子的数据条组合而成的坐标平面,所以命名为柱状 图。主要是用来反应对…...

计算机毕业设计SpringBoot+Vue.js人力资源管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

腾讯云扩容记录

腾讯云扩容: sudo yum install -y cloud-utils-growpart 安装扩容工具 sudo file -s /dev/vda1 有数据 sudo LC_ALLen_US.UTF-8 growpart /dev/vda 1 sudo resize2fs /dev/vda1 df -Th 完毕 以下是对执行的命令的详细解释以及背后的原理: 1. 安装 cloud…...

Cherry Studio + 火山引擎 构建个人AI智能知识库

🍉在信息化时代,个人知识库的构建对于提高工作效率、知识管理和信息提取尤为重要。尤其是当这些知识库能结合人工智能来智能化地整理、分类和管理数据时,效果更为显著。我最近尝试通过 Cherry Studio 和 火山引擎 来搭建个人智能知识库&#…...

RocketMQ启动教程

环境是ubuntu,建议ubuntu,因为有root用户权限够大,不像windows十分费劲,跑Docker总是遇到权限问题,但是ubuntu的话就很轻松了,整个流程非常顺利 文章目录 1.Docker安装NameServer2.安装broker3.Docker安装 …...

完美解锁便捷版!

视频文件的种类繁多,包括常见的格式如MP4、AVI、MOV、MKV等。随着视频技术的发展,新的编码格式如HEVC(H.265)和AV1也逐渐被广泛应用;视频文件通常会经过压缩,并且每种格式都有其独特的编码方式和特性&#…...

JAVA SE 包装类和泛型

文章目录 📕1. 包装类✏️1.1 基本数据类型和对应的包装类✏️1.2 装箱和拆箱✏️1.3 自动装箱和自动拆箱 📕2. 泛型✏️2.1 泛型的语法✏️2.2 泛型类的使用✏️2.3 裸类型(Raw Type)✏️2.4 擦除机制✏️2.5 泛型的上界✏️2.6 泛型方法✏️2.7 通配符…...

人工智能AI在汽车设计领域的应用探索

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...

driver中为什么要使用非阻塞赋值

1. 模拟硬件时序行为 实际硬件行为:DUT的输入信号通常在时钟边沿被采样。Driver需要确保信号的更新与时钟同步,而非阻塞赋值的延迟更新特性(在时间步结束时统一生效)能够准确模拟寄存器的行为。 示例: always (posedg…...

Vue3国际化开发实战:i18n-Ally + vue-i18n@next高效配置教程,项目中文显示

本文详解 Vue3 国际化开发全流程:从安装 vue-i18nnext 到配置多语言文件(JSON/YAML),结合 i18n-Ally 插件实现高效翻译管理。重点涵盖: 工程配置:创建 i18n 实例、模块化语言文件结构(支持命名…...

深入理解Spring @Async:异步编程的利器与实战指南

一、为什么需要异步编程? 在现代高并发系统中,同步阻塞式编程会带来两大核心问题: // 同步处理示例 public void processOrder(Order order) {// 1. 保存订单(耗时50ms)orderRepository.save(order); // 2. 发送短信…...

java后端开发day25--阶段项目(二)

(以下内容全部来自上述课程) 1.美化界面 private void initImage() {//路径分两种://1.绝对路径:从盘符开始写的路径 D:\\aaa\\bbb\\ccc.jpg//2.相对路径:从当前项目开始写的路径 aaa\\bbb\\ccc.jpg//添加图片的时…...

Python接口自动化中操作Excel文件的技术方法

在Python接口自动化测试中,操作Excel文件是一项常见且关键的技术需求。Excel作为数据存储和数据分析的重要工具,在自动化测试中通常用于存储测试用例、测试数据以及测试结果。通过Python操作Excel,可以大大提高测试的效率和灵活性。以下是一些…...

几道考研数学题求解

函数性质问题 【题目】 已知函数 f ( x , y ) x 3 y 3 − ( x y ) 2 3 f(x, y) x^3 y^3 - (xy)^2 3 f(x,y)x3y3−(xy)23。设 T T T 为曲面 z f ( x , y ) z f(x, y) zf(x,y) 在点 ( 1 , 1 , 1 ) (1,1,1) (1,1,1) 处的切平面, D D D 为 T T T 与坐标…...

如何在Spring Boot项目中集成JWT实现安全认证?

在Spring Boot项目中集成JWT实现安全认证是常见的需求。本文将详细介绍如何在Spring Boot项目中集成JWT,并通过一个完整的示例演示如何实现安全认证。 一、环境准备 首先,确保你的Spring Boot项目已经创建。然后,添加以下依赖到pom.xml文件…...

【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random

文章目录 一、随机数生成器 是什么 ?二、为什么 需要 随机数生成器 ?三、随机数生成器 基本原理四、随机数生成器 三个输出接口五、随机生成器 应用1、简单应用2、项目应用一、随机数生成器 是什么 ? /dev/random 和 /dev/urandom 是 Linux 上的字符设备文件,它们是随机数…...

Python可视化大框架的研究与应用

## 摘要 随着数据科学和人工智能的快速发展,数据可视化成为了数据分析中不可或缺的一部分。Python作为一种功能强大且易于学习的编程语言,提供了多种可视化工具和库。本文旨在探讨Python可视化的主要框架,分析其特点、应用场景以及未来发展趋…...

Django ORM 的常用字段类型、外键关联的跨表引用技巧,以及 `_` 和 `__` 的使用场景

一、Django ORM 常用字段类型 1. 基础字段类型 字段类型说明示例CharField字符串字段,必须指定 max_lengthname models.CharField(max_length50)IntegerField整数字段age models.IntegerField()BooleanField布尔值字段is_active models.BooleanField()DateFiel…...

(动态规划 最长递增的子序列)leetcode 300

这道题我第一眼反应就是暴力,但是暴力的话就是n*n-1*n-2*...n-(n-1) 也就是O(n^n)dfs做绝对超时 贪心也不行,这里是子序列,要考虑在ni的范围内考虑多种路线取最优,所以用动态规划 如何用动态规划呢? 答:…...

小皮网站搭建

前提:小皮的安装下载 1、在www目录下创建一个新的文件夹,用来存放网站源码; 2、安装数据库管理工具phpMyadmin 3、新建数据表 添加字段 4、创建网站 5、前端的登录代码 注册 后端php 网页展示 登录成功跳转welcome.php...

3.16 AI Agent 技术全景解析:从核心能力到企业级应用实践

AI Agent 技术全景解析:从核心能力到企业级应用实践 关键词:AI Agent 技术架构, 大模型智能体开发, 自主决策系统设计, 模块化 Agent 设计, 企业级 Agent 应用 1. AI Agent 的本质定义与核心能力 AI Agent 是具备环境感知、自主决策和持续进化能力的智能系统,其核心特征可…...

【CSS—前端快速入门】CSS 常用样式

CSS 常用 CSS 样式 1. 前端样式查询网站: MDN Web Docs (mozilla.org) w3school 2. border 2.1 借助 MDN 了解 border 我们借助 MDN 网站来学习 border 样式的使用: 2.2 border 常见属性 保存代码,打开页面: 对于标签不同样式的…...