人大金倉國產數據庫與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…

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72315.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72315.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72315.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python之參數星號(*)使用筆記

背景 在學習python時發現方法調用和方法定義會經常發現有帶星號的標記,為了弄明白是怎么使用的。特此做個筆記。 一、參數符號對比速查表 符號類使用場景作用描述示例無符號函數定義/調用普通位置參數或關鍵字參數.def func(a, b)*函數定義收集多余位置參數為元組…

使用haproxy實現MySQL服務器負載均衡

一、環境準備 主機名IP地址備注openEuler-1192.168.121.11mysql-server-1openEuler-2192.168.121.12mysql-server-2openEuler-3192.168.121.13clientRocky-1192.168.121.51haproxy 二、mysql-server配置 [rootopenEuler-1 ~]# yum install -y mariadb-server [rootopenEuler…

Python與Web3.py庫:構建去中心化應用的未來

Python與Web3.py庫:構建去中心化應用的未來 在區塊鏈的世界里,“去中心化”是最核心的理念之一,它賦予了用戶更多的控制權和自由,消除了傳統中心化系統中的單點故障和信任問題。而在這場技術革命中,Web3.0無疑是最受矚…

對“預訓練”的理解

預訓練有什么用 傳統的機器學習是偏數學的,對數據的量不做過多要求,而深度學習的項目通常是有大量的數據可供使用。 在平常的任務或者項目中,我們可能并沒有大量數據,只有少量數據,在這時我們就可以通過“借用”有大…

VMware Ubuntu 共享目錄

在VMware中掛載Ubuntu共享目錄需要以下步驟,分為設置共享文件夾和在Ubuntu中掛載兩部分: 一、VMware 設置共享文件夾 關閉Ubuntu虛擬機 在配置前,建議先關閉虛擬機(若已運行需關閉,部分VMware版本支持熱添加&#xff0…

AF3 crop_chains函數解讀

AlphaFold3 feature_processing_multimer模塊的crop_chains函數的功能是對多條鏈的蛋白質結構預測任務中的MSA(多序列比對)特征和模板特征進行裁剪(cropping)。裁剪的目的是為了控制輸入模型的MSA序列數量和模板數量,以適應模型的輸入限制或優化計算效率。 源代碼: def…

Java基礎-數組,集合創建方式

Java 中 new 關鍵字的作用 在 Java 中,new 關鍵字用于 在堆內存中分配空間 并創建對象。 數組 和 集合 在 Java 中都是對象,因此必須使用 new 來創建實例。Java 和 C 之間的主要區別在于 內存管理 和 對象的創建方式。 Java 與 C 中數組 & 集合的創…

LeeCode題庫第三十九題

39.組合總和 項目場景: 給你一個 無重復元素 的整數數組 candidates 和一個目標整數 target ,找出 candidates 中可以使數字和為目標數 target 的 所有 不同組合 ,并以列表形式返回。你可以按 任意順序 返回這些組合。 candidates 中的 同…

大模型應用案例 | 大模型+金融運維,擎創攜手某證券創新運維能力新范式

一、當大模型遇上金融運維:一場讓告警處理“脫胎換骨”的變革 2022年底,ChatGPT的橫空出世讓AI技術徹底出圈;短短兩年后,大模型已悄然潛入金融行業的“心臟地帶”——運維系統。面對指數級暴增的告警信息、碎片化的處理流程&#…

【MongoDB】在Windows11下安裝與使用

官網下載鏈接:Download MongoDB Community Server 官方參考文檔:https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 選擇custom類型,其他默認 注意,此選…

阿里云輕量級服務器通過寶塔安裝PgVector要點

設置環境變量: export PG_HOME/www/server/pgsql export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/www/server/pgsql/lib export PG_CONFIG/www/server/pgsql/bin/pg_config export PGDATA/www/server/pgsql/data PATH$PATH:$HOME/.local/bin:$HOME/bin:$PG_HOME/bin ali…

OpenSSL 基礎使用流程

理解 OpenSSL 的基礎使用流程是學習如何進行安全通信的關鍵,特別是在實現 SSL/TLS 連接時。以下是 OpenSSL 基礎使用流程的一個簡要總結,并附上一個簡單的示例代碼,幫助你理解如何通過 OpenSSL 建立一個基本的安全通信連接。 OpenSSL 基礎使…

什么是最終一致性,它對后端系統的意義是什么

最終一致性(Eventual Consistency)是分布式系統中的一種一致性模型。與傳統的強一致性模型不同,最終一致性并不要求系統在任何時刻都保持一致,而是保證在足夠的時間后,所有節點的數據最終會達到一致的狀態。換句話說,系統允許短時間內出現數據的不一致性,但最終會通過某…

SQL命令詳解之增刪改數據

目錄 簡介 1 添加數據 1.1 基礎語法 1.2 SQL 練習 2 修改數據 2.1 基礎語法 2.2 SQL 練習 ?3 刪除數據 3.1 基礎語法 3.2 SQL 練習 總結 簡介 在數據庫操作中,增、刪、改是最基礎的操作,它們通常對應著SQL中的INSERT、DELETE和UPDATE命令。…

std::allocator_traits 能做但 std::allocator 不能的事情

🌟 std::allocator_traits 能做但 std::allocator 不能的事情 1?? 適配自定義分配器 假設你要實現一個內存池 MyAllocator,而 STL 容器默認使用的是 std::allocator。 如果你希望 STL 容器可以使用你的 MyAllocator,你 不能直接用 std::a…

QT——c++界面編程庫

非界面編程 QT編譯的時候,依賴于 .pro 配置文件: SOURCES: 所有需要參與編譯的 .cpp 源文件 HEADERS:所有需要參與編譯的.h 頭文件 QT:所有需要參與編譯的 QT函數庫 .pro文件一旦修改,注意需要鍵盤按 ctrls 才能加載最新的配置文…

基于專利合作地址匹配的數據構建區域協同矩陣

文章目錄 地區地址提取完成的處理代碼 在專利合作申請表中,有多家公司合作申請。在專利權人地址中, 有多個公司的地址信息。故想利用這里多個地址。想用這里的地址來代表區域之間的專利合作情況代表區域之間的協同、協作情況。 下圖是專利合作表的一部分…

汽車小助手智能體

汽車小助手:智能驅動汽車服務新體驗 鏈接:文心智能體平臺AgentBuilder | 想象即現實 文心智能體平臺AgentBuilder,是百度推出的基于文心大模型的智能體平臺,支持廣大開發者根據自身行業領域、應用場景,選取不同類型的…

各種傳參形式

一、QueryString 前端請求:http://localhost:8080/test/user/find?id26&namezhangsan 后端接收: 1.參數接收: RequestMapping("/find") public void find(String id,String name){... }2.對象接收: RequestMa…

【vue-echarts】——03.配置項---tooltip

文章目錄 一、tooltip提示框組件二、顯示結果一、tooltip提示框組件 提示框組件,用于配置鼠標滑過或點擊圖表時的顯示框 代碼如下 Demo3View.vue <template><div class="about">