利用大数据平台簇技术提高商业银行客户数据管理水平的研究
2021-10-18马卉宇
崔 超,马卉宇
(齐齐哈尔大学计算机与控制工程学院,黑龙江 齐齐哈尔 161006)
为满足商业银行大数据平台上不同职能部门服务创新、客户评价、精准营销、业务实时跟踪和事后稽核的需要,需对特定客户对象(或客户子集)有关业务的数据进行检索和更新,以支持不同部门的业务开展。基于平台簇技术,对有代表性的客户对象数据进行关联操作,能提高职能部门工作效率,保证向决策部门提出的业务评价更科学。客户在平台上办理业务所产生的业务数据,银行要依据业务种类进行分类,然后依据总账、分类账及永久数据和临时数据的相关原则完成有序处理。对于银行不同职能部门需要的业务数据,在实现数据仓库对应逻辑对象设计时,需要先创建客户账户,再建立客户多个有业务联系的逻辑对象的数据上的关联关系,并将有同一账号属性值的多个逻辑对象的数据物理存储在磁盘同一或若干个相邻的磁盘块,采用数据平台关联存储技术进行管理,实现商业银行客户数据关联存储方案的建立。
商业银行客户数据关联存储方案是将个性化客户在办理业务过程中所产生的多种业务数据,以账号进行记录分组,差异化地整合后分别存储在一个指定或若干个地址连续的磁盘块上,从而实现依据客户对象不同和银行业务数据划分原则,优化客户子集数据存储的目标。
1 商业银行客户数据关联
客户数据关联应用是大数据平台数据管理的一种技术,可以提高客户数据处理效率。在商业银行数据处理时,经常需要特定目标客户(目标客户群)在账号键值确定的情况下,完成对多个逻辑对象的数据操作,有选择地完成数据批处理过程可以满足商业银行不同职能部门对数据操作的需求[1]。
在创建存、贷款和中间业务客户账户逻辑对象时,对于个性化同一业务种类的客户,创建逻辑对象关联的基本指导思想是:首先分析客户目标对象业务性质差异、元数据子集的业务性质;其次采集所有管理部门在业务办理和目标数据操作上对系统功能、性能的具体指标要求,再依据业务数据生成、流向时序,无具体部门业务痕迹地设计客户对象在数据流的不同阶段的逻辑对象,实现多个逻辑对象中所标识的客户对象是同一账号业务数据的集合,从而实现客户多个业务数据集合中公有账号(或子集)集合的创建。创建客户同一账号(关联属性)多个逻辑对象的关联关系,建立商业银行客户数据关联方案。
大数据平台技术的商业银行客户数据关联方案是根据账号键值的不同,参考对应逻辑对象设计原则,由平台独立确定客户数据存储定位并完成数据存储。平台的这种技术首先能准确体现商业银行不同应用领域的数据特性,便于管理方宏观上的统计与决策,同时还能表现出多种逻辑对象之间的客户整体性关系,将商业银行业务领域的个性化需求同大数据平台数据管理系统的大量、高速、多样和真实等特点结合起来,实现了由特殊到普遍、个性到共性的演绎抽象过程。
商业银行不同的管理部门在访问客户数据时,依据部门任务需求的差异,由关系数据库的数据库管理系统,在分析客户账号的基础上,检索确定客户数据磁盘存储定位,依据数据库头块地址表完成对多个关联逻辑对象所对应物理存储块的数据访问,有效减少管理部门在检索平台上不同种类逻辑对象,且反映于同一客观对象相关属性数据的时间[2]。
2 商业银行零售业务用户数据
在商业银行大数据平台上使用簇关联技术创建客户逻辑对象。对于每个存、贷款和中间业务对象的基本账户数据,在账号字段属性值相等的情况下,系统会将隶属于同一账户多个对象的对应数据记录自动存储在磁盘同一个或相邻的若干个磁盘块上,实现同一账号的所有基础和衍生数据存储在相同或相邻数据块,提高管理部门在数据平台上对其进行检索和更新处理时的工作效率。
在大数据平台上,分布存储的节点工具如果采用ORACLE数据库系统,对关联逻辑对象的空间定义是利用表空间关联参数size来完成,通过对这个参数值的设计,确定ORACLE存储节点关联空间尺寸,在实际应用中,每个银行客户数据关联方案的客户关联账号值同参数size所确定的磁盘块的存储单元相对应。商业银行大数据平台可以将所有采用簇技术的关联磁盘块的大小规定为1kB,基本上能够满足同一个客户办理存、贷款和中间业务所产生的基础、衍生数据存储的需要。数据平台可以完成在指定关联方案下对客户不同逻辑对象间关联数据记录的集中存储[3]。
2.1 商业银行本、外币主账户结构分析
以某家商业银行本、外币活期主账户结构为例,分析目标数据结构组成和逻辑关系。当前,大部分商业银行对本、外币的业务处理主要是以活期主账户为管理对象来完成的。客户在办理业务过程中,首先需要在经办行开立一个活期主账户,以后发生的所有业务的数据都需要依附于本账户而存在,商业银行会根据不同业务的属性,利用大数据平台将有关数据分门别类地存放在对应业务的数据集合中,系统能够处理的客户数据种类包括本、外币活期主账户数据、账户日常存取业务历史记录数据、账户年度利息数据和冻结(解冻)、挂失(解挂)、换折等非常规操作的数据等。对于上述有关联的数据集合,可以采用数据簇管理技术,以客户账号为索引键,创建单位是1kB的关联块空间,并将上面有关业务种类的数据存储在磁盘的一个连续存储区,提高大数据平台在客户账号确定后对其相关数据检索的访问速度。
2.2 创建商业银行本、外币主账户逻辑对象(数据表)
在ORACLE数据平台上,用户登录平台客户端,在SQL提示符下,分别创建有簇管理功能关联关系的主账户数据表和账户日常存取业务历史记录数据表[4]。
(1)创建本、外币主账户表和账户日常存取业务历史记录数据表的关联簇集:
CREATE CLUSTER LOCAL_FOREIGN_CURRENCY_DEPOSIT_WITHDRAW_CLUSTER
(A_C_NO CHAR(12) ) SIZE 1024
(2)创建主账户数据表关联索引:
CREATE INDEX LOCAL_FOREIGN_CURRENCY_IDX
ON CLUSTER LOCAL_FOREIGN_CURRENCY_DEPOSIT_WITHDRAW_CLUSTER
(3)创建主账户数据表和账户日常存取业务历史记录数据表。
创建主账户数据表:
CREATE TABLE LOCAL_FOREIGN_CURRENCY_TABLE
(
S_B_A_D_W char(2), /*账户种类*/
A_C_NO varchar2(18) primary key, *账号*
A_C_NA varchar2(10) not null, *户名*
C_ID varchar2(10) not null, /*客户编号*/
W_M varchar2(10) not null, /*支取方式*/
B_T varchar2(8), /*存折历史状态*/
O_I varchar2(30) not null, /*开户行*/
M_N varchar2(11), /*联系电话*/
B_N char(12) not null, /*存折印刷号*/
D_I DATE not null, /*起息日期*/
S_B char(8) not null /*银行签章*/
) CLUSTER LOCAL_FOREIGN_CURRENCY_DEPOSIT_WITHDRAW_CLUSTER (A_C_NO) *簇表*
创建账户日常存取业务历史记录数据表:
CREATE TABLE DAILY_D_W_TABLE
(
A_C_NO varchar2(18), constraint LOC_FK REFERENCES
LOCAL_FOREIGN_CURRENCY_TABLE (A_C_NO),
/*账号是本表外键*/
L_D DATE not null, /*流水记录日期*/
L_T varchar2(8) not null, /*流水记录种类*/
L_C char(4) not null, /*流水记录币种*/
L_W_A number(12,3) not null, /*流水记录借发生额*/
L_D_A_I number(12,3) not null, /*流水记录贷(含利息)发生额*/
L_B number(12,3) not null, /*对应流水记录的账户贷(借)方余额*/
L_T_N char(7) not null, /*操作员码*/
L_N_O not null, /*流水记录序号*/
) CLUSTER LOCAL_FOREIGN_CURRENCY_DEPOSIT_WITHDRAW_CLUSTER (A_C_NO) *簇表*
主账户数据表LOCAL_FOREIGN_CURRENCY_TABLE、账户日常存取业务历史记录数据表DAILY_D_W_TABLE分别用来存储商业银行客户主账户数据和隶属于该账户的历史交易流水数据,实验所用数据分别如表1和表2所示。表1中 11个字段分别表示账户种类、账号、户名、客户号、支取方式、存折历史状态、开户行、联系电话、存折印刷号、开户日期和银行签章;表2中9个字段分别表示流水记录账号、流水记录日期、流水记录交易种类、流水记录币种、流水记录支出发生额、流水记录存入发生额、流水记录余额、流水记录操作员号和流水记录序号[5]。在关联存储中,表1、表2中字段A_C_NO的名称和类型定义必须一致。
表1 主账户数据表
表2 账户日常存取业务历史记录数据表
3 大数据平台簇技术的应用
为便于讨论,在大数据平台完成上面2个空数据表的建立并设定实验平台已经存在且同表1、表2结构相同,分别命名为LOCAL_FOREIGN_CURRENCY_TABLE_old 和DAILY_D_W_TABLE_old的2个表,并存有表1、表2中数据的2个非簇表,分析2对数据表在存储相同数据时的磁盘位置变化。
3.1 将2个非簇表的数据分别插入已建簇表
alter table DAILY_D_W_TABLE disable constraint LOC_FK ,终止DAILY_D_W_TABLE外部关联。
truncate cluster CLUSTER LOCAL_FOREIGN_CURRENCY_DEPOSIT_WITHDRAW_CLUSTER,截断已经建立的关联关系。向DAILY_D_W_TABLE表中添加一个字段,以满足验证需要:
Alter table DAILY_D_W_TABLE enable constraint LOC_FK ,重建DAILY_D_W_TABLE外部关联[6]。
利用数据平台原有LOCAL_FOREIGN_CURRENCY_TABLE_old 和DAILY_D_W_TABLE_old 2个表数据,用SQL向2个关联表批量插入记录,命令如下:
insert into LOCAL_FOREIGN_CURRENCY_TABLE select * from
LOCAL_FOREIGN_CURRENCY_TABLE_old
insert into DAILY_D_W_TABLE select DAILY_D_W_TABLE_old.* ,’*’from DAILY_D_W_TABLE_old。
3.2 分析两类数据表存储状态的变化
首先分析平台上没有使用簇技术的一对旧数据表,如果DAILY_D_W_TABLE_old和LOCAL_FOREIGN_CURRENCY_TABLE_old数据记录中A_C_NO字段值相同的记录,不存储同一个磁盘块,则在命令输出项“F”下标记一个‘*’,数据库参数DBMS_ROWID.ROWID_BLOCK_NUMBER标识磁盘块编号,利用命令输出研究2种数据表存储块号的变化,实验设定、命令执行和输出如下:
select LOCAL_FOREIGN_CURRENCY_TABLE_old_blk, DAILY_D_W_TABLE_old_blk,
case when LOCAL_FOREIGN_CURRENCY_TABLE_old_blk <> DAILY_D_W_TABLE_old_blk then '*' end flag,A_C_NO from (
Select dbms_rowid.rowid_block_number(LOCAL_FOREIGN_CURRENCY_TABLE_old.rowid) LOCAL_FOREIGN_CURRENCY_TABLE_old_blk,dbms_rowid.rowid_block_number(DAILY_D_W_TABLE_old.rowid) DAILY_D_W_TABLE_old _blk,
LOCAL_FOREIGN_CURRENCY_TABLE_old.A_C_NO from LOCAL_FOREIGN_CURRENCY_TABLE_old, DAILY_D_W_TABLE_old
where DAILY_D_W_TABLE_old.A_C_NO=LOCAL_FOREIGN_CURRENCY_TABLE_old.A_C_NO ) order by A_C_NO,命令输出结果如下,
LOCAL_FOREIGN_CURRENCY_TABLE_old DAILY_D_W_TABLE_oldFA_C_NO(原非簇表)51485 51496*100151485 51496*100151485 51496*200151485 51496*2001
再用已经建成的关联数据表LOCAL_FOREIGN_CURRENCY_TABLE、 DAILY_D_W_TABLE替换上述代码中的2个旧表,命令结果显示如下:
LOCAL_FOREIGN_CURRENCY_TABLE_old DAILY_D_W_TABLE_oldFA_C_NO(簇表)51485 51485100151485 51485100151485 51485200151485 514852001
分析上面2个输出结果,使用数据簇表存储数据以后,反映银行客户业务关联性质而又不在同一磁盘块上的记录数量由以前的4个降低到0个,大大地优化了用户数据在磁盘上的存储结构,对提高特定用户(群)数据检索效率作用巨大。
4 结论
大数据实验平台操作结果显示,使用普通关系数据库数据表存储有关联关系的用户数据,2个旧表数据存储在不同块内;使用大数据关联技术以后,原数据表数据完全存储在同一磁盘块。当业务需要对指定的客户信息进行检索和更新时,大数据平台可以快速地在磁盘指定的盘快或若干个相邻的磁盘块(如果关联数据较多)完成目标数据检索,降低了大数据检索在寻址阶段的资源开销,提高了系统检索效率。