CN109767274B - 一种对海量发票数据进行关联存储的方法及系统 - Google Patents
一种对海量发票数据进行关联存储的方法及系统 Download PDFInfo
- Publication number
- CN109767274B CN109767274B CN201811480227.5A CN201811480227A CN109767274B CN 109767274 B CN109767274 B CN 109767274B CN 201811480227 A CN201811480227 A CN 201811480227A CN 109767274 B CN109767274 B CN 109767274B
- Authority
- CN
- China
- Prior art keywords
- invoice data
- data
- invoice
- node
- stored
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种对海量发票数据进行关联存储的方法及系统,其中方法包括:将同一企业的发票数据进行聚合,并将所述经过聚合的所述发票数据缓存到消息队列,以构建基于所述消息队列的数据缓存层;当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点;根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;当所述发票数据对应表中已存储对应的企业税号时,将所述发票数据存储于对应的企业税号的对应的数据存储节点。
Description
技术领域
本发明涉及发票数据存储技术领域,更具体地,涉及一种对海量发票数据进行关联存储的方法及系统。
背景技术
电子发票是信息时代的产物,同普通发票一样,采用税务局统一发放的形式给商家使用,发票号码采用全国统一编码,采用统一防伪技术,分配给商家,在电子发票上附有电子税局的签名机制。发票代码是税务部门给予发票的编码。在查询发票真伪的时候,需要输入发票代码。普通发票,就是通常说的手工版发票代码为12位。增值税专用发票和增值税普通发票的代码原为10位,2018年1月1日开始,我国对增值税普通发票进行调整,新版增值税普通发票(折叠票)发票代码从10位调整为12位。发票号码是税务部门给予发票的编码。在查询发票真伪的时候,需要输入发票号码。发票号码一般是8位,但是在网上查询发票真伪时,一般要在发票号码前面输入信息码或发票代码。所以,在查询发票真伪时的“发票号码”由“信息码+发票号码”或“发票代码+发票号码”组成。
HDFS即Hadoop分布式文件系统,是对谷歌GFS的开源实现,初始设计用于部署在众多普通的硬件设备上,提高海量的大数据集的存储,其具有高容错性、高可靠性、高可扩展性等优点,当前已被众多科研机构和公司广泛使用。
HDFS也采用主从架构,一个HDFS集群包含一个NameNode主节点和众多DataNode从节点。NameNode是HDFS文件系统的主节点,它负责维护整个HDFS文件系统的命名空间,管理所有文件和目录的元数据。NameNode节点存储数据块相关信息,包括文件和数据块的映射关系,数据块和DataNode节点的映射关系。同时,Namenode提供了相关服务接口供用户客户端、DataNode节点、Second NameNode节点通过RPC机制与NameNode节点通信调用。
在HDFS文件系统中,文件通常按照固定大小(默认为64MB每个数据块)被切分成多个数据块,并尽可能分散存储于不同的DataNode中,同时由NameNode节点对文件信息进行维护。NameNode节点维护着两张表。
1)filename->blocksequence(namespace)
2)block->machinelist("inodes")
第一张表记录文件与block数据块的映射关系,即文件存在于哪些block中、在该block的偏移量、大小等信息;第二张表则记录着block位于哪些DataNode节点的信息。
当客户端提交文件写入到HDFS文件系统中时,需要向NameNode申请block数据块信息,该block信息包括要写入的各个DataNode节点信息。NameNode收到客户端的申请后会为该block的写入分配节点,节点的选择算法中采用了机架感知策略。在默认情况下,Hadoop配置存储的文件副本数为3,即选择三个节点来存储相同的数据块。三个节点的依次选择为本地节点、另一机架上随机选择一个节点和本地节点同一机架的另一节点。如果上传文件的客户端不是该集群的某个节点,则没有本地节点,而是随机选择一个节点,再根据该节点按照上述方式选择后续的两个节点。
同时HDFS文件系统通过均衡器来保证数据在集群中各个节点上均匀分布。均衡器在坚持上述文件副本放置策略的基础上,对各个节点的存储容量进行评估,根据评估结果在节点之间移动数据块。其目的是保证单个Datanode节点的磁盘使用率和HDFS的存储空间使用率在一定阀值内保持一致。
数据本地性是影响HDFS性能的一个重要因素,它的思想是任务应尽量在其所需数据的节点上执行。这也是Hadoop的一个核心思想:移动计算程序,而不移动数据。较高的数据本地性,能减小数据传输开销,节约宝贵的带宽资源,进而能提高集群性能。
电子发票系统需要采集电子发票的发票号码、发票代码、开票日期、购方名称、销方名称等三十多个参数,同时后端需要对接企业、行业、商品等各类数据,存储到大数据平台。大数据平台在高效可靠地存储这些数据的基础上,还要提供快速的数据查询和关联分析方法。海量电子发票大数据呈现出以下3个特征对数据存储及查询方法构成一定的挑战:
(1)数据体量巨大。目前,电子发票应用越来越广泛,产生的数据量呈指数增长,数据规模由TB级向PB级发展;
(2)数据具有关联性。发票数据分析相关应用研究需要从时空维度对各类数据进行关联挖掘分析,由于关联分析涉及的数据类型众多,多源数据关联查询需求日益增长。如何在大数据环境下对海量发票数据进行存储优化并提供高效的关联查询方法是亟待解决的问题;
(3)数据处理速率要求高。发票数据分析研究需要对海量数据进行计算分析,这需要数据存储及查询技术能够应对后续高速率数据处理的挑战。
因此,需要一种技术,以实现对海量发票数据进行关联存储的技术。
发明内容
本发明技术方案提供了一种对海量发票数据进行关联存储的方法及系统,以解决如何对海量发票数据进行关联存储的问题。
为了解决上述问题,本发明提供了一种对海量发票数据进行关联存储的方法,所述方法包括:
将同一企业的发票数据进行聚合,并将所述经过聚合的所述发票数据缓存到消息队列,以构建基于所述消息队列的数据缓存层;
当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点;
根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
当所述发票数据对应表中已存储对应的企业税号时,将所述发票数据存储于对应的企业税号的对应的数据存储节点。
优选地,还包括:当所述发票数据对应表中未存储对应的企业税号时,随机选择第一个节点存储所述发票数据;
并将所述发票数据的副本存储于与所述第一个节点相同机架的其他节点,和与所述第一个节点不同机架的其他节点;
将所述企业税号与所述第一个节点的主机号存储到表中。
优选地,还包括:当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点,将所述发票数据指提交到分布式文件系统HDFS进行存储;
当所述分布式文件系统HDFS接收到所述发票数据存储申请后,所述分布式文件系统HDFS主节点根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
当所述发票数据对应表中存储对应的企业税号时,通过所述文件系统HDFS主节点将所述发票数据存储于对应的企业税号的对应的所述文件系统HDFS从节点;
将所述发票数据的第二副本和第三副本根据所述文件系统HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
优选地,所述存储条件包括:
当消息队列中的缓存数据达到预定量数据;或
当消息队列中的缓存数据达到预定时间。
优选地,所述根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号,包括:
根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据的销方节点对应表或购方节点对应表中是否存储对应的企业税号。
基于本发明的另一方面,提供一种对海量发票数据进行关联存储的系统,所述系统包括:
聚合单元,用于将同一企业的发票数据进行聚合,并将所述经过聚合的所述发票数据缓存到消息队列,以构建基于所述消息队列的数据缓存层;
缓存单元,用于当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点;
判断单元,用于根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
存储单元,用于当所述发票数据对应表中已存储对应的企业税号时,将所述发票数据存储于对应的企业税号的对应的数据存储节点。
优选地,所述存储单元还用于:当所述发票数据对应表中未存储对应的企业税号时,随机选择第一个节点存储所述发票数据;
并将所述发票数据的副本存储于与所述第一个节点相同机架的其他节点,和与所述第一个节点不同机架的其他节点;
将所述企业税号与所述第一个节点的主机号存储到表中。
优选地,所述缓存单元还用于:当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点,将所述发票数据指提交到分布式文件系统HDFS进行存储;
所述判断单元还用于:当所述分布式文件系统HDFS接收到所述发票数据存储申请后,所述分布式文件系统HDFS主节点根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
所述存储单元还用于:当所述发票数据对应表中存储对应的企业税号时,通过所述文件系统HDFS主节点将所述发票数据存储于对应的企业税号的对应的所述文件系统HDFS从节点;
将所述发票数据的第二副本和第三副本根据所述文件系统HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
优选地,所述存储条件包括:
当消息队列中的缓存数据达到预定量数据;或
当消息队列中的缓存数据达到预定时间。
优选地,所述判断单元用于:根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号,还用于:
根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据的销方节点对应表或购方节点对应表中是否存储对应的企业税号。
本发明技术方案提供了一种对海量发票数据进行关联存储的方法,方法包括:将同一企业的发票数据进行聚合,并将经过聚合的发票数据缓存到消息队列,以构建基于消息队列的数据缓存层;当数据缓存层缓存的发票数据达到存储条件时,为缓存层缓存的发票数据选择数据存储节点;根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号;当发票数据对应表中已存储对应的企业税号时,将发票数据存储于对应的企业税号的对应的数据存储节点。本发明技术方案在进行海量发票数据关联分析时,关联了发票所对应的企业各个维度数据,为了提高数据关联分析的性能,本发明技术方案对HDFS数据存储流程进行了重新定义。在发票数据写入时,考虑发票数据对应的购方和销方数据所在的存储节点,保证关联数据尽可能存储在同一数据节点,减少Hadoop执行关联分析作业时网络数据的传输量,提高作业数据本地性任务的比例,达到提升数据分析性能的目的。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为本发明技术方案提供了一种对海量发票数据进行关联存储的方法流程图;
图2为本发明技术方案提供了一种对海量发票数据进行关联存储的方法流程图;以及
图3为本发明技术方案提供了一种对海量发票数据进行关联存储的系统结构图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为本发明技术方案提供了一种对海量发票数据进行关联存储的方法流程图。本申请实施方式通过对HDFS中NameNode模块进行改造,具体为在NameNode中存储两张表,一张为购方节点对应表,存储购方企业税号ID和对应发票数据存储的第一个节点主机名,另一张为销方节点对应表,存储销方企业税号ID和对应发票数据存储的第一个节点主机名。本申请提高了数据存储的安全性和分布式计算的性能,对所有发票数据以三副本的形式进行存储。如图1所示,一种对海量发票数据进行关联存储的方法,方法包括:
优选地,在步骤101:将同一企业的发票数据进行聚合,并将经过聚合的发票数据缓存到消息队列,以构建基于消息队列的数据缓存层。本申请首先构建基于消息队列的数据缓存层,对需要写入大数据平台的发票数据进行聚合和缓存。由于发票数据均为结构化数据,占用存储空间较小,而在发票数据关联分析中需要从购方和销方两个维度进行不同的关联分析,本申请以企业的税号ID作为关联字段,同时根据购方企业的税号和销方企业的税号分别进行聚合,即将每张发票存储两份,分别以购方和销方企业的税号进行聚合。聚合数据先缓存到消息队列中。
优选地,在步骤102:当数据缓存层缓存的发票数据达到存储条件时,为缓存层缓存的发票数据选择数据存储节点。本申请当缓存数据达到阈值后,基于缓存数据选择合适的数据节点。优选地,存储条件包括:当消息队列中的缓存数据达到预定量数据;或当消息队列中的缓存数据达到预定时间。
本申请的存储条件为:当消息队列中的缓存数据达到一定数据(包括500条,1000条,或1500,以及2000条发票数据等);或者一定时间(包括每3分钟,5分钟,8分钟,10分钟等)。当满足存储条件时,将发票数据批量提交到HDFS进行存储。
优选地,在步骤103:根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号。优选地,根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号,包括:根据发票数据的聚合维度查询发票数据对应表,并检查发票数据的销方节点对应表或购方节点对应表中是否存储对应的企业税号。
本申请中,HDFS集群接收到数据存储申请后,NameNode根据数据聚合维度查询相应销方节点对应表或销方节点对应表,检查表内是否存储对应的企业税号ID。
优选地,在步骤104:当发票数据对应表中已存储对应的企业税号时,将发票数据存储于对应的企业税号的对应的数据存储节点。优选地,还包括:当发票数据对应表中未存储对应的企业税号时,随机选择第一个节点存储发票数据;并将发票数据的副本存储于与第一个节点相同机架的其他节点,和与第一个节点不同机架的其他节点;将企业税号与第一个节点的主机号存储到表中。
优选地:当数据缓存层缓存的发票数据达到存储条件时,为缓存层缓存的发票数据选择数据存储节点,将发票数据指提交到分布式文件系统HDFS进行存储;当分布式文件系统HDFS接收到发票数据存储申请后,分布式文件系统HDFS主节点根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号;当发票数据对应表中存储对应的企业税号时,通过文件系统HDFS主节点将发票数据存储于对应的企业税号的对应的文件系统HDFS从节点;将发票数据的第二副本和第三副本根据文件系统HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
本申请中,如果该表中已经存储该税号ID对应的节点,则NameNode将数据存储到对应的DataNode数据节点,对于数据的第二副本和第三副本根据HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
如果该表中没有存储该税号ID对应的节点,则NameNode采用机架感知策略,选择三个节点来存储三个副本,即随机选择第一个节点,与第一个节点同一机架的其他节点,不同机架的其他节点。然后将该税号与对应的第一个节点主机号存储到表中。
本申请提出的一种基于HDFS的海量发票数据关联存储性能优化方法,该方法在不影响Hadoop作业运行的基础上,通过在海量数据存储这一最初环节对数据的存储节点进行控制和优化,保证在进行发票数据关联分析时,同一企业的发票数据尽可能在同一节点上,可以极大减少后续关联分析作业运行时,网络中的数据传输量并提高作业运行时的数据本地性,缩短作业运行时间。本申请实施方式对其他类似的海量数据分析场景有一定的指导意义。
图2为本发明技术方案提供了一种对海量发票数据进行关联存储的方法流程图。如图2所示,本申请提供的一种对海量发票数据进行关联存储的方法,本申请构建了一个适用于海量发票数据关联分析的数据存储模型,该模型可以极大提高进行数据关联分析的性能。本申请通过对税务大数据平台中HDFS原有的数据存储算法进行改进。首先,构建购方节点对应表和销方节点对应表,将这两个表存放在Hadoop集群的NameNode节点上,提供给NameNode用于后续调用和更新。当HDFS文件系统需要存储数据时,Namenode对数据分割成相同大小的数据块,然后在校验节点的存储容量的前提下,根据购方节点对应表和销方节点对应表选择合适的节点存储数据块。本申请,首先通过发票业务系统向大数据平台发送发票数据,数据缓存层接收发票数据后,将发票数据存储为两份,分别以购方企业税号和销方企业税号进行聚合并缓存到消息队列中。当消息队列中的缓存数据达到一定数据(如1000条发票数据),或者一定时间(如每5分钟)时,将发票数据指提交到HDFS进行存储。HDFS的NameNode节点根据数据聚合维度查询相应购方节点对应表或销方节点对应表,检查表内是否存储对应的企业税号ID。如表中已经存储该税号ID对应的节点时,NameNode节点将数据存储到对应的DataNode数据节点。对于数据的第二副本和第三副本根据HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储,完成发票数据到HDFS的存储流程;若表中没有存储该税号ID对应的节点时,NameNode采用机架感知策略,选择三个节点来存储三个副本,并将该税号与对应的第一个节点主机号存储到对应的购方节点对应表或销方节点对应表,完成发票数据到HDFS的存储流程。
图3为本发明技术方案提供了一种对海量发票数据进行关联存储的系统结构图。如图3所示,一种对海量发票数据进行关联存储的系统,系统包括:
聚合单元301,用于将同一企业的发票数据进行聚合,并将经过聚合的发票数据缓存到消息队列,以构建基于消息队列的数据缓存层。本申请首先构建基于消息队列的数据缓存层,对需要写入大数据平台的发票数据进行聚合和缓存。由于发票数据均为结构化数据,占用存储空间较小,而在发票数据关联分析中需要从购方和销方两个维度进行不同的关联分析,本申请以企业的税号ID作为关联字段,同时根据购方企业的税号和销方企业的税号分别进行聚合,即将每张发票存储两份,分别以购方和销方企业的税号进行聚合。聚合数据先缓存到消息队列中。
缓存单元302,用于当数据缓存层缓存的发票数据达到存储条件时,为缓存层缓存的发票数据选择数据存储节点。优选地,存储条件包括:当消息队列中的缓存数据达到预定量数据;或当消息队列中的缓存数据达到预定时间。本申请的存储条件为:当消息队列中的缓存数据达到一定数据(包括500条,1000条,或1500,以及2000条发票数据等);或者一定时间(包括每3分钟,5分钟,8分钟,10分钟等)。当满足存储条件时,将发票数据批量提交到HDFS进行存储。
判断单元303,用于根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号。优选地,根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号,包括:根据发票数据的聚合维度查询发票数据对应表,并检查发票数据的销方节点对应表或购方节点对应表中是否存储对应的企业税号。
本申请中,HDFS集群接收到数据存储申请后,NameNode根据数据聚合维度查询相应销方节点对应表或销方节点对应表,检查表内是否存储对应的企业税号ID。
存储单元304,用于当发票数据对应表中已存储对应的企业税号时,将发票数据存储于对应的企业税号的对应的数据存储节点。优选地,还包括:当发票数据对应表中未存储对应的企业税号时,随机选择第一个节点存储发票数据;并将发票数据的副本存储于与第一个节点相同机架的其他节点,和与第一个节点不同机架的其他节点;将企业税号与第一个节点的主机号存储到表中。
优选地,存储单元304还用于:当发票数据对应表中未存储对应的企业税号时,随机选择第一个节点存储发票数据;并将发票数据的副本存储于与第一个节点相同机架的其他节点,和与第一个节点不同机架的其他节点;将企业税号与第一个节点的主机号存储到表中。
优选地,缓存单元302还用于:当数据缓存层缓存的发票数据达到存储条件时,为缓存层缓存的发票数据选择数据存储节点,将发票数据指提交到分布式文件系统HDFS进行存储。
判断单元303还用于:当分布式文件系统HDFS接收到发票数据存储申请后,分布式文件系统HDFS主节点根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号。优选地,判断单元用于:根据发票数据的聚合维度查询发票数据对应表,并检查发票数据对应表中是否存储对应的企业税号,还用于:根据发票数据的聚合维度查询发票数据对应表,并检查发票数据的销方节点对应表或购方节点对应表中是否存储对应的企业税号。
存储单元304还用于:当发票数据对应表中存储对应的企业税号时,通过文件系统HDFS主节点将发票数据存储于对应的企业税号的对应的文件系统HDFS从节点;将发票数据的第二副本和第三副本根据文件系统HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
本申请中,如果该表中已经存储该税号ID对应的节点,则NameNode将数据存储到对应的DataNode数据节点,对于数据的第二副本和第三副本根据HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
如果该表中没有存储该税号ID对应的节点,则NameNode采用机架感知策略,选择三个节点来存储三个副本,即随机选择第一个节点,与第一个节点同一机架的其他节点,不同机架的其他节点。然后将该税号与对应的第一个节点主机号存储到表中。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
Claims (10)
1.一种对海量发票数据进行关联存储的方法,所述方法包括:
将同一企业的发票数据进行聚合,并将所述经过聚合的所述发票数据缓存到消息队列,以构建基于所述消息队列的数据缓存层;
当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点;
根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
当所述发票数据对应表中已存储对应的企业税号时,将所述发票数据存储于对应的企业税号的对应的数据存储节点。
2.根据权利要求1所述的方法,还包括:当所述发票数据对应表中未存储对应的企业税号时,随机选择第一个节点存储所述发票数据;
并将所述发票数据的副本存储于与所述第一个节点相同机架的其他节点,和与所述第一个节点不同机架的其他节点;
将所述企业税号与所述第一个节点的主机号存储到表中。
3.根据权利要求1所述的方法,还包括:当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点,将所述发票数据提交到分布式文件系统HDFS进行存储;
当所述分布式文件系统HDFS接收到所述发票数据存储申请后,所述分布式文件系统HDFS主节点根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
当所述发票数据对应表中存储对应的企业税号时,通过所述文件系统HDFS主节点将所述发票数据存储于对应的企业税号的对应的所述文件系统HDFS从节点;
将所述发票数据的第二副本和第三副本根据所述文件系统HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
4.根据权利要求1所述的方法,所述存储条件包括:
当消息队列中的缓存数据达到预定量数据;或
当消息队列中的缓存数据达到预定时间。
5.根据权利要求1所述的方法,所述根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号,包括:
根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据的销方节点对应表或购方节点对应表中是否存储对应的企业税号。
6.一种对海量发票数据进行关联存储的系统,所述系统包括:
聚合单元,用于将同一企业的发票数据进行聚合,并将所述经过聚合的所述发票数据缓存到消息队列,以构建基于所述消息队列的数据缓存层;
缓存单元,用于当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点;
判断单元,用于根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
存储单元,用于当所述发票数据对应表中已存储对应的企业税号时,将所述发票数据存储于对应的企业税号的对应的数据存储节点。
7.根据权利要求6所述的系统,所述存储单元还用于:当所述发票数据对应表中未存储对应的企业税号时,随机选择第一个节点存储所述发票数据;
并将所述发票数据的副本存储于与所述第一个节点相同机架的其他节点,和与所述第一个节点不同机架的其他节点;
将所述企业税号与所述第一个节点的主机号存储到表中。
8.根据权利要求6所述的系统,所述缓存单元还用于:当所述数据缓存层缓存的所述发票数据达到存储条件时,为所述缓存层缓存的所述发票数据选择数据存储节点,将所述发票数据提交到分布式文件系统HDFS进行存储;
所述判断单元还用于:当所述分布式文件系统HDFS接收到所述发票数据存储申请后,所述分布式文件系统HDFS主节点根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号;
所述存储单元还用于:当所述发票数据对应表中存储对应的企业税号时,通过所述文件系统HDFS主节点将所述发票数据存储于对应的企业税号的对应的所述文件系统HDFS从节点;
将所述发票数据的第二副本和第三副本根据所述文件系统HDFS默认的机架感知策略,在同一机架的不同节点和不同机架的节点中选择进行存储。
9.根据权利要求6所述的系统,所述存储条件包括:
当消息队列中的缓存数据达到预定量数据;或
当消息队列中的缓存数据达到预定时间。
10.根据权利要求6所述的系统,所述判断单元用于:根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据对应表中是否存储对应的企业税号,还用于:
根据所述发票数据的聚合维度查询所述发票数据对应表,并检查所述发票数据的销方节点对应表或购方节点对应表中是否存储对应的企业税号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811480227.5A CN109767274B (zh) | 2018-12-05 | 2018-12-05 | 一种对海量发票数据进行关联存储的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811480227.5A CN109767274B (zh) | 2018-12-05 | 2018-12-05 | 一种对海量发票数据进行关联存储的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109767274A CN109767274A (zh) | 2019-05-17 |
CN109767274B true CN109767274B (zh) | 2023-04-25 |
Family
ID=66451796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811480227.5A Active CN109767274B (zh) | 2018-12-05 | 2018-12-05 | 一种对海量发票数据进行关联存储的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109767274B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502497A (zh) * | 2019-07-27 | 2019-11-26 | 北京合力中税科技发展有限公司 | 一种电子发票数据组织查询方法及系统 |
CN110532268B (zh) * | 2019-08-29 | 2023-04-28 | 深圳前海环融联易信息科技服务有限公司 | 海量数据分库存储的方法、装置、计算机设备及存储介质 |
CN111210288A (zh) * | 2019-12-26 | 2020-05-29 | 大象慧云信息技术有限公司 | 基于税控服务器的发票批量开具作业优化调度方法及系统 |
CN112017021A (zh) * | 2020-09-02 | 2020-12-01 | 四川长虹电器股份有限公司 | 一种自动查验发票真伪的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104820717A (zh) * | 2015-05-22 | 2015-08-05 | 国网智能电网研究院 | 一种海量小文件存储及管理方法和系统 |
CN106570113A (zh) * | 2016-10-25 | 2017-04-19 | 中国电力科学研究院 | 一种海量矢量切片数据云存储方法及系统 |
CN106776967A (zh) * | 2016-12-05 | 2017-05-31 | 哈尔滨工业大学(威海) | 基于时序聚合算法的海量小文件实时存储方法及装置 |
CN107506408A (zh) * | 2017-08-08 | 2017-12-22 | 北京盛华安信息技术有限公司 | 对海量事件分布式关联匹配的方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120158650A1 (en) * | 2010-12-16 | 2012-06-21 | Sybase, Inc. | Distributed data cache database architecture |
CN103793425B (zh) * | 2012-10-31 | 2017-07-14 | 国际商业机器公司 | 用于分布式系统的数据处理方法及装置 |
US9081826B2 (en) * | 2013-01-07 | 2015-07-14 | Facebook, Inc. | System and method for distributed database query engines |
-
2018
- 2018-12-05 CN CN201811480227.5A patent/CN109767274B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104820717A (zh) * | 2015-05-22 | 2015-08-05 | 国网智能电网研究院 | 一种海量小文件存储及管理方法和系统 |
CN106570113A (zh) * | 2016-10-25 | 2017-04-19 | 中国电力科学研究院 | 一种海量矢量切片数据云存储方法及系统 |
CN106776967A (zh) * | 2016-12-05 | 2017-05-31 | 哈尔滨工业大学(威海) | 基于时序聚合算法的海量小文件实时存储方法及装置 |
CN107506408A (zh) * | 2017-08-08 | 2017-12-22 | 北京盛华安信息技术有限公司 | 对海量事件分布式关联匹配的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109767274A (zh) | 2019-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642840B1 (en) | Filtered hash table generation for performing hash joins | |
US11263211B2 (en) | Data partitioning and ordering | |
CN109767274B (zh) | 一种对海量发票数据进行关联存储的方法及系统 | |
US10121169B2 (en) | Table level distributed database system for big data storage and query | |
US8543596B1 (en) | Assigning blocks of a file of a distributed file system to processing units of a parallel database management system | |
CN101576918B (zh) | 具备负载均衡功能的数据缓存系统 | |
US8555018B1 (en) | Techniques for storing data | |
US9811577B2 (en) | Asynchronous data replication using an external buffer table | |
TWI735545B (zh) | 一種模型的訓練方法和裝置 | |
US8856068B2 (en) | Replicating modifications of a directory | |
CN109240946A (zh) | 数据的多级缓存方法及终端设备 | |
US8495166B2 (en) | Optimized caching for large data requests | |
US20220114064A1 (en) | Online restore for database engines | |
US10191663B1 (en) | Using data store accelerator intermediary nodes and write control settings to identify write propagation nodes | |
US20130159281A1 (en) | Efficient querying using on-demand indexing of monitoring tables | |
CN109344157A (zh) | 读写分离方法、装置、计算机设备及存储介质 | |
CN104572860A (zh) | 一种数据处理方法和系统 | |
US10719554B1 (en) | Selective maintenance of a spatial index | |
CN109144406A (zh) | 分布式存储系统中元数据存储方法、系统及存储介质 | |
US10642530B2 (en) | Global occupancy aggregator for global garbage collection scheduling | |
US20220188340A1 (en) | Tracking granularity levels for accessing a spatial index | |
US11455305B1 (en) | Selecting alternate portions of a query plan for processing partial results generated separate from a query engine | |
CN112334891A (zh) | 用于搜索服务器的集中式存储 | |
US10146833B1 (en) | Write-back techniques at datastore accelerators | |
CN106708911A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |