暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库的秘密

数据库研究院 2021-04-26
11042


 

人大金仓数据库管理系统KingbaseES(简称:金仓数据库或KingbaseES)是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。
金仓数据库主要面向事务处理类应用,兼顾各类数据分析类应用,可用做管理信息系统、业务及生产系统、决策支持系统、多维数据分析、全文检索、地理信息系统、图片搜索等的承载数据库。 
金仓数据库KingbaseES是唯一入选国家自主创新产品目录的数据库产品。


接下来让我探索下人大金仓的秘密:

查看数据库版本号:

#show server_version;

  server_version   

-------------------

 V008R003C002B0061

(1 row)

#

可以看到这是人大金仓的 V008R003C002B0061版本。


查看一些系统表,是不是发现一些秘密,怎么跟POSTGRESQL如此的像?只不过是将PG的敏感字样替换成了SYS系统字样:


#\dt SYS_TYPE  

            List of relations

   Schema    |   Name   | Type  | Owner  

-------------+----------+-------+--------

 SYS_CATALOG | SYS_TYPE | table | SYSTEM

(1 row)


# \d SYS_TYPE 

        Table "SYS_CATALOG.SYS_TYPE"

     Column     |     Type      | Modifiers 

----------------+---------------+-----------

 TYPNAME        | NAME          | not null

 TYPNAMESPACE   | OID           | not null

 TYPOWNER       | OID           | not null

 TYPLEN         | SMALLINT      | not null

 TYPBYVAL       | BOOLEAN       | not null

 TYPTYPE        | "CHAR"        | not null

 TYPCATEGORY    | "CHAR"        | not null

 TYPISPREFERRED | BOOLEAN       | not null

 TYPISDEFINED   | BOOLEAN       | not null

 TYPDELIM       | "CHAR"        | not null

 TYPRELID       | OID           | not null

 TYPELEM        | OID           | not null

 TYPARRAY       | OID           | not null

 TYPINPUT       | REGPROC       | not null

TYPOUTPUT      | REGPROC       | not null

TYPRECEIVE     | REGPROC       | not null

TYPSEND        | REGPROC       | not null

TYPMODIN       | REGPROC       | not null

 TYPMODOUT      | REGPROC       | not null

 TYPANALYZE     | REGPROC       | not null

 TYPALIGN       | "CHAR"        | not null

 TYPSTORAGE     | "CHAR"        | not null

 TYPNOTNULL     | BOOLEAN       | not null

 TYPBASETYPE    | OID           | not null

 TYPTYPMOD      | INTEGER       | not null

 TYPNDIMS       | INTEGER       | not null

 TYPCOLLATION   | OID           | not null

 TYPDEFAULTBIN  | SYS_NODE_TREE | 

 TYPDEFAULT     | TEXT          | 

 TYPACL         | ACLITEM[]     | 

Indexes:

    "SYS_TYPE_OID_INDEX" UNIQUE, BTREE (OID)

    "SYS_TYPE_TYPNAME_NSP_INDEX" UNIQUE, BTREE (TYPNAME, TYPNAMESPACE)

我们查看日志信息:

[root@amreica sys_log]# ls -al

总用量 20

drwx------  2 kingbase kingbase 4096 2月   6 00:00 .

drwx------ 21 kingbase kingbase 4096 2月   5 15:57 ..

-rw-------  1 kingbase kingbase 1439 2月   5 15:57 kingbase-2020-08-05_155752.log

-rw-------  1 kingbase kingbase  283 2月   6 11:22 kingbase-2020-08-06_000000.log

-rw-------  1 kingbase kingbase 1471 2月   5 15:57 startup.log

[root@amreica sys_log]# 

[root@amreica sys_log]# 

[root@amreica Logs]# ls -al

总用量 528

drwxrwxr-x  2 kingbase kingbase   4096 2月   3 16:31 .

drwxr-x--x 22 kingbase kingbase   4096 2月   3 16:31 ..

-rwxr-xr-x  1 kingbase kingbase 531267 2月   3 16:31 KingbaseES_V8.log

[root@amreica Logs]# 


但是这时候发现并没有在线的二进制日志,这时候需要人大金仓开启下列数据库参数,在kingbase.conf配置文件里,有个log_statement,参数分为四档,分别是none, ddl, mod, all用来控制哪些 SQL 语句被记录,ddl记录所有数据定义语句,例如CREATE、ALTER和DROP语句。mod记录所有ddl语句,外加数据修改语句例如INSERT,UPDATE、DELETE、TRUNCATE,和COPY FROM。如果PREPARE、EXECUTE和EXPLAIN ANALYZE包含合适类型的命令,它们也会被记录。对于使用扩展查询协议的客户端,当收到一个执行消息时会产生日志并且会包括绑定参数的值(任何内嵌的单引号会被双写)。


关闭数据库:

[kingbase@amreica ~]$ sys_ctl stop -D  home/kingbase/opt/data

等待服务器进程关闭 .... 完成

服务器进程已经关闭

[kingbase@amreica ~]$ 


启动数据库:

kingbase -D  home/kingbase/opt/data  >logfile 2>&1 &

日志信息:

位置:  PostmasterMain, postmaster.c:623

致命错误:  XX000: License file should have write access mode in floating mode, or use license generating date as base date.

位置:  PostmasterMain, postmaster.c:623

致命错误:  XX000: License file should have write access mode in floating mode, or use license generating date as base date.

位置:  PostmasterMain, postmaster.c:623

致命错误:  XX000: license file error, product version number does not match

位置:  PostmasterMain, postmaster.c:627

致命错误:  XX000: License file should have write access mode in floating mode, or use license generating date as base date.

位置:  PostmasterMain, postmaster.c:623

致命错误:  XX000: License file should have write access mode in floating mode, or use license generating date as base date.

位置:  PostmasterMain, postmaster.c:623

2020-08-05 15:57:52 CST 日志:  日志输出重定向到日志收集进程

2020-08-05 15:57:52 CST 提示:  后续的日志输出将出现在目录 "sys_log"中.

[kingbase@amreica sys_log]$ 


参数开启会发现人大金仓的数据库日志记录到:

/home/kingbase/opt/data/sys_xlog

[kingbase@amreica sys_xlog]$ ls -al

总用量 16396

drwx------  3 kingbase kingbase     4096 2月   3 16:31 .

drwx------ 21 kingbase kingbase     4096 2月   6 14:02 ..

-rw-------  1 kingbase kingbase 16777216 2月   6 14:07 000000010000000000000001

drwx------  2 kingbase kingbase     4096 2月   3 16:31 archive_status

[kingbase@amreica sys_xlog]$ 



查看正常日志路径:

TEST=# show log_directory;                                                                             

       log_directory       

---------------------------

 /home/kingbase/opt/data/tt

(1 row)

TEST=# 


强制开启表的全列日志:

test=# alter table TT REPLICA IDENTITY FULL;

ALTER TABLE

test=# insert into TT values (11);

INSERT 0 1

test=# 

切换在线日志:

# select sys_switch_xlog();

 sys_switch_xlog 

-----------------

 0/2000000

(1 row)


可以看到他这个把原有pg系统的表名都改为:

# select TABLE_NAME from user_tables;

        TABLE_NAME        

--------------------------

 CHECK_PARAM

 CHECK_TYPE

 DEPEND

 dual

 HM_RUN_T

 LOCAL_NODE

 LOCAL_SYNC_STATUS

 NODE

 NODE_INTERFACE

 QUEUE

 REPLICATION_SET

 REPLICATION_SET_SEQ

 REPLICATION_SET_SLOT

 REPLICATION_SET_TABLE

 SEQUENCE_STATE

 sql_features

 sql_implementation_info

 sql_languages

 sql_packages

 sql_parts

 sql_sizing

 sql_sizing_profiles

 SUBSCRIPTION

 SYS_AGGREGATE

 SYS_AM

 SYS_AMOP

 SYS_AMPROC

 SYS_ATTRDEF

 SYS_ATTRIBUTE

 SYS_AUDIT_BLOCKLOG

 sysaudit_ids_log

 sysaudit_ids_rules

 sysaudit_rule

 sysaudit_setting

 SYS_AUDIT_USERLOG

 SYS_AUTHID

 SYS_AUTH_MEMBERS

 SYS_CAST

 SYS_CLASS

 SYS_COLLATION

 SYS_CONSTRAINT

 SYS_CONVERSION

 SYS_DATABASE 

 sys开头的系统表名了


结论:


人大金仓是在POSTGRESQL的基础之上做了数据库的大量的升级优化而来,PG的特征很明显,属于PG的衍生数据库。
最后修改时间:2021-05-06 13:59:07
文章转载自数据库研究院,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论