• 1阅读
  • 0回复

Lams的DID策略-说明

在线 大火腿
级别: 总版主
楼主   发表于: 2021-10-19 , 来自: From:北京市
Lams档案管理系统主键策略为自增int类型的策略,主要设置在application.properties中的 program.max.did.flag ,下面对这个配置项做一下说明

序号 说明 备注
1true使用内存策略单应用推荐使用,在配置文件中有
scheduler.schedulerService.clearDidPool定时器可以定时保证策略和数据的id同步。
2false使用数据库自增策略单应用不推荐使用
3procedure使用数据库存储过程策略 集群推荐使用,但是只支持单数据库,要配合存储过程,见下面附件一
4true 和 http://IP:8080/Lams/
组合
使用远程内存策略 集群推荐使用,支持多数据库,配置复杂,有单点故障的风险
1. 要求主Lams的 program.max.did.flag 设置为true
2. 其他从Lams的 program.max.did.flag 设置为主的地址 http://IP:Port/Lams/


注意:接口的did要从lams里面获取,不能自己生成主键。


附件一 (mysql,其他数据库联系研发)

DROP procedure IF EXISTS `LAMSMAXDID`;
CREATE  PROCEDURE `LAMSMAXDID`( IN  tableName varchar(254),IN fieldName varchar(254), OUT  maxDid int)
BEGIN
    set @keyName = concat(tableName,'.',fieldName) ;
    set  @maxNum = 0;
    select _v into maxDid  from S_LAMSMAXDID where _k = @keyName FOR UPDATE;
    if maxDid is null then
        set @maxCol = concat('max(',fieldName,')');
        SET @sql= concat('SELECT  if(', @maxCol,' is NULL,0,', @maxCol,') into @maxNum  FROM ',tableName) ;
                PREPARE p_sqlstr FROM @sql ;
                EXECUTE p_sqlstr ;
                DEALLOCATE PREPARE p_sqlstr ;
        set maxDid =  @maxNum;
        insert into S_LAMSMAXDID (_k,_v)values(@keyName,maxDid+1);
else
  update S_LAMSMAXDID set _v = _v+1 where _k = @keyName;
    END IF;
END
发帖 回复
« 返回列表
描述
快速回复
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容