数据归档方案(带流程图)

需求背景:最近两天新开发了一个功能由于热表中存储数据较多导致插入查询缓慢,所以要求做数据归档
需求:以年为单位进行归档,但每个归档表又存在一个阈值
方案可以使用定时调用

下图为实现思路(流程图):

在这里插入图片描述
1.首先判断年度归档表是否存在,不存在则创建归档表把数据进行归档
2.存在则判断表中数据是否超过阈值,没超过则直接进行归档
3.若超过阈值则需要判断是否存在归档的子表,不存在则创建子表进行归档
4.存在则重复上述操作

下面为代码演示

1.主要逻辑

@Transactional(rollbackFor = Exception.class)
    @Override
    public void dataArchiving() {
        //首先获取当前年份
        String yyyy = DateUtils.formatDate(new Date(), DateUtils.yyyy);
        //拼接归档表名称
        String tableName = "urge_send_message_log_archive_"+yyyy;
        //判断数据库中是否存在该表
        logger.info("判断数据库中是否存在"+tableName+"表");
        int isHave = urgeSendMessageLogService.isHaveTableName(tableName);
        if (isHave>0){
            //获取归档表当前存储数据
            Long count  = urgeSendMessageLogService.getCount(tableName);
            //判断数据量是否已经达到阈值(配置类参数全部提取至配置文件)
            if (count > threshold){
                //初始化子表
            int i =  1;
                while (true){
                    //如果大于阈值判断子表是否存在
                    tableName = tableName+"_"+i;
                    //判断子表是否符合归档条件
                    if (extracted(tableName)){
                        break;
                    }
                    i++;
                }
            }

        }else {
            //拷贝源表结构创建新表
            urgeSendMessageLogService.backUpTable(tableName);
            logger.info("创建归档表成功!"+tableName);
        }
        //获取当前时间
        String endTime = DateUtils.formatDate(new Date(), DateUtils.standard);
        //查询符合条件的历史数据
        List<UrgeSendMessageLog>  dataArchivings = urgeSendMessageLogService.getDataArchiving(endTime);
        //把查询出来的数据存入归档表
        urgeSendMessageLogService.setDataArchiving(dataArchivings,tableName);
        //批量删除已归档数据
        urgeSendMessageLogService.deleteDataArchiving(endTime);

    }

2.判断数据库中是否存在该表SQL

        SELECT COUNT(table_name)
        from information_schema.TABLES
        where TABLE_NAME = #{表名}

3.获取表当前存储数据

select COUNT(id) from ${表名}

4.拷贝源表结构创建新表

CREATE TABLE ${新表表名}
            LIKE 原表表名

5.对指定表进行批量操作

    insert into ${表名} (字段,字段)
        values
        <foreach collection="dataArchivings" item="entity" separator=",">
            (#{entity.字段},#{entity.字段})
        </foreach>

注意点:

注入表名时需使用 ${}
#{}对于的变量会自动加上单引号
${}对应的变量不会加上单引号

如有问题欢迎大佬指出

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 产品数据管理(Product Data Management,PDM)是一种用于管理产品数据的系统,它能够有效地组织、存储、维护和共享产品相关的数据。 PDM管理产品数据的架构流程一般包括以下几个步骤: 1. 数据采集和整理:收集产品数据,包括设计图纸、规格书、工艺要求等,并对数据进行分类整理和归档。同时,对数据进行质量检查,保证数据的准确性和完整性。 2. 数据管理:建立产品数据的统一管理平台,对数据进行版本管理、权限控制、变更管理等。确保不同部门和成员能够在同一个平台上协同工作,并保证数据的一致性和可靠性。 3. 数据存储和备份:选择适当的存储介质或云平台,将产品数据进行安全可靠的存储,并建立定期备份机制,以防止数据丢失或损坏。 4. 数据共享和协作:提供数据共享和协作的功能,使不同部门和团队能够共享数据、参与设计和开发过程,促进跨部门和跨团队的协作。 5. 数据检索和利用:建立高效的数据检索系统,使用户能够快速、准确地检索所需的产品数据。同时,为数据的利用提供便利,如提供数据报表、数据分析等功能。 6. 数据安全和权限管理:设置合理的权限管理机制,对不同角色的用户进行权限控制,保护产品数据的安全和机密性。防止未经授权的人员进行非法操作或泄露数据。 通过以上流程,PDM能够实现对产品数据的全生命周期管理,从产品的设计、开发、生产到维护和服务的整个过程。它能够提高产品开发的效率和质量,帮助企业提高竞争力,同时也为企业的决策提供了可靠的数据支持。 ### 回答2: PDM(Product Data Management)是一种管理产品数据的系统,它有着特定的架构和流程。下面是关于PDM管理产品数据架构流程的300字中文回答。 PDM管理产品数据的架构流程通常包括以下几个关键步骤。 首先,需要建立产品数据的分类体系。这个分类体系可以按照不同的维度来划分,如产品类别、功能模块、版本等。通过建立分类体系,可以方便地组织和检索产品数据。 接下来,需要确定产品数据的创建和修改流程。这个流程通常包括产品数据的创建、审核、修改和发布等环节。在创建产品数据时,需要明确责任人和审批人,确保数据的准确性和完整性。 然后,需要建立数据共享和协作机制。PDM系统应该具备多用户同时访问和修改产品数据的能力,同时还应支持文件共享、版本控制和权限管理等功能。这样可以让不同团队之间更好地协作,提高工作效率。 此外,PDM系统还应提供数据的备份和恢复功能,以保障数据的安全性和可靠性。定期进行数据备份,同时建立完善的数据恢复方案,以应对意外事件和数据丢失的情况。 最后,需要定期进行数据归档和清理。PDM系统会产生大量的产品数据,为了保持系统的运行速度和效率,需要定期清理不再使用的数据,并进行数据归档和存档处理。 综上所述,PDM管理产品数据的架构流程包括建立分类体系、确定创建和修改流程、建立共享和协作机制、数据备份和恢复,以及数据归档和清理等关键步骤。通过实施PDM系统,可以更好地管理和利用产品数据,提高产品开发的效率和质量。 ### 回答3: 产品数据管理(PDM)是一种用于管理产品相关数据的架构流程。PDM的目标是确保产品数据的一致性、可靠性和可访问性,以支持产品的设计、制造和营销等全生命周期活动。 首先,PDM需要建立一个总体框架,包括确定数据的组织结构、命名规则和权限管理等。基于业务需求,确定产品数据的分类和层次结构,并为每个类别分配适当的属性和关系。 接下来,PDM需要建立数据采集和录入的流程。这包括确定数据采集的渠道和方式,例如直接输入、扫描或导入文件等。同时,需要建立标准化的数据录入格式和要求,以确保数据的一致性和准确性。 第三,PDM需要建立数据存储和管理的流程。这包括确定数据存储的方式,例如数据库或云存储,并确保数据的备份和安全性。此外,还需要建立数据访问和共享的机制,以便不同部门和团队可以方便地获取和共享所需的产品数据。 另外,PDM还应该包括数据更新和维护的流程。这包括确定数据更新的频率和方式,例如定期更新或根据需求更新。同时,需要建立数据审查和验证的机制,以确保新数据的准确性和完整性。 最后,PDM需要建立产品数据发布和应用的流程。这包括确定数据发布的时机和方式,例如产品数据的发布顺序和频率。同时,需要确保产品数据与相关系统的集成和应用,以支持设计、工程、生产和销售等业务活动。 综上所述,PDM管理产品数据的架构流程包括建立总体框架、数据采集和录入、数据存储和管理、数据更新和维护、数据发布和应用等环节。通过这些流程,可以确保产品数据的一致性、可靠性和可访问性,提高产品的设计和制造效率,增强企业的竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值