手记

Asiainfo数据库分表的操作配置简介以及感受一二

操作配置

说明:创建一个简单的表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 --用毕业时间来进行分表
)
  1. 创建分表
    复制这个表,表空间别变,表名根据分表依据来命名
    如:一个表按地市、年月分表,中间用下划线来分隔的表达式:
    T[TABLE]_C[REGION_ID]_C[DONE_DATE]
    本例用毕业日期的'年'进行分表,表名为

    这里只有两个分表。

  2. 创建分表规则
    亚信数据库中已经为分表创建了两个规则表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,如果其他请参照该表的其他相似字段填写.

  3. 创建该表的历史表
    LY_STUDENT_HIS,修改、删除信息会记录在历史表中.

  4. 创建原表SEQUENCE和历史表SEQUENCE

    create sequence LY_STUDENT$SEQ minvalue 1  maxvalue 999999999999  start with 100000000001  increment by 1  cache 200;
    
  5. 将序列及历史表关系配置到base. cfg_id_generator表中

    至此,数据库相关配置已经都完成;
  6. 修改bo文件
    当然你也可以重新生成,但是分表以后bo文件只对一行进行了修改,表名多了{}

    <mapingenty type="table">{LY_STUDENT}</mapingenty>
  7. 修改cache.xml文件
    项目中ctrl+shift+R搜索该文件,打开后ctrl+F搜索"分表",将这3项都改成

    source="db"

    因为刚配置好分表,缓存中还没有数据,所以要从数据库db中找数据。


感受一二

因为亚信这个框架很老了,用的人也不多,网上基本没什么资料,所以配置起来没有别人的指导很难完成。
配置完成后按我的理解分表流程是这样的:
首先在bo中加了{}表示该表进行分表管理,所以Java后台对数据库此表进行操作时,首先查找分表规则,根据分表依据字段和转化函数,回到Java后台进行相关转换,得到相应的表名进行增删改查。
不知道这个理解是否是对的,但是这样一个分表操作的思路以后可以自己去实现一下。

0人推荐
随时随地看视频
慕课网APP