说明:创建一个简单的表mScheme.ly_student用来测试
create table mScheme.ly_student(
student_id varchar2(10) primary key,--学号pk
student_name varchar(20) not null,--姓名
graduation_date date not null --用毕业时间来进行分表
)
-
创建分表
复制这个表,表空间别变,表名根据分表依据来命名
如:一个表按地市、年月分表,中间用下划线来分隔的表达式:
T[TABLE]_C[REGION_ID]_C[DONE_DATE]
本例用毕业日期的'年'进行分表,表名为
这里只有两个分表。 -
创建分表规则
亚信数据库中已经为分表创建了两个规则表cfg_table_split和cfg_table_split_mapping,只需要对照其他条数据,将ly_student表配置到两个规则表中。具体如图:cfg_table_split_mapping
注意cfg_table_split.table_name_expr的填写,和分表命名规则是一样的。
cfg_table_split_mapping.mapping_id随意填写,column_name写分表依据的字段。column_convert_class转换类,是在后台appframe中实现的,只是年就用YYYYFunctionImpl,如果年月就YYYYMMFunctionImpl,如果其他请参照该表的其他相似字段填写. -
创建该表的历史表
LY_STUDENT_HIS,修改、删除信息会记录在历史表中. -
创建原表SEQUENCE和历史表SEQUENCE
create sequence LY_STUDENT$SEQ minvalue 1 maxvalue 999999999999 start with 100000000001 increment by 1 cache 200;
- 将序列及历史表关系配置到base. cfg_id_generator表中
至此,数据库相关配置已经都完成; -
修改bo文件
当然你也可以重新生成,但是分表以后bo文件只对一行进行了修改,表名多了{}<mapingenty type="table">{LY_STUDENT}</mapingenty>
-
修改cache.xml文件
项目中ctrl+shift+R搜索该文件,打开后ctrl+F搜索"分表",将这3项都改成source="db"
因为刚配置好分表,缓存中还没有数据,所以要从数据库db中找数据。
感受一二
因为亚信这个框架很老了,用的人也不多,网上基本没什么资料,所以配置起来没有别人的指导很难完成。
配置完成后按我的理解分表流程是这样的:
首先在bo中加了{}表示该表进行分表管理,所以Java后台对数据库此表进行操作时,首先查找分表规则,根据分表依据字段和转化函数,回到Java后台进行相关转换,得到相应的表名进行增删改查。
不知道这个理解是否是对的,但是这样一个分表操作的思路以后可以自己去实现一下。