发票真伪查询方法和系统的制作方法_2

文档序号:8282405阅读:来源:国知局
限控制等功能;业务逻辑层具有数据监控模型、报表模型、规则模型等功能;资源访问层中设有数据访问层,具有数据访问、消息访问、设备访问等功能;资源层具有数据库、网络、操作系统和硬件设备等资源。通过位于交互层中的发票真伪查询页面接收用户输入的发票代码、发票号码和发票校验码等信息生成发票真伪查询请求。应用层对该查询请求进行请求提交权限和请求提交参数的检查并进行相应的会话事务控制。业务逻辑层判断该请求信息的类型,确定为发票真伪查询请求。
[0061]步骤204,将查询请求转换为NoSQL数据库查询语言,并在预先建立的NoSQL数据库中进行查询。
[0062]采用NoSQL数据库,能够将海量数据存储在一个结构松散、分布式的文件存储系统中,并且支持大规模数据的频繁读写操作。因此能够有效克服传统的税务系统架构中关系型数据库在大规模数据并发查询时性能下降、查询时间大幅增加的问题。优选的,NoSQL数据库为HBase ( 一个分布式的、面向列的开源数据库)。由于本实施例采用传统的税务系统架构,在查询页面生成的查询请求为SQL格式,由于在资源层采用NoSQL数据库,需要将SQL格式的查询请求转换为NoSQL数据库查询语言,并利用转换之后的查询语言在NoSQL数据库中进行查询。
[0063]步骤206,返回查询结果并解析为与查询请求对应的信息。
[0064]如果NoSQL数据库中存在与查询请求对应的记录,则返回相应的记录作为查询结果,否则,返回空作为查询结果。将查询结果返回至交互层,交互层对查询结果进行解析,得到发票真伪判定信息。
[0065]步骤208,判断解析后的信息是否为空;若是,则进行步骤210,否则,则确定发票为真发票,并显示发票信息。
[0066]如果解析后的信息不为空,则确定该发票为真发票,并显示相应的发票信息。
[0067]步骤210,确定发票为伪发票。
[0068]如果解析后的信息为空,则确定该发票为伪发票。
[0069]本实施例中,接收发票真伪查询请求;将查询请求转换为NoSQL数据库查询语言,并在预先建立的NoSQL数据库中进行查询;返回查询结果并解析为与查询请求对应的信息;判断解析后的信息是否为空;若是,则确定发票为伪发票。通过将发票真伪查询请求转换为NoSQL数据库查询语言在预先建立的NoSQL数据库中进行查询,由此能够克服传统的关系型数据库在大规模数据并发查询时性能下降、查询时间大幅增加的问题,能够显著提升查询性能和查询速度。如果查询结果为空,则确定发票为伪发票。由此根据查询结果能够快速判定发票的真伪。
[0070]在一个实施例中,接收发票真伪查询请求的步骤之前,还包括:将关系型数据库中的发票信息数据导入预先建立的NoSQL数据库;将零散的发票信息数据导入至NoSQL数据库。
[0071]本实施例中,需要在NoSQL数据库中预先导入发票信息数据。其中包括将传统的关系型数据库中的发票信息数据导入NoSQL数据库,以及将零散的发票数据信息导入NoSQL数据库。在其中一个实施例中,将关系型数据库中的发票信息数据导入预先建立的NoSQL数据库的步骤包括:建立关系型数据库与NoSQL数据库之间的连接;通过连接,从关系型数据库中导出发票信息数据并进行保存;将已保存的发票信息数据进行清洗;将清洗后的发票信息数据导入NoSQL数据库。
[0072]如图4所示,NoSQL数据库中包括数据接口层、数据处理层和数据导入层。数据访问层通过数据接口层访问NoSQL数据库,优选的,NoSQL数据库采用HBase。数据处理层包括ZooKeeper ( —个分布式的、开放源码的分布式应用程序协调服务)、HDFS(HadoopDistributed File System,分布式文件系统)、MapReduce ( 一种编程模型,用于大规模数据集的并行运算)、监控代理和数据库HBase。数据导入层中内置了多种主流关系型数据库(如,MySQL, Oracle、DB2、MS Sql、PostgreSQL、SQLite)的驱动程序,并通过增加扩展方式实现与关系型数据库的连接。数据导入层将已连接的关系型数据库中的数据按照第一预设格式(如,CSV (Comma-Separated Values,逗号分隔值)格式)导出数据文件并进行保存,具体的,可以保存在HDFS中。HDFS将保存后的数据文件返回至数据导入层,由数据导入层对数据文件中的字节进行清洗处理。清洗是指发现并纠正数据中是否存在可识别的错误,包括检测数据一致性、处理无效值和缺失值等,从而将不符合查询要求的数据过滤掉。通过调用MapReduce将清洗后的数据导入发票信息查询数据库HBase。通过ZooK^per为HBase提供协同服务,同时为HBase提供稳定服务和容错机制。利用监控代理对HBase的运行状况进行实时监控,以便及时掌握HBase中的数据变化。导入成功后,删除之前导出的第一预设格式的数据文件,由此释放HDFS中的空间,使得HDFS得到有效利用。
[0073]对于零散发票信息数据,可采用直接数据插入的方式导入NoSQL数据库。NoSQL数据库的数据接口层具有应用界面,能够进行数据增加、删除、修改、查询及性能监控等。通过该应用界面用户可以手动录入发票代码、发票号码和发票验证码等信息。同时,该应用界面也可提供数据批量处理的功能。例如,以Excel (微软公司办公软件)、JSON(JavaScriptObject Notat1n, 一种轻量级的数据交换格式)、CSV、XML(Extensible Markup Language,可扩展标记语言)等方式进行批量上传、更新。
[0074]在一个实施例中,将查询请求转换为NoSQL数据库查询语言的步骤包括:通过第一接口将查询请求转换为NoSQL数据库查询语言;和/或通过第二接口增加预设组件,通过预设组件将查询请求转换为NoSQL数据库查询语言。
[0075]在一个实施例中,NoSQL数据库的数据接口层具有多种接口,通过第一接口将接收到的第二预设格式(如,JSON格式)的查询请求在多台服务器上的Java进程中均衡分发,通过多个Java进程解析为HBase查询语言。多个Java进程将查询结果封装为第二预设格式(如,JSON格式)再返回。虽然采用第一接口需要将数据访问层中查询数据库的SQL格式的查询请求都修改为POST JSON的方式,但是修改后可直接调用HBase查询,因此具有较高的查询性能,百亿条发票记录一般返回时间为30ms以内,查询速度得到显著提升。
[0076]通过第二接口对NoSQL数据库的数据处理层中加载预设驱动程序。第二接口可以是 JDBC (Java Data Base Connectivity,java 数据库连接,一种用于执行 SQL 语句的 Java接口)接口。具体的,在HBase逻辑层之上,增加预设组件,例如Phoenix,通过该预设组件将SQL格式进行解析,并将SQL格式的查询请求转换为HBase查询语言。在查询之后,将查询结果以SQL格式返回。由于第二接口采用传统的JDBC接口,由此能够更有效的利用传统的税务系统架构。进一步的,可以采用上述两种方式的结合,由此可以兼具上述两种方式的优势。
[0077]在一个实施例中,返回查询结果并解析为与查询请求对应的信息的步骤包括:将与查询请求对应的记录通过java进程进行封装;将封装后的属性信息填充到发票查询对象中,并返回填充后的发票查询对象;对填充后的发票查询对象进行解析,得到发票真伪判定信息。
[0078]本实施例中,在数据访问层中设置有发票查询对象,在接收到发票真伪查询请求后,调用发票查询对象并将发票查询对象的参数转换为第二预设格式(如,JSON格式)的消息发送至NoSQL数据库的数据接口层。在数据接口层中,第一接口将接收到采用第二预设格式的查询请求,随机调度到多个服务器上的其中一个Java进程上进行处理。在数据处理层,Java进程解析采用第二预设格式的消息,得到对应的参数信息,例如StarRow、StopRow和TableName等,并将获得的参数信息传递给HBase的对象接口。通过调用HBase的Get/Scan方法,利用HBASE的RowKey,索引到不同服务器的HReg1nServer上进行查询。如果查询到符合查询请求的记录则将查询结果返回至对应的Java进程,Java进行再将该查询结果按照第二预设格式进行封装,并返回至数据接
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1