PostgreSQL 9.6 与 人大金仓 8(Kingbase 8) 的差异化对比

PostgreSQL 9.6 与 人大金仓 8(Kingbase 8) 的差异对比

据了解,Kingbase 是基于 开源数据库 PostgreSQL 开发的,大部分功能与 PostgreSQL兼容。Kingbase 8 是基于 PostgreSQL 9.6 的。本文列举发现的 PostgreSQL 9.6 与 Kingbase 8 的差异对比。

1、JDBC

postgresql 9.6kingbase 8
driver_classorg.postgresql.Drivercom.kingbase8.Driver
urljdbc:postgresql://127.0.0.1:5432/postgresjdbc:kingbase8://127.0.0.1:54321/kingbase
jdbc 的 jarpostgresql.jdbc-9.0.jar org.postgresql postgresql.jdbc 9.0 kingbase8-8.2.0.jar com.kingbase8 kingbase8-jdbc 8.2.0
hibernate 的jarhibernate-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.PostgreSQL9Dialectorg.hibernate.dialect.Kingbase8Dialect

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

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

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

这些参数可根据实际调整

2 、命令程序

postgresql 9.6kingbase 8
pgbenchkbbench
postgreskingbase
psqlksql
pg_archivecleanupsys_archivecleanup
pg_basebackupsys_basebackup
pg_bulkloadsys_bulkload
pg_configsys_config
pg_controldatasys_controldata
pg_ctlsys_ctl
pg_dumpsys_dump
pg_dumpallsys_dumpall
pg_hmsys_hm
pg_isreadysys_isready
pglogical_create_subscribersyslogical_create_subscriber
pg_receivexlogsys_receivexlog
pg_recvlogicalsys_recvlogical
pg_resetxlogsys_resetxlog
pg_restoresys_restore
pg_rewindsys_rewind
pg_rmansys_rman
pg_test_fsyncsys_test_fsync
pg_test_timingsys_test_timing
pg_upgradesys_upgrade
pg_xlogdumpsys_xlogdump

可以看到,这里kingbase只是将postgresql 的表的前缀从 pg 改成了 sys 或者 kb。

3、 系统表和视图

postgresql 9.6kingbase 8
pg_aggregatesys_aggregate
pg_amsys_am
pg_amopsys_amop
pg_amprocsys_amproc
pg_attrdefsys_attrdef
pg_attributesys_attribute
pg_authidsys_authid
pg_auth_memberssys_auth_members
pg_castsys_cast
pg_classsys_class
pg_collationsys_collation
pg_constraintsys_constraint
pg_conversionsys_conversion
pg_databasesys_database
pg_db_role_settingsys_db_role_setting
pg_default_aclsys_default_acl
pg_dependsys_depend
pg_descriptionsys_description
pg_enumsys_enum
pg_event_triggersys_event_trigger
pg_extensionsys_extension
pg_foreign_data_wrappersys_foreign_data_wrapper
pg_foreign_serversys_foreign_server
pg_foreign_tablesys_foreign_table
pg_indexsys_index
pg_inheritssys_inherits
pg_init_privssys_init_privs
pg_languagesys_language
pg_largeobjectsys_largeobject
pg_largeobject_metadatasys_largeobject_metadata
pg_namespacesys_namespace
pg_opclasssys_opclass
pg_operatorsys_operator
pg_opfamilysys_opfamily
pg_partitioned_tablesys_partitioned_table
pg_pltemplatesys_pltemplate
pg_policysys_policy
pg_procsys_proc
pg_publicationsys_publication
pg_publication_relsys_publication_rel
pg_rangesys_range
pg_replication_originsys_replication_origin
pg_rewritesys_rewrite
pg_seclabelsys_seclabel
pg_sequencesys_sequence
pg_shdependsys_shdepend
pg_shdescriptionsys_shdescription
pg_shseclabelsys_shseclabel
pg_statisticsys_statistic
pg_statistic_extsys_statistic_ext
pg_subscriptionsys_subscription
pg_subscription_relsys_subscription_rel
pg_tablespacesys_tablespace
pg_transformsys_transform
pg_triggersys_trigger
pg_ts_configsys_ts_config
pg_ts_config_mapsys_ts_config_map
pg_ts_dictsys_ts_dict
pg_ts_parsersys_ts_parser
pg_ts_templatesys_ts_template
pg_typesys_type
pg_user_mappingsys_user_mapping
System Viewssysstem Views
pg_available_extensionssys_available_extensions
pg_available_extension_versionssys_available_extension_versions
pg_configsys_config
pg_cursorssys_cursors
pg_file_settingssys_file_settings
pg_groupsys_group
pg_hba_file_rulessys_hba_file_rules
pg_indexessys_indexes
pg_lockssys_locks
pg_matviewssys_matviews
pg_policiessys_policies
pg_prepared_statementssys_prepared_statements
pg_prepared_xactssys_prepared_xacts
pg_publication_tablessys_publication_tables
pg_replication_origin_statussys_replication_origin_status
pg_replication_slotssys_replication_slots
pg_rolessys_roles
pg_rulessys_rules
pg_seclabelssys_seclabels
pg_sequencessys_sequences
pg_settingssys_settings
pg_shadowsys_shadow
pg_statssys_stats
pg_tablessys_tables
pg_timezone_abbrevssys_timezone_abbrevs
pg_timezone_namessys_timezone_names
pg_usersys_user
pg_user_mappingssys_user_mappings
pg_viewssys_views

可以看到,这里 kingbase只是将postgresql 的表的前缀从 pg 改成了 sys


4 、创建函数的语法

差异项/数据库postgresql 9.6kingbase 8
函数定义create or replace function f(a int) returns int as b e g i n r e t u r n 0 ; e n d ; begin return 0; end; beginreturn0;end; language plpgsql;create or replace internal function f(a int) returns int as b e g i n r e t u r n 0 ; e n d ; begin return 0; end; beginreturn0;end; language plsql;
函数中声明变量create or replace function f(a int) returns int as declare a int; declare b varchar(32); b e g i n r e t u r n 0 ; e n d ; begin return 0; end; beginreturn0;end; language plpgsql;create or replace internal function f(a int) returns int as ∗ ∗ d e c l a r e ∗ ∗ a i n t ; b v a r c h a r ( 32 ) ; b e g i n r e t u r n 0 ; e n d ; **declare** a int; b varchar(32); begin return 0; end; declareaint;bvarchar(32);beginreturn0;end; language plsql;

5 、其他要注意的事项

如果需要程序保持对postgresql的兼容性,需要在kingbase 的配置文件kingbase.conf 中修改或新增下面几个参数:

char_default_type = 'char'

ora_func_style = false

ora_numop_style = false

ora_input_emptystr_isnull = false

ora_plsql_style = false

ora_date_style = 'off'

ora_format_style = 'off'

下面是这几个参数的含义:

参数含义
char_default_typeVARCHAR 类型的长度单位。 char 表示以字符位单位,byte表示以字节为单位。
ora_func_style设置兼容Oracle函数行为,默认为true启用状态。当设置true时, sequence.nextval兼容Oracle的Sequence伪列行为。 比如,SELECT SEQ.NEXTVAL AS A, SEQ.NEXTVAL AS B FROM DUAL,结果A B 值相同。 ltrim/rtrim/btrim兼容Oracle对应函数行为,最长的只包含characters只能是 一个字符。 textcat兼容Oracle字符串连接NULL时候,结果为字符串本身。 regexp_replace兼容Oracle该函数行为,regexp_replace参数中有NULL出现,当做 空串处理。 当关闭(false)ora_func_style时,上述函数表现为原有形式。
ora_numop_style是否兼容oracle 数学运算符的用法。默认为true。
ora_input_emptystr_isnull设置空串输入的输入形式(空串或NULL)及部分函数返回值空串输出形式(空串或NULL),默认为true启用状态。当启用(true)ora_input_emptystr_isnull时, 若输入空串,则空串将变成NULL的形式输入。
ora_plsql_style是否是oracle的plsql风格。默认是true。
ora_date_style是否是oracle的日期风格。默认是true。
ora_format_style是否是oracle的格式风格。默认是true。
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值