CN112597219A - 用于将大数据量的文本文件导入分布式数据库的方法及装置 - Google Patents

用于将大数据量的文本文件导入分布式数据库的方法及装置 Download PDF

Info

Publication number
CN112597219A
CN112597219A CN202011481442.4A CN202011481442A CN112597219A CN 112597219 A CN112597219 A CN 112597219A CN 202011481442 A CN202011481442 A CN 202011481442A CN 112597219 A CN112597219 A CN 112597219A
Authority
CN
China
Prior art keywords
file
data
sub
distributed
split
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011481442.4A
Other languages
English (en)
Inventor
朱晓真
邓昌胜
陈章立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202011481442.4A priority Critical patent/CN112597219A/zh
Publication of CN112597219A publication Critical patent/CN112597219A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及用于将大数据量的文本文件导入分布式数据库的方法和装置,其特征在于,所述方法具有下列步骤:查询并获取文件导入参数配置;将所述大数据量的文本文件以数据量平均的方式分成多个文件读取子区域;以对应数量的线程拆分所有文件读取子区域,其中,每个文件读取子区域中的数据分别被拆分到同等数量的多个子文件中;将拆分后得到的所有子文件分配给多个分布式AP;使用多线程异步外呼发送文件导入请求至各分布式AP,并且各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件的编号并发导入到各分表中。此外,本发明还涉及用于将大数据量的文本文件导入分布式数据库的装置。

Description

用于将大数据量的文本文件导入分布式数据库的方法及装置
技术领域
本发明涉及一种用于将大数据量的文本文件导入分布式数据库的方法及装置。
背景技术
自从资产管理的新规则出台以来,存在大量的符合净值化要求的理财产品需要从母行迁移到理财子公司名下进行经营。理财系统涉及的数据包括清算信息、账户信息、客户信息、份额信息、投研信息、净值信息以及监管信息等等。要将这些数据快速且成功的迁移到大资管系统中面临来自系统处理能力、硬件设施、业务维持正常营运的要求并且面临数据的安全性、可用性、可延展性这三方面的压力和挑战。因此,针对以上这三方面的挑战并制定合理方案,需要从合理利用系统资源、减少数据迁移时耗和保证数据健康这三个维度来考虑,用以解决理财数据迁移问题。
现有技术对于文件导入的处理一般是由web层发起请求、由service层建立数据库连接池并且将接收到的原始文件直接交给DB层处理来实现数据导入。
然而,现有技术具有诸多缺点。
在传统方案中,将大数据量的文本文件导入到单库单表中,该数据库表会存在千万级别以上的数据量。因此,数据的安全性,可用性,可延展性很差。同时,后续还有可能需要对导入后的数据进行二次移动到对应的分库分表,这将造成数据库资源的浪费。
此外,在传统方案中,若将大数据量的文本文件导入数据库时,很有可能导致服务器内存溢出,或者长时间占用CPU,影响到其他交易请求;若系统同时发生多笔联合查询请求,会存在使系统瘫痪的风险。
另外,单一数据库内单表的数据量过大也会影响到数据库上其他表的读写效率,从而影响系统业务处理效率,对于数据批量处理也不友好,在单表上进行增删改查,数据库并发个数有限,难以应对并发量比较大的情况。
发明内容
有鉴于此,本发明提供用于将大数据量的文本文件导入分布式数据库的方法及装置。本发明主要的目的是克服现有技术中的缺陷,即,将大数据量的文本文件拆分成多个子文件并且并发导入数据,用以提高导入效率、减少导入用时、有效减轻数据库压力并且减少导入对系统内存、cpu的占用时长,以便降低系统瘫痪的风险。此外,实现了分布式存储、提升了数据的灾备能力、提高了数据的可用性和可延展性。这有利于系统批量处理数据并能够有效应对并发访问量比较高的情况。
为实现上述目的,提供了如下的用于将大数据量的文本文件导入分布式数据库的方法:
第一步:查询并获取文件导入参数配置。
第二步:将所述大数据量的文本文件以数据量平均的方式分成多个文件读取子区域。
第三步:以对应数量的线程拆分所有文件读取子区域,其中,每个文件读取子区域中的数据分别被拆分到同等数量的多个子文件中。
第四步:将拆分后得到的所有子文件分配给多个分布式AP。
第五步:使用多线程异步外呼发送文件导入请求至各分布式AP,并且各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件的编号并发导入到各分表中。
可选地,在上述第一步中解析文本文件的名称并将文本文件的名称作为查询条件。
可选地,如果文本文件不属于大数据量的文本文件,则应用传统的技术方案对文本文件进行处理。
可选地,上述传统的技术方案包括下列步骤:
第一步:由service层建立数据库连接池。
第二步:将文本文件直接交给DB层处理并实现数据导入。
可选地,在根据本发明的用于将大数据量的文本文件导入分布式数据库的方法的第二步中,向后检索数据换行符来对文件读取子区域的边界进行修正直至最后一个文件读取子区域。
可选地,经修正的第一个文件读取子区域为
Figure BDA0002837718730000031
其中,X是文件大小,Y是文件读取子区域的数量,Y为自然数且Y≤M×N,其中,M是分库数而N是分表数且均属于文件导入参数配置并且M和N均为自然数,K1是针对第一个文件读取子区域而言的由于出现换行符所引起的偏移位置,经修正的第m个文件读取子区域为
Figure BDA0002837718730000041
其中,Km是针对第m个文件读取子区域而言的由于出现换行符所引起的偏移位置,m∈[2,3,……,Y]。
可选地,在上述第三步中,获取合适的业务字段,拆分每个文件读取子区域中的数据并按照hash(Key)%(M×N)分别来确定拆分出的数据属于哪个子文件,其中,Key是业务字段值,M是分库数而N是分表数并且M和N均属于文件导入参数配置且均为自然数,并且其中,拆分出的子文件表示为“文件名_m_hash(Key)%(M×N)”。
可选地,业务字段为主键。
可选地,主键为用户ID。
可选地,hash(Key)可以采用直接寻址法、数字分析法、平方取中法、折叠法、随机数法或除留余数法。
可选地,在拆分每一个文件读取子区域中的数据时根据文件接口规范计算出其中每一条数据的长度L,其起始位置为B,基于区域(B,B+L)算出下个换行符出现的位置并作为这条数据的结束位,随后继续轮询拆分直至最后一条数据。
可选地,每个子文件中的数据的数量是平均的。
可选地,在上述第四步中执行如下分配算法:假设子文件总数为T,AP个数为P,每个AP所分配的文件个数N=[T-(T%P)]/P,其中,T和P为自然数且T≥P。
根据本发明的用于将大数据量的文本文件导入分布式数据库的方法总体上呈树状结构。
该方法主要针对分布式数据库并且数据库架构为分库分表。
为实现上述目的,根据本发明实施例的又一方面,提供了用于将大数据量的文本文件导入分布式数据库的装置。
本发明实施例的用于将大数据量的文本文件导入分布式数据库的装置包括:
第一模块,所述第一模块用于查询并获取文件导入参数配置;
第二模块,所述第二模块将大数据量的文本文件以数据量平均的方式分成多个文件读取子区域;
第三模块,所述第三模块以对应数量的线程拆分所有文件读取子区域,其中,每个文件读取子区域中的数据分别被拆分到同等数量的多个子文件中;
第四模块,所述第四模块将拆分后得到的所有子文件分配给多个分布式AP;
第五模块,所述第五模块使用多线程异步外呼发送文件导入请求至各分布式AP并且使各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件的编号并发导入到各分表中。
为实现上述目的,根据本发明实施例的又一方面,提供了用于将大数据量的文本文件导入分布式数据库的电子设备。
本发明实施例的用于将大数据量的文本文件导入分布式数据库的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的用于将大数据量的文本文件导入分布式数据库的方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读存储介质。
本发明实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例。
附图说明
附图仅用于更好地理解本发明,其不构成对本发明的不当定义。其中:
图1示出了现有技术中的一个技术方案的示意图;
图2示出了根据本发明的方法的一个实施例的流程图;
图3示出了根据本发明的方法的另一个实施例的流程图;
图4示出了根据本发明的方法在web层、service层以及DB层上执行的示意图;
图5示出了根据本发明的方法在service层将文件子区域中的数据拆分到子文件的示意图;
图6示出了根据本发明的方法在DB层进行处理的具体示意图;
图7示出了根据本发明实施例的用于将大数据量的文本文件导入分布式数据库的装置的主要模块的示意图;
图8示出了可以应用本发明实施例的方法或装置的示例性系统架构的示意图;
图9示出了适于用来实现本发明实施例的终端设备的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。
图1示出了现有技术中的一个技术方案的示意图。
传统技术方案对于文件导入的处理一般是由web层发起请求,由service层建立数据库连接池,将接收到的原始文件直接交给DB层处理,实现数据导入。
数据迁移时,若导入文件过大,使用该方法会消耗大量时间导入,验证影响导入效率,并且导入后的数据可用性、可延展性较差。
若导入文件过多时使用该方法,则其他待导入文件需要等待前置文件导入完成。因此,未充分利用CPU和内存资源。
总而言之,现有技术的缺陷如下:
传统方案中,若将大数据量的文本文件导入数据库时,很有可能导致服务器内存溢出,或者长时间占用CPU,影响到其他交易请求;若系统同时发生多笔联合查询请求,会存在使系统瘫痪的风险。
若使用传统方案,成功将大数据量的文本文件导入到单库单表中,该数据库表会存在千万级别以上的数据量,数据的安全性、可用性和可延展性很差。
数据量过大也会影响到其他主库上其他表的读写效率,从而影响系统业务处理效率。此外,对于数据批量处理也不友好,在单表上进行增删改查,并发效率有限,难以应对并发访问量比较高的情况。
根据本发明的方法主要针对银行数据交互文件以及业务数据迁移文件。
根据本发明的方法主要针对分布式数据库,数据库架构为分库分表(分库分表就是按照一定的规则,对原有的数据库或者数据表进行拆分,把原本存储在一个库或者一个表的数据存储到多张数据表中)。
粗略而言,根据本发明的方法在文件拆分时将文件进行预处理。计算文件读取子区域,每个子区域分配一个线程对文件进行拆分,采用AIO方法文件拆分大容量文本文件。AIO(指的是异步不阻塞的I/O,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理)方法的优势是:AIO异步非阻塞机制,能够保证在文件拆分时在多个线程处理文件时不会长时间占用CPU线程并不会造成线程等待。当文件拆分时,使用多线程读取子区域,一个线程对应一个子区域。每个线程再根据hash取模算法,将读到的数据文件写入目标文件,从而避免多线程处理单文件造成I/0死锁。最后,将文件均分发送给各AP,异步外呼分布式AP并将数据并发导入。
图2示出了根据本发明的用于将大数据量的文本文件导入分布式数据库的方法的一个实施例的流程图。
该方法具有下述方法步骤:
S201:查询并获取文件导入参数配置,其中,例如service层(服务层)在接收到文件之后会解析文件名并将文件名作为查询条件查询文件导入参数配置并且获取该文件导入参数配置。
S202:将所述大数据量的文本文件以数据量平均的方式分成多个文件读取子区域,其中,例如向后检索数据换行符来对文件读取子区域的边界进行修正直至最后一个文件读取子区域。具体而言,经修正的第一个文件读取子区域为
Figure BDA0002837718730000091
其中,X是文件大小,Y是文件读取子区域的数量,Y为自然数且Y≤M×N,其中,M是分库数而N是分表数且均属于文件导入参数配置并且M和N均为自然数,K1是针对第一个文件读取子区域而言的由于出现换行符所引起的偏移位置,经修正的第m个文件读取子区域为
Figure BDA0002837718730000092
其中,Km是针对第m个文件读取子区域而言的由于出现换行符所引起的偏移位置,m∈[2,3,……,Y]。
S203:以对应数量的线程拆分所有文件读取子区域,其中,每个文件读取子区域中的数据分别被拆分到同等数量的多个子文件中,并且其中,例如获取合适的业务字段,拆分每个文件读取子区域中的数据并按照hash(Key)%(M×N)分别来确定拆分出的数据属于哪个子文件,其中,Key是业务字段值,M是分库数而N是分表数并且M和N均属于文件导入参数配置且均为自然数,并且其中,拆分出的子文件表示为“文件名_m_hash(Key)%(M×N)”。此外,在拆分每一个文件读取子区域中的数据时根据文件接口规范计算出其中每一条数据的长度L,其起始位置为B,基于区域(B,B+L)算出下个换行符出现的位置并作为这条数据的结束位,随后继续轮询拆分直至最后一条数据。另外,每个子文件中的数据的数量可以是平均的。
S204:将拆分后得到的所有子文件分配给多个分布式AP,其中例如执行如下分配算法:即,假设子文件总数为T,AP个数为P,每个AP所分配的文件个数N=[T-(T%P)]/P,其中,T和P为自然数且T≥P。
S205:使用多线程异步外呼发送文件导入请求至各分布式AP,并且各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件的编号并发导入到各分表中。
这里需要指出,hash一般翻译为散列、杂凑或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
此外,业务字段可以选择为主键,例如可以唯一地表明用户身份的用户ID。
另外,hash(Key)可以采用直接寻址法、数字分析法、平方取中法、折叠法、随机数法或除留余数法。
图3示出了根据本发明的方法的另一个实施例的流程图。
该实施例与图2中示出的实施例的区别在于,在对文本文件进行处理之前判断该文本文件是否属于大数据量的文本文件。具体而言,在接受或上传文本文件之后查询并获取文件导入参数配置,如果文本文件不属于大数据量的文本文件,则应用传统的技术方案对文本文件进行处理,否则就按照图2中示出的实施例来处理大数据量的文本文件。
传统的技术方案包括如下步骤:
第一步骤:由service层建立数据库连接池。
第二步骤:将文本文件直接交给DB层处理并实现数据导入。
图4示出了根据本发明的方法在web层(网络层)、service层(服务层)以及DB层(数据层)上执行的示意图。
web层负责接收或上传大数据量的文本文件并告知service层对大数据量的文本文件进行处理。service层负责对大数据量的文本文件进行拆分,其中,首先将该大数据量的文本文件分成Y个文件读取子区域,而每个文件读取子区域又拆分出M×N个子文件。在此需要注意的是,图4中以流程的其中一个框“文件处理”包含了将大数据量的文本文件分成Y个文件读取子区域并且每个文件读取子区域又拆分出M×N个子文件这一过程,该过程的具体内容请见上面对图3的描述。可以看出,拆分出的子文件的总数为Y×M×N。随后,在data层使用多线程异步外呼发送文件导入请求至各分布式AP,并且各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件对应地并发导入到各分表中。
在此需要指出,这里的大数据量的文本文件中的一条数据是指一条记录。为了清楚起见,以下面的表1-1来粗略地举例。
客户编号 姓名 性别 业务编号
0001 刘南 002
0002 王娟 004
0003 李克用 006
0004 张阳 003
0005 刘南 006
表1-1
在此,假设大数据量的文本文件是表1-1。该表包括4个字段,即,客户编号、姓名、性别和业务编号。按照上面所述的一条数据是指一条记录的规定,可以看到,该表包含5条数据,即,(0001;刘南;男;002)、(0002;王娟;女;004)、(0003;李克用;男;006)、(0004;张阳;女;003)和(0005;刘南;女;006)。
图5示出了根据本发明的方法在service层将文件子区域中的数据拆分到子文件的示意图。
文件拆分总体呈树状结构,其中,根节点为大数据量的文本文件,而子节点为拆分后的子文件。在文件接口规范中,选取适当的业务字段并对该选取的业务字段的值哈希取模。业务字段值=key,模数=M×N,将数据按照“hash(key)%(M×N)”的规则,确定数据归属,即,确定拆分出的数据应放置在哪个子文件中。在拆分每一个文件读取子区域中的数据时根据文件接口规范计算出其中每一条数据的长度L,其起始位置为B,基于区域(B,B+L)算出下个换行符出现的位置并作为这条数据的结束位,随后继续轮询拆分直至最后一条数据。右侧示出了拆分出的子文件,例如针对一个文件读取子区域,从上至下依次为“文件1_1”、“文件1_2”,……,“文件1_N”,“文件2_1”、“文件2_2”,……,“文件2_N”,……,“文件M_1”、“文件M_2”,……,“文件M_N”,即,总体来看,分别从其中一个文件读取子区域拆分出M×N个子文件。
图6示出了根据本发明的方法在DB层进行处理的具体示意图。
文件拆分结束后,将拆分后的子文件进行平均分配发送给各AP,分配算法为:假设子文件总数=T,AP个数=P,每台AP分配的子文件个数N=[T-(T%P)]/P,按顺序分配给AP1分配文件个数=N+1个,AP2分配文件个数=N+1…,直到分完为止。例如,发送给各台AP,例如3台AP,8个子文件,AP1分配3个子文件,AP2分配3个子文件,AP3分配剩下的2个子文件。然后使用多线程异步外呼发送文件导入请求到各分布式AP,各AP获取到请求后,以分配到的文件个数起多线程导入文件,1个线程对应1个子文件,按照文件拆分后的文件标号并发导入到各分表中。
如上所述,根据本发明的方法采用了AIO方法拆分大数据量的文本文件。其不长时间占用CPU线程,并且在文件拆分时,可以使用多线程并因此充分利用内存资源;使用分布式存储技术用以实现数据库分库分表;异步外呼其他分布式主机并将数据并发导入。
图7是根据本发明实施例的用于将大数据量的文本文件导入分布式数据库的装置的主要模块的示意图。
如图7所示,本发明实施例的用于将大数据量的文本文件导入分布式数据库的装置700包括:第一模块701、第二模块702、第三模块703、第四模块704和第五模块705;其中,
第一模块701用于查询并获取文件导入参数配置;
第二模块702将大数据量的文本文件以数据量平均的方式分成多个文件读取子区域;
第三模块703以对应数量的线程拆分所有文件读取子区域,其中,每个文件读取子区域中的数据分别被拆分到同等数量的多个子文件中;
第四模块704将拆分后得到的所有子文件分配给多个分布式AP;
第五模块705使用多线程异步外呼发送文件导入请求至各分布式AP并且使各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件的编号并发导入到各分表中。
图8示出了可以应用本发明实施例的方法或装置的示例性系统架构800。
如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器。
需要说明的是,本发明实施例所提供的方法一般由服务器805执行,相应地,该装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。
本发明的关键点在于文件拆分机制和数据分布式导入机制,其中,可根据配置灵活决定文件是否需要拆分,若文件需要拆分可按分库个数、分表个数配置来决定文件拆分个数。如上面描述的那样,充分利用了计算机内存、CPU资源,并且控制数据库导入量以及分布式化导入数据。
分布式是把数据库横向扩展到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的I/O能力限制,解决数据库扩展性问题。如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片。将整个数据库打碎的过程就叫做分布式。
形式上,分布式可以简单定义为将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为一个片,分区方式可以是任意的,并不局限于传统的水平分区和垂直分区。一个分布式可以包含多个表的内容甚至可以包含多个数据库实例中的内容。每个分布式被放置在一个数据库服务器上。一个数据库服务器可以处理一个或多个分布式的数据。系统中需要有服务器进行查询路由转发,负责将查询转发到包含该查询所访问数据的分布式或分布式集合节点上去执行。
根据本发明的方法具有如下优势:
1.充分利用计算机资源;
通过利用计算机内存缓冲区,异步地实现文件快速拆分。通过CPU线程机制,将待拆分的文件按照对应参数配置使用多线程并发拆分。
2.实现分布式化导入;
通过分库分表将大数据量的文本文件中的数据分布式存储到多台数据库主机,这保证了数据导入效率、分担了数据库存储负荷并且提高了数据的可靠性、可用性和扩展性。
3.灵活配置文件拆分参数;
通过在数据库中配置文件类型、文件大小来控制文件是否需要拆分;通过在数据库中配置分库个数和分表个数来控制文件拆分个数,从而提高系统的可用性和延展性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (18)

1.用于将大数据量的文本文件导入分布式数据库的方法,其特征在于具有下列步骤:
第一步:查询并获取文件导入参数配置;
第二步:将所述大数据量的文本文件以数据量平均的方式分成多个文件读取子区域;
第三步:以对应数量的线程拆分所有文件读取子区域,其中,每个文件读取子区域中的数据分别被拆分到同等数量的多个子文件中;
第四步:将拆分后得到的所有子文件分配给多个分布式AP;
第五步:使用多线程异步外呼发送文件导入请求至各分布式AP,并且各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件的编号并发导入到各分表中。
2.根据权利要求1所述的方法,其特征在于,在所述第一步中解析文本文件的名称并将文本文件的名称作为查询条件。
3.根据权利要求1或2所述的方法,其特征在于,如果文本文件不属于大数据量的文本文件,则应用传统的技术方案对文本文件进行处理。
4.根据权利要求3所述的方法,其特征在于,所述传统的技术方案包括下列步骤:
第一步:由service层建立数据库连接池;
第二步:将文本文件直接交给DB层处理并实现数据导入。
5.根据权利要求1所述的方法,其特征在于,在所述第二步中,向后检索数据换行符来对文件读取子区域的边界进行修正直至最后一个文件读取子区域。
6.根据权利要求5所述的方法,其特征在于,经修正的第一个文件读取子区域为
Figure FDA0002837718720000021
其中,X是文件大小,Y是文件读取子区域的数量,Y为自然数且Y≤M×N,其中,M是分库数而N是分表数且均属于文件导入参数配置并且M和N均为自然数,K1是针对第一个文件读取子区域而言的由于出现换行符所引起的偏移位置,经修正的第m个文件读取子区域为
Figure FDA0002837718720000022
其中,Km是针对第m个文件读取子区域而言的由于出现换行符所引起的偏移位置,m∈[2,3,……,Y]。
7.根据权利要求6所述的方法,其特征在于,在所述第三步中,获取合适的业务字段,拆分每个文件读取子区域中的数据并按照hash(Key)%(M×N)分别来确定拆分出的数据属于哪个子文件,其中,Key是业务字段值,M是分库数而N是分表数并且M和N均属于文件导入参数配置且均为自然数,并且其中,拆分出的子文件表示为“文件名_m_hash(Key)%(M×N)”。
8.根据权利要求7所述的方法,其特征在于,所述业务字段为主键。
9.根据权利要求8所述的方法,其特征在于,所述主键为用户ID。
10.根据权利要求7所述的方法,其特征在于,hash(Key)可以采用直接寻址法、数字分析法、平方取中法、折叠法、随机数法或除留余数法。
11.根据权利要求7所述的方法,其特征在于,在拆分每一个文件读取子区域中的数据时根据文件接口规范计算出其中每一条数据的长度L,其起始位置为B,基于区域(B,B+L)算出下个换行符出现的位置并作为这条数据的结束位,随后继续轮询拆分直至最后一条数据。
12.根据权利要求7所述的方法,其特征在于,每个子文件中的数据的数量是平均的。
13.根据权利要求1所述的方法,其特征在于,在所述第四步中执行如下分配算法:假设子文件总数为T,AP个数为P,每个AP所分配的文件个数N=[T-(T%P)]/P,其中,T和P为自然数且T≥P。
14.根据权利要求1所述的方法,其特征在于,所述方法总体上呈树状结构。
15.根据权利要求1所述的方法,其特征在于,所述方法针对分布式数据库并且数据库架构为分库分表。
16.用于将大数据量的文本文件导入分布式数据库的装置,其特征在于,包括第一模块、第二模块、第三模块、第四模块和第五模块,其中,
所述第一模块用于查询并获取文件导入参数配置;
所述第二模块将大数据量的文本文件以数据量平均的方式分成多个文件读取子区域;
所述第三模块以对应数量的线程拆分所有文件读取子区域,其中,每个文件读取子区域中的数据分别被拆分到同等数量的多个子文件中;
所述第四模块将拆分后得到的所有子文件分配给多个分布式AP;
所述第五模块使用多线程异步外呼发送文件导入请求至各分布式AP并且使各分布式AP分别以分配到的子文件个数发起对应数量的线程进行文件导入,其中,按照拆分后的子文件的编号并发导入到各分表中。
17.用于将大数据量的文本文件导入分布式数据库的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-15中任一所述的方法。
18.计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-15中任一所述的方法。
CN202011481442.4A 2020-12-15 2020-12-15 用于将大数据量的文本文件导入分布式数据库的方法及装置 Pending CN112597219A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011481442.4A CN112597219A (zh) 2020-12-15 2020-12-15 用于将大数据量的文本文件导入分布式数据库的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011481442.4A CN112597219A (zh) 2020-12-15 2020-12-15 用于将大数据量的文本文件导入分布式数据库的方法及装置

Publications (1)

Publication Number Publication Date
CN112597219A true CN112597219A (zh) 2021-04-02

Family

ID=75196228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011481442.4A Pending CN112597219A (zh) 2020-12-15 2020-12-15 用于将大数据量的文本文件导入分布式数据库的方法及装置

Country Status (1)

Country Link
CN (1) CN112597219A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672557A (zh) * 2021-08-25 2021-11-19 中国工商银行股份有限公司 数据迁移至分布式系统方法、系统、设备、介质、产品
WO2021238902A1 (zh) * 2020-05-25 2021-12-02 中兴通讯股份有限公司 数据导入方法、装置、服务平台及存储介质
CN114896326A (zh) * 2022-06-02 2022-08-12 中国邮政储蓄银行股份有限公司 将大数据量的文本文件导入数据库的方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542071A (zh) * 2012-01-17 2012-07-04 深圳市同洲视讯传媒有限公司 一种分布式处理数据的系统及方法
US20120330954A1 (en) * 2011-06-27 2012-12-27 Swaminathan Sivasubramanian System And Method For Implementing A Scalable Data Storage Service
CN109710572A (zh) * 2018-12-29 2019-05-03 北京赛思信安技术股份有限公司 一种基于HBase的文件分片方法
CN111049884A (zh) * 2019-11-18 2020-04-21 武汉方始科技有限公司 一种分布式大文件存储系统及文件上传和下载方法
CN111581155A (zh) * 2020-03-30 2020-08-25 平安科技(深圳)有限公司 数据入数据库的方法、装置和计算机设备
CN111597244A (zh) * 2020-05-19 2020-08-28 北京思特奇信息技术股份有限公司 一种数据快速导入的方法、系统及计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120330954A1 (en) * 2011-06-27 2012-12-27 Swaminathan Sivasubramanian System And Method For Implementing A Scalable Data Storage Service
CN102542071A (zh) * 2012-01-17 2012-07-04 深圳市同洲视讯传媒有限公司 一种分布式处理数据的系统及方法
CN109710572A (zh) * 2018-12-29 2019-05-03 北京赛思信安技术股份有限公司 一种基于HBase的文件分片方法
CN111049884A (zh) * 2019-11-18 2020-04-21 武汉方始科技有限公司 一种分布式大文件存储系统及文件上传和下载方法
CN111581155A (zh) * 2020-03-30 2020-08-25 平安科技(深圳)有限公司 数据入数据库的方法、装置和计算机设备
CN111597244A (zh) * 2020-05-19 2020-08-28 北京思特奇信息技术股份有限公司 一种数据快速导入的方法、系统及计算机存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邢芳;刘青昆;宫利东;: "基于文件拆分与高斯消去的线性方程组求解", 计算机工程, no. 03, 5 February 2011 (2011-02-05) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021238902A1 (zh) * 2020-05-25 2021-12-02 中兴通讯股份有限公司 数据导入方法、装置、服务平台及存储介质
CN113672557A (zh) * 2021-08-25 2021-11-19 中国工商银行股份有限公司 数据迁移至分布式系统方法、系统、设备、介质、产品
CN114896326A (zh) * 2022-06-02 2022-08-12 中国邮政储蓄银行股份有限公司 将大数据量的文本文件导入数据库的方法及装置

Similar Documents

Publication Publication Date Title
CN112597219A (zh) 用于将大数据量的文本文件导入分布式数据库的方法及装置
CN110019125B (zh) 数据库管理的方法和装置
CN110858194A (zh) 一种数据库扩容的方法和装置
CN109150929B (zh) 高并发场景下的数据请求处理方法和装置
CN112835904A (zh) 一种数据处理方法和数据处理装置
CN111061680A (zh) 一种数据检索的方法和装置
CN110909978A (zh) 资源处理方法、装置、服务器及计算机可读存储介质
CN111339057A (zh) 减少回源请求的方法、装置及计算机可读存储介质
CN112015790A (zh) 一种数据处理的方法和装置
CN110795419A (zh) 动态分库路由的方法和装置
CN113742389A (zh) 一种业务处理方法和装置
CN109213815B (zh) 控制执行次数的方法、装置、服务器终端以及可读介质
CN115525659A (zh) 数据查询方法、装置、电子设备及存储介质
CN112711572B (zh) 适用于分库分表的在线扩容方法和装置
CN115794876A (zh) 针对业务数据包的分片处理方法、装置、设备及存储介质
CN113077220A (zh) 用户请求的处理方法和装置
CN113760861A (zh) 一种数据迁移的方法和装置
CN112506583A (zh) 一种实例控制方法、装置、设备、存储介质以及程序产品
CN112784187A (zh) 页面展示方法和装置
CN112417081A (zh) 一种实现增量倒排索引数据存储的方法和装置
CN112783904B (zh) 一种更新索引数据的方法和装置
CN110896391A (zh) 一种报文处理方法和装置
CN115277610B (zh) 基于双活环境的消息分流发送方法、装置、设备及介质
US11893342B2 (en) Statistical join methods for data management
CN113282274B (zh) 一种数据处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination