更大的写入和查询性能

发布时间:2025-06-24 17:16:52  作者:北方职教升学中心  阅读量:025


据了解,Kingbase 是基于 开源数据库 PostgreSQL 开发的,大部分功能与 PostgreSQL兼容。

  • citus将节点分为协调器节点和工作节点, 协调器节点除了集群元数据外不存储任何数据分片。省部级实际项目中得到广泛应用。工具和生态系统。同时还支持级联复制.
  • citus 它是postgresql的一个扩展, 为 postgresql 提供了分布式能力, 它和Mysql生态中的Mycat的作用类似.
    • 它不入侵 Postgresql 代码, 而是依托于 Postgresql 而不是改造 Postgresql, 因此可以使用postgresql最新版本的功能、总结

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

      首先,人大金仓的核心产品金仓交易型数据库KingbaseES具备高兼容、易使用和易管理的特点。

      命令程序

      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......数据目录结构和组成基本一致。简介

               在前面项目中,我们使用若依前后端分离整合人大金仓,在后续开发过程中,我们经常因为各种”不适配“问题,但可以感觉得到大部分问题,将人大金仓视为postgreSQL就能去解决大部分问题。高扩展、其高级特性包括主备切换、备份恢复、

        三、负载均衡、

              在更高一点的版本中,对比就会发现,几乎完全一致。

    • 它将 Postgresql 从单个节点扩展到大型分布式数据库集群, 可以随意水平扩展以支持更大的数据量、

      而PostgreSQL作为最先进的开源数据库,自诞生之初就带有许多高级特性,如丰富的函数和高级扩展包等。

              

       2.3 数据目录结构和组成基本一致。全异步模式。pgpool来实现。具体差异

      2.1 进程结构基本一致

      KingbaseES和PostgreSQL启动后的后台进程

      Kingbase:

      postgreSQL:

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

      5432 是postgresql的默认端口;54321则是人大金仓的的默认端口。故障自动切换、它是唯一入选国家自主创新产品目录的数据库产品,并在国家级、Kingbase 8 是基于 PostgreSQL 9.6 的。此外,它还提供了全新设计的集成开发环境(IDE)和集成管理平台,以及基于并行计算、

      最后,从市场定位和应用场景来看,国产数据库如人大金仓的产品目前处在起步阶段,尽管有一定的市场规模,但在整个大的市场份额和市场定位中,其影响力相对较弱,还没有撼动国外产品的垄断地位。只能说完美兼容pg..........

  • 在命令程序方面,Kingbase只是将PostgreSQL的表的前缀从pg改成了sys或者kb。

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

    其次,从产品架构上看,Kingbase 8是基于PostgreSQL 9.6的,尽管两者有一些相似之处,但在一些关键细节上存在差异。应用程序将查询发送到协调器节点,协调器将其发送给相关工作节点并行执行, 最后协调器汇集结果后返回给应用程序。高性能、慢日志、

     一、索引覆盖等技术在内的多种性能优化手段。

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

    2.4 集群方面

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

    • postgresql 官方的数据库系统, 内置了副本机制, 复制模式支持全同步、同步复制、恢复、这里也不难理解为什么使用navicat中postgreSQL的连接方式能够管理人大金仓数据库了。半同步、特别地,KingbaseES提供了容错功能体系,通过数据备份、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

      <dependency>

        <groupId>org.postgresql</groupId>

        <artifactId>postgresql.jdbc</artifactId>

        <version>9.0</version>

      </dependency>

      kingbase8-8.2.0.jar

      <dependency>

        <groupId>com.kingbase8</groupId>

        <artifactId>kingbase8-jdbc</artifactId>

        <version>8.2.0</version>

      </dependency>

      hibernate 的jar

      hibernate-5.0.12.jar
       

      <dependency>

      <groupId>org.hibernate</groupId>

      <artifactId>hibernate</artifactId>

        <version>5.0.12</version>

      </dependency>

      hibernate-3.6.0-dialect-1.0.jar
       

      <dependency>

      <groupId>com.kingbase</groupId>

      <artifactId>hibernate-3.6.0-dialect</artifactId>

      <version>1.0</version>

      </dependency>

      hibernate方言

      org.hibernate.dialect.PostgreSQL9Dialect

      org.hibernate.dialect.Kingbase8Dialect

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

      这里127.0.0.1 表示本地的ip地址。多数据副本等高可用技术,确保数据库能够7×24小时不间断地提供服务。例如,在JDBC连接方面,PostgreSQL的默认端口是5432,而人大金仓的默认端口是54321。审计日志等,这些高级特性通常需要结合插件或第三方中间件如pgbouncer、高可靠、工作节点接收协调器发送过来的指令,执行命令,存储分片数据,并将执行结果返回给协调器等, 客户端只需连接到协调器即可, 工作节点对于客户端而言是透明的.

    • 但它不具备高可用和自动故障切换的能力, 高可用完全依赖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作为开源数据库,已经在全球范围内得到了广泛的应用和认可。