掌桥专利:专业的专利平台
掌桥专利
首页

一种提高物业系统归档单据查询效率的方法及其系统

文献发布时间:2023-06-19 11:29:13


一种提高物业系统归档单据查询效率的方法及其系统

技术领域

本发明涉及数据存储技术领域,特别是一种提高物业系统归档单据查询效率的方法及其系统。

背景技术

现有技术中各公司的物业系统基本使用已达10年之久,平均每天有千条维修单据,10年已达数千万,加上关联表,数据量达到上亿。上亿数据量查询效率变得十分低下,还有可能造成数据库死锁的风险。可以通过优化表结构、梳理业务代码、增加数据库索引等办法来提高响应速度,但这些方法治标不治本,可能提高目前这个数据量级的查询速度,但随着业务发展,数据还会继续增加,最终还是回到查询缓慢的状态。虽然常规根据月份来分库分表也是一种处理大数据量的设计方案,但是可能使活跃数据的查询复杂化,例如查询近半年的维修单据,可能要跨多个表来联合查询;这样查询效率也十分低下。

发明内容

为克服上述问题,本发明的目的是提供一种提高物业系统归档单据查询效率的方法,根据物业维修单据数据进行单据状态维度上的合理分割,能够有效解决物业系统数据量增长导致的查询效率低下问题。

本发明采用以下方案实现:一种提高物业系统归档单据查询效率的方法,所述方法包括如下步骤:

步骤S1、根据物业系统的维修单据状态判断维修单据数据是否需要归档;

步骤S2、利用多线程来进行迁移历史数据;

步骤S3、根据维修单据的状态触发归档维修单据操作;

步骤S4、设定一归档库,将物业系统中标记为归档数据的维修单据数据从物业系统的活跃库移入到归档库中;

步骤S5、在维修单据查询页中进行归档的数据和维修中的数据查询使用。

进一步的,所述步骤S1进一步具体为:根据物业系统的业务场景,以维修单据的终态‘已结束’来分离数据;维修单据的状态为‘已结束’则标识为归档数据,否则,标识为维修中的数据;如果维修单据数据被标识为归档数据,则业务代码不会再对冷数据进行写操作。

进一步的,所述步骤S2进一步具体为:对历史数据进行迁移操作,即建立一个线程池,定时触发迁移操作,所述迁移操作为获取活跃库中待搬动的活跃数据的数量,再得出要同时启动的线程数,如果同时启动的线程数大于线程池的数量就取线程池的线程数,假设同时启动的线程数这个数量为 N,最后循环 N 次启动线程池的线程搬运归档数据,来进行迁移历史数据。

进一步的,所述步骤S4进一步具体包括:步骤S41、在维修单据的状态为‘已结束’的终态后,此数据将被列为待移入的归档数据,打上标记,end_flag=1;

步骤S42、设定一归档库,读取已经标记好的end_flag=1的数据,即为所有需要分离的数据;

步骤S43、在归档库中插入end_flag=1的单据数据,插入归档库前需要对单据号进行幂等性校验,以保证没有重复插入数据;

步骤44:从活跃库中删除被成功移入归档库的数据。

进一步的,所述步骤S5进一步具体为:维修阶段的数据就是活跃数据,在维修单据查询页进行数据查询;如果要查询已结束的终态维修数据,即是归档数据,则需要进入历史单据查询页面,在历史单据查询页面,将查询指向归档数据库,在归档数据库进行查询操作。

本发明提供了一种提高物业系统归档单据查询效率的系统,所述系统包括归档数据判定模块、迁移数据模块、触发归档模块、数据分离模块、以及查询模块;

所述归档数据判定模块,根据物业系统的维修单据状态判断维修单据数据是否需要归档;

所述迁移数据模块,利用多线程来进行迁移历史数据;

所述触发归档模块,根据维修单据的状态触发归档维修单据操作;

所述数据分离模块,设定一归档库,将物业系统中标记为归档数据的维修单据数据从物业系统的活跃库移入到归档库中;

所述查询模块,在维修单据查询页中进行归档的数据和维修中的数据查询使用。

进一步的,所述归档数据判定模块进一步具体为:根据物业系统的业务场景,以维修单据的终态‘已结束’来分离数据;维修单据的状态为‘已结束’则标识为归档数据,否则,标识为维修中的数据;如果维修单据数据被标识为归档数据,则业务代码不会再对冷数据进行写操作。

进一步的,所述迁移数据模块进一步具体为:对历史数据进行迁移操作,即建立一个线程池,定时触发迁移操作,所述迁移操作为获取活跃库中待搬动的活跃数据的数量,再得出要同时启动的线程数,如果同时启动的线程数大于线程池的数量就取线程池的线程数,假设同时启动的线程数这个数量为 N,最后循环 N 次启动线程池的线程搬运归档数据,来进行迁移历史数据。

进一步的,所述数据分离模块进一步具体包括:在维修单据的状态为‘已结束’的终态后,此数据将被列为待移入的归档数据,打上标记,end_flag=1;

设定一归档库,读取已经标记好的end_flag=1的数据,即为所有需要分离的数据;

在归档库中插入end_flag=1的单据数据,插入归档库前需要对单据号进行幂等性校验,以保证没有重复插入数据;

从活跃库中删除被成功移入归档库的数据。

进一步的,所述查询模块进一步具体为:维修阶段的数据就是活跃数据,在维修单据查询页进行数据查询;如果要查询已结束的终态维修数据,即是归档数据,则需要进入历史单据查询页面,在历史单据查询页面,将查询指向归档数据库,在归档数据库进行查询操作。

本发明的有益效果在于:本发明在物业系统历史单据数据大的情况下,利用多线程来进行数据迁移,从而清理历史中‘已结束’的维修单据,从而提高数据库的查询效率;另外,对物业维修单据数据进行单据状态维度上的合理分割,先迁移历史数据,并且在后期通过归档数据的分离,能够有效解决物业系统数据量增长导致的查询效率低下问题。

附图说明

图1是本发明的方法流程示意图。

图2是本发明的一实施例的方法流程示意图。

图3是本发明的系统原理框图。

具体实施方式

下面结合附图对本发明做进一步说明。

请参阅图1所示,本发明的一种提高物业系统归档单据查询效率的方法,所述方法包括如下步骤:

步骤S1、根据物业系统的维修单据状态判断维修单据数据是否需要归档;

步骤S2、利用多线程来进行迁移历史数据;

步骤S3、根据维修单据的状态触发归档维修单据操作;

步骤S4、设定一归档库,将物业系统中标记为归档数据的维修单据数据从物业系统的活跃库移入到归档库中;

步骤S5、在维修单据查询页中进行归档的数据和维修中的数据查询使用。

下面结合一具体实施例对本发明做进一步说明:

请参阅图2所示,本发明的一种提高物业系统归档单据查询效率的方法,在处理数据时将数据库分成归档库和活跃库 2 个库,归档库于存放查询需求极低的维修单据数据,活跃库用于存放较常需要被查询的维修单据数据。根据业务场景,物业系统的维修单据有一个特征,维修单据会在最后走向一个终态,即在维修员完成维修后,申请人给与评价,最后成为一个已结束的单据状态,维修员和申请人频繁查询的仅是进行中的单据,维修员要实时查看是否有新申请的维修单据,申请人要频繁查看自己单据的维修进度,此类需求占比95%以上。所以本发明以为序单据的终态作为是否归档的判断依据。如果要查询已结束单据,需要进入历史单据查询页面来查询。

一种提高物业系统归档单据查询效率的方法,包括以下步骤:

步骤1:判断一个数据到底是否需要归档

根据业务场景,物业系统在查询正在进行中的维修单据占95%以上的查询量,物业系统以维修单据的终态‘已结束’来分离数据。如果数据被标识为归档数据,业务代码不会再对它进行写操作,不会同时存在混合读取的需求。

步骤2:历史数据的迁移

由于系统长达10年之久,那么大部分的维修单据数据都已经是结束状态,都应该被移入归档库,要在系统改造之前,把历史数据做一次‘清理’工作。假设1秒处理10条数据,那么1天86400秒只能处理80多万条数据,10年几千万的数据,要处理几十天之久,所以采用多线程的处理方式。

启用多线程

自建一个线程池,定时触发后面的操作:先获得待搬动的活跃数据的数量,再计算要同时启动的线程数,如果大于线程池的数量就取线程池的线程数,假设这个数量为 N,最后循环 N 次启动线程池的线程搬运归档数据。

步骤3:新单据触发归档操作

当维修单据状态从已申请->维修中->已维修->用户确认->已评价,达到最后的终态后,此数据将被列为待移入归档数据,打上标记,end_flag=1。

步骤4:归档数据

步骤4.1:定时读取步骤3中已经标记好的end_flag=1的数据,也就是所有需要分离的数据。

步骤4.2:在归档库中插入end_flag=1的单据数据,插入归档库前需要对单据号进行幂等性校验,以保证没有重复插入数据。

步骤4.3:从活跃库中删除被成功移入归档库的数据。

步骤5:两种数据的查询使用。

还在维修阶段的订单数据就是活跃数据,在维修单据查询页进行数据查询。如果要查询已评价的终态维修数据,即是归档数据,则需要进入历史单据查询页面,在历史单据查询页面,将会把查询指向归档数据库,归档数据的查询需求和频率是很低的。

请参阅图3所示,本发明提供了一种提高物业系统归档单据查询效率的系统,所述系统包括归档数据判定模块、迁移数据模块、触发归档模块、数据分离模块、以及查询模块;

所述归档数据判定模块,根据物业系统的维修单据状态判断维修单据数据是否需要归档;

所述迁移数据模块,利用多线程来进行迁移历史数据;

所述触发归档模块,根据维修单据的状态触发归档维修单据操作;

所述数据分离模块,设定一归档库,将物业系统中标记为归档数据的维修单据数据从物业系统的活跃库移入到归档库中;

所述查询模块,在维修单据查询页中进行归档的数据和维修中的数据查询使用。

其中,所述归档数据判定模块进一步具体为:根据物业系统的业务场景,以维修单据的终态‘已结束’来分离数据;维修单据的状态为‘已结束’则标识为归档数据,否则,标识为维修中的数据;如果维修单据数据被标识为归档数据,则业务代码不会再对冷数据进行写操作。

所述迁移数据模块进一步具体为:对历史数据进行迁移操作,即建立一个线程池,定时触发迁移操作,所述迁移操作为获取活跃库中待搬动的活跃数据的数量,再得出要同时启动的线程数,如果同时启动的线程数大于线程池的数量就取线程池的线程数,假设同时启动的线程数这个数量为 N,最后循环 N 次启动线程池的线程搬运归档数据,来进行迁移历史数据。

所述数据分离模块进一步具体包括:在维修单据的状态为‘已结束’的终态后,此数据将被列为待移入的归档数据,打上标记,end_flag=1;

设定一归档库,读取已经标记好的end_flag=1的数据,即为所有需要分离的数据;

在归档库中插入end_flag=1的单据数据,插入归档库前需要对单据号进行幂等性校验,以保证没有重复插入数据;

从活跃库中删除被成功移入归档库的数据。

进一步的,所述查询模块进一步具体为:维修阶段的数据就是活跃数据,在维修单据查询页进行数据查询;如果要查询已结束的终态维修数据,即是归档数据,则需要进入历史单据查询页面,在历史单据查询页面,将查询指向归档数据库,在归档数据库进行查询操作。

总之,本发明一种提高物业系统归档单据查询效率的系统,对物业维修单据数据进行单据状态维度上的合理分割,先迁移历史数据,并且在后期通过归档数据的分离,能够有效解决物业系统数据量增长导致的查询效率低下问题。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

相关技术
  • 一种提高物业系统归档单据查询效率的方法及其系统
  • 一种提高区块链查询效率的系统及方法
技术分类

06120112941838