利索能及
我要发布
收藏
专利号: 2020109155056
申请人: 合肥工业大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-12-30
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于映射归约的分布式数据处理方法,是应用于由M个医院数据库和x个保存数据的磁盘N={N1,N2,...,Ni,...,Nx}所组成的数据处理环境中,其中,Ni表示保存数据的第i个磁盘,1≤i≤x,其特征是,所述分布式数据处理方法是按如下步骤执行:步骤一、对磁盘中的数据进行分片处理;

步骤1.1、定义对第i个磁盘Ni所保存的数据分片的标准大小为S;定义第p个病人身份证号为kp,定义第p个病人病历信息为vp;由第p个病人身份证号kp及其所对应的第p个病历信息vp组合成第p个键值对(kp,vp)并存入第i个磁盘Ni中;

步骤1.2、将第m个医院数据库数据按照所定义标准分片大小S对第i个磁盘进行分片读取,从而得到第i个磁盘Ni的分片集合 表示第i个磁盘Ni的第j个分片,1≤j≤n;1≤m≤M;

步骤1.3、定义缓冲区并对缓冲区进行均等分区,得到分区后的缓冲区B={B1,B2,...,Bq,...,Bu},Bq表示缓冲区B的第q个分区,1≤q≤u;

步骤1.4、将第p个病人所对应的规约任务Kp=kp%u添加到对应的第p个病人病历信息vp中;

步骤1.5、将键值对(kp,vp)写入缓冲区B中;

步骤二、缓冲区内数据处理;

步骤2.1、判断缓冲区B是否达到溢写条件β,若缓冲区B中数据大小达到溢写条件β,则说明达到溢写条件,并执行步骤2.2;若缓冲区中数据大小未达到溢写条件β时,则说明未达到溢写条件,并返回骤2.1;

步骤2.2、对缓冲区B中的所有键值对进行排序,若键值对中的病人身份证号不同,则将病人身份证号较大的排列在前;若键值对中的病人身份证号相同,则读取相同病人身份证号的键值对中病人病历信息所包含的就医时间,并对就医时间进行比较,将就医时间较早的排列在前;从而得到排序后的键值对并写入缓冲区B中;

步骤2.3、对缓冲区B中排序后的键值对进行合并,将相同病人身份证号的键值对中的病人病历信息合并,从而生成临时文件F后写入第i个磁盘Ni;

步骤2.4、定义时间周期为t;

步骤2.5、使用标识 来判断第j个分片Sj数据是否处理完毕,每经过时间周期t,用标示 对第j个分片Sj内剩余数据进行判断,若 则说明第j个分片Sj内的数据已经处理完毕,并对第i个磁盘Ni中的所有临时文件按照相同的病人身份证号进行合并,从而生成新的临时文件F′保存在第i个磁盘Ni中;若 则说明第j个分片Sj内的数据还未处理完毕,并返回执行步骤2.5;

步骤三、对来自不同磁盘的数据进行规约;

步骤3.1、构建规约任务集合R={R1,R2,...,Ru},Ru表示第u个规约任务;定义内存缓冲区为E,且E>B;u>x;

步骤3.2、初始化i=1;

步骤3.3、每经过时间周期t,用 判断是否第i个磁盘Ni中所有分片均已完成映射,若 则说明在第i个磁盘Ni中所有分片数据均已处理完毕,并执行步骤3.3;若则说明在第i个磁盘Ni中存在未处理完数据的分片,并返回步骤3.2;

步骤3.4、读取第i个磁盘Ni中任意第p个键值对(kp,vp),并将第p个键值对(kp,vp)写入内存缓冲区E,读取第p个病历信息vp中的规约任务Kp,从而启动对应的第Kp个规约任务步骤3.5、判断内存缓冲区E是否达到溢写比η,若内存缓冲区E数据大小达到溢写比η,则执行步骤3.6,若内存缓冲区E数据大小未达到溢写比η,则执行步骤3.8;

步骤3.6、对内存缓冲区E中的所有键值对进行排序,若键值对中的病人身份证号不同,则将病人身份证号较大的排列在前;若键值对中的病人身份证号相同,则读取相同病人身份证号键值对中的病人病历信息所包含的就医时间,并对就医时间进行比较,将就医时间较早的排列在前;从而得到排序后的键值对并写入内存缓冲区E中;

对内存缓冲区E中病人身份证号相同的键值对启动相同的规约任务进行合并;从而生成内存临时文件FE后写入第i个磁盘Ni;

步骤3.7、第i个磁盘Ni启动第i个规约任务Ri,利用第i个规约任务Ri对第i个磁盘Ni中所有键值对按照相同病人身份证号进行合并,从而生成最终文件F*,使用最终文件F*覆盖第i个磁盘Ni中的所有键值对;

步骤3.8、将i+1赋值给i后,返回步骤3.3,直到i=x为止。