人大金仓数据库KingbaseES walminer数据字典介绍

关键字:、人大金仓、KingbaseES、walminer

一、walminer数据字典概述

Walminer是从PostgreSQL的WAL(write ahead logs)日志的解析工具,它可以从wal日志中解析出用户执行的DML语句,以及用户执行DDL语句对系统表产生的DML语句。它的前身是xlogminer,但是xlogminer有较大的限制,比如wal日志级别需要是logical、需要将表改为FULL模式。Walminer则不需要这些限制,它可以解析普通的archive或replica级别以上的wal日志。

walminer数据字典是walminer实现对wal日志解析的关键,它存储了有关数据库对象信息,包含了数据库中各表的元数据,列信息,索引,约束等详细信息。

二、数据字典操作

解析 WAL 日志时,可以使用已存在的数据字典文件,如果不使用数据字典文件,则默认使用本库的元数据信息

导出数据字典

-- 可传入目录或文件全路径

-- 如果传入目录,数据字典默认名称为 dictionary.d

select walminer_build_dictionary('$KBDATA/sys_walminer/wm_datadict');

select walminer_build_dictionary('$KBDATA/sys_walminer/wm_datadict/dictionary.d');

导入数据字典

-- 可传入目录或文件全路径

-- 如果传入目录,会在目录下找 dictionary.d 文件,如果文件不存在,则报错

select walminer_load_dictionary('$KBDATA/sys_walminer/wm_datadict');

select walminer_load_dictionary('$KBDATA/sys_walminer/wm_datadict/dictionary.d');

三、build_dictionary函数介绍

build_dictionary函数的逻辑是用于构建事务日志(WAL)中的数据字典

build_dictionary函数的执行逻辑如下:

1、判断是否是绝对路径    

if(!is_absolute_path(target_path))

2、判断路径所在路径目录的读写权限

path_kind = path_judge(target_path);

3、创建字典文件

create_dictionary_file(final_path);

4、往数据字典文件中写入数据字典头的相关信息数据(ddh)

built_ddh(final_path);

5、往数据字典文件中写入oid与relfilenode的对应映射关系表,512KB为一个单位的从”pg_filenode.map“文件中读取数据并写入RelMapFile结构体中,这里会创建2个映射文件,一个是本地local,一个是用来共享的share

built_relmap(final_path);

6、写入系统表,包括pg_class,pg_attribute,pg_database,pg_namespace, pg_tablespace, pg_authid, pg_type, pg_auth_members,  我们会用一个while循环来执行写入操作,首先是对获取系统表数据,先进行扫描systable_beginscan(),再根据扫描结果,将数据添加到SingleCatalogCache结构体中,将表信息添加完后,最后写入数据字典文件

built_catalog_table(final_path);

7、写入生产数据字典的相关信息,如生成数据字典时,已经申请的数量,正在使用的位置,最终有表的个数

built_constraint(final_path);

参考资料

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值