日志存储检索方法、电子装置及计算机设备与流程

文档序号:18940147发布日期:2019-10-23 01:05阅读:222来源:国知局
日志存储检索方法、电子装置及计算机设备与流程
本发明涉及过程优化的
技术领域
,尤其涉及一种日志存储检索方法、电子装置、计算机设备及存储介质。
背景技术
:目前业内通过关系型数据库如oracle存储检索日志,面临着存储容量有限问题,当数据量剧增时检索效率较低;通过非关系型数据库如mongodb存储检索日志,日志量剧增时,存储空间相应的增长,耗费昂贵的费用。由于风险控控系统每天的日志量很大,传统的关系型数据库难以满足海量日志的存储需求,所以需要将日志存储到非关系型数据库。当数据量很大时,检索效率明显降低。技术实现要素:有鉴于此,本发明提出一种日志存储检索方法,通过整合elasticsearch数据库与hbase数据库,实现海量日志的存储和快速检索。为实现上述目的,本发明提出一种日志存储检索方法,应用于电子装置中,该方法包括步骤:将风险控制系统的多条日志数据存储到第一数据库,其中,一条日志数据对应一个行键的键值;根据所述多条日志数据建立多个键值和组成所述多个键值的各个字段的映射关系,并将所述映射关系存储到第二数据库;当检索目标日志数据时,根据所述目标日志数据对应的字段从第二数据库查找对应所述目标日志数据的键值;及根据所述目标日志数据的键值,从所述第一数据库查找对应所述目标日志数据的的日志数据。进一步地,所述多个键值的各个字段包括申请号和日期,根据所述申请号和所述日期两个字段查所述日志数据时,先根据所述申请号和所述日期去所述第二数据库找到所述键值;及通过所述第二数据库的二级索引组合多个查询字段。进一步地,所述键值由多个字段拼成,格式为:递增序号_申请号_调用id_策略集编码_查询类型_日期_序列号。进一步地,所述日志数据至少包括申请号、入参、出参、处理器id、请求开始时间和请求结束时间。进一步地,所述第一数据库为hbase数据库,所述第二数据库为elasticsearch数据库。为实现上述目的,本发明还提出一种电子装置,包括存储模块、建立模块与查找模块。所述存储模块用于将风险控制系统的多条日志数据存储到第一数据库,其中,一条日志数据对应一个行键的键值。所述建立模块用于根据所述多条日志数据建立多个键值和组成所述多个键值的各个字段的映射关系,并将所述映射关系储到第二数据库。所述查找模块用于当检索目标日志数据时,根据所述目标日志数据对应的字段从第二数据库找出对应所述目标日志数据的键值,及根据所述目标日志数据的键值,从所述第一数据库找出对应所述目标日志数据的日志数据。进一步地,所述多个键值的各个字段包括申请号和日期,所述查找模块根据所述申请号和所述日期两个字段查所述日志数据时,先根据所述申请号和所述日期去所述第二数据库找到所述键值,及通过所述第二数据库的二级索引组合多个查询字段。进一步地,所述键值由多个字段拼成,格式为:递增序号_申请号_调用id_策略集编码_查询类型_日期_序列号。为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述日志存储检索方法的步骤。为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述日志存储检索方法的步骤。相较于现有技术,本发明之日志存储检索方法应用在风险控制系统中,通过整合elasticsearch数据库与hbase数据库,实现海量日志的存储和快速检索。附图说明图1系显示本发明实施例之电子装置的硬件架构示意图;图2系显示本发明实施例之电子装置的功能方块图;图3系显示本发明实施例之日志存储检索方法的步骤流程图;及图4系显示本发明实施例之步骤303的具体实施流程图。附图标记:电子装置10存储器110处理器120日志存储检索系统130存储模块210建立模块220查找模块230本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。图1系显示本发明实施例之电子装置的硬件架构示意图。电子装置10,但不仅限于,可通过系统总线相互通信连接存储器110、处理器120以及日志存储检索系统130,图1仅示出了具有组件110-130的电子装置10,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。所述存储器110至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器110可以是所述电子装置10的内部存储单元,例如该电子装置10的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子装置10的外部存储设备,例如该电子装置10上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器110还可以既包括所述电子装置100的内部存储单元也包括其外部存储设备。本实施例中,所述存储器110通常用于存储安装于所述电子装置10的操作系统和各类应用软件,例如日志存储检索系统130的程序代码等。此外,所述存储器110还可以用于暂时地存储已经输出或者将要输出的各类数据。所述处理器120在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器120通常用于控制所述电子装置10的总体操作。本实施例中,所述处理器120用于运行所述存储器110中存储的程序代码或者处理数据,例如,运行所述日志存储检索系统130等。图2系显示本发明实施例之电子装置的功能方块图。本发明实施例之电子装置10包括存储模块210、建立模块220与查找模块230。存储模块210将风险控制系统的日志数据存储到hbase数据库(又称第一数据库),其中,一行日志数据对应一个行键(rowkey)的键值,行键(rowkey)表示为键值(keyvalue)的key,表示唯一一行。所述日志数据包括申请号,入参,出参,处理器id,请求开始时间,结束时间。本发明的风险控制系统是通过采集征信报告,设备指纹等数据,对客户进行风险评级。产生的日志记录了数据采集和风控决策的过程,主要由申请号,入参,出参,处理器id,请求开始时间,结束时间组成,是json格式。本发明方法不止适用于风险系统,还适用于其它日志量大的场景。hbase全称为hadoopdatabase,即hbase是hadoop的数据库,是一个分布式面向列的数据库的存储系统。hadoop是一个由apache基金会所开发的分布式系统基础架构。hbase利用hadoop的hdfs作为其文件存储系统,利用hadoop的mapreduce来处理hbase中的海量数据。利用zookeeper作为其协调工具。hbase和一般关系型数据库的最大区别是:hbase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式。hbase是采用键值(keyvalue)的列存储,rowkey就是keyvalue的key,表示唯一一行。rowkey也是一段二进制码流,最大长度为64kb,内容可以由使用的用户自定义。数据加载时,一般也是根据rowkey的二进制序由小到大进行的hbase是根据rowkey来进行检索的,系统通过找到某个rowkey(或者某个rowkey范围)所在的区域(region),然后将查询数据的请求路由到该region获取数据。rowkey是hbase的主键,可以唯一标识一行记录。rowkey由递增序号和申请号拼接而成。递增序号是指是指序号的大小是递增的,如1,2,3,4,就是递增序号。主键是唯一的,行键rowkey就是列名,键值就是行键具体的值。在hbase数据库中查询日志相关的字段有递增序号、申请号、调用id、策略集编码、查询类型、日期和序列号。rowkey由这几个字段拼成,格式如:递增序号_申请号_调用id_策略集编码_查询类型_日期_序列号。rowkey的值如下所示:1000000_123456_id1_policy1_apply_20181009_1234568901、1000001_123456_id2_policy2_pboc_20181009_1234567890、...。建立模块220根据存储在hbase数据库中的日志数据建立rowkey和组成rowkey的各个字段的映射关系,并将rowkey与rowkey的申请号存储到elasticsearch数据库(又称第二数据库)。elasticsearch数据库是分布式的实时分析搜索引擎,适合处理大规模pb级数据。elasticsearch可以搜索每个字段,性能强大。pb是衡量数据大小的单位,1pb=1024tb,1tb=1024gb,1gb=1024mb,1mb=1024kb,1kb=1024bytes。当要检索某条日志数据时,查找模块230先根据某个或某些字段(例如,申请号,或是申请号+日期)去elasticsearch数据库查出对应该条日志数据的rowkey。查找模块230根据申请号和日期两个字段查日志时,先根据申请号和日期去elasticsearch数据库找到精确的rowkey。接着,查找模块230通过elasticsearch数据库的二级索引自由组合若干查询字段,满足丰富的查询场景,同时可以保证快速的查询效率。所谓的二级索引,就是对除了rowkey之外的其他列进行索引。因为hbase本身只支持rowkey的索引,如果要以其他列的数据为约束进行查询,就需要建立二级索引。二级索引即在要查询的字段与一级索引建立一种映射关系。根据映射关系的存入位置,有如下两种方案。业务表sample如下:表索引使用单独的hbase表存储映射关系,查询条件组成一个rowkey,value即为对应的一级索引。对于表sample,现在需通过cid-did查询表中的数据,可建立索引表index,该表rowkey为cid-did,value为表sample中对应的aid-bid-datetime。列索引列索引即将索引列建在业务表上。为避免带来副作用,需要在逻辑上和物理上将索引数据与业务数据区分开。为提高性能,最好将索引数据与业务数据放在同一个region中,此后查找一级rowkey直接在region进行,而不再需要全表扫描。通过合理的设计rowkey前缀,可将索引数据全排在业务数据前面,这样做到了数据的逻辑区分。由于region由一个或多个存储(store)文件组成,每个store只存储一个列族,因此索引列单独使用一个列族,可在物理上隔离索引数据与业务数据。在本实施例中,以sample表为例说明rowkey的设计。首先,建表时指定分区[0000,0099],[0100,0199]...[9900,9999],这样有100个分区,对于业务数据的rowkey,格式为四位hash前缀-aid-bid。各rowkey的hash前缀值为其所在region起始值外的其他任意值,如对于region1,其hash前缀为[0001,0099],其余依此类推。对于索引数据,rowkey格式曾四位hash前缀-查询条件代码-查询条件值-aid-bid,四位hash值为各region的起始值,如0000。若分别查询cid=01,did=02,其rowkey可以为0000-cid|bid-01|02-aa-02,查看aid=aa,cid=03,did=05,则rowkey为0000-aid|cid|did-aa|03|05-aa-03。查找模块230根据elasticsearch数据库中查找到的rowkey,再去hbase查出对应所述rowkey的日志数据。图3系显示本发明实施例之日志存储检索方法的步骤流程图。步骤301,将风险控制系统的日志数据存储到hbase数据库(又称第一数据库),其中,一行日志数据对应一个行键(rowkey)的键值,行键(rowkey)表示为keyvalue的key,表示唯一一行。所述日志数据包括申请号,入参,出参,处理器id,请求开始时间,结束时间。hbase全称为hadoopdatabase,即hbase是hadoop的数据库,是一个分布式面向列的数据库的存储系统。hadoop是一个由apache基金会所开发的分布式系统基础架构。hbase利用hadoop的hdfs作为其文件存储系统,利用hadoop的mapreduce来处理hbase中的海量数据。利用zookeeper作为其协调工具。hbase和一般关系型数据库的最大区别是:hbase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式。hbase是采用键值(keyvalue)的列存储,rowkey就是keyvalue的key,表示唯一一行。rowkey也是一段二进制码流,最大长度为64kb,内容可以由使用的用户自定义。数据加载时,一般也是根据rowkey的二进制序由小到大进行的hbase是根据rowkey来进行检索的,系统通过找到某个rowkey(或者某个rowkey范围)所在的区域(region),然后将查询数据的请求路由到该region获取数据。rowkey是hbase的主键,可以唯一标识一行记录。rowkey由递增序号和申请号拼接而成。递增序号是指是指序号的大小是递增的,如1,2,3,4,就是递增序号。在hbase数据库中查询日志相关的字段有递增序号、申请号、调用id、策略集编码、查询类型、日期和序列号。rowkey由这几个字段拼成,格式如:递增序号_申请号_调用id_策略集编码_查询类型_日期_序列号。rowkey的值如下所示:1000000_123456_id1_policy1_apply_20181009_1234568901、1000001_123456_id2_policy2_pboc_20181009_1234567890、...。步骤302,根据存储在hbase数据库中的日志数据建立rowkey和组成rowkey的各个字段的映射关系,并将rowkey与rowkey的申请号存储到elasticsearch数据库(又称第二数据库)。elasticsearch数据库是分布式的实时分析搜索引擎,适合处理大规模pb级数据。elasticsearch可以搜索每个字段,性能强大。pb是衡量数据大小的单位,1pb=1024tb,1tb=1024gb,1gb=1024mb,1mb=1024kb,1kb=1024bytes。步骤303,当要检索某条日志数据时,先根据某个或某些字段(例如,申请号,或是申请号+日期)去elasticsearch数据库查出对应该条日志数据的rowkey。图4系显示本发明实施例之步骤303的具体实施流程图。步骤401,根据申请号和日期两个字段查日志时,先根据申请号和日期去elasticsearch数据库找到精确的rowkey。步骤402,通过elasticsearch数据库的二级索引自由组合若干查询字段,满足丰富的查询场景,同时可以保证快速的查询效率。所谓的二级索引,就是对除了rowkey之外的其他列进行索引。因为hbase本身只支持rowkey的索引,如果要以其他列的数据为约束进行查询,就需要建立二级索引。二级索引即在要查询的字段与一级索引建立一种映射关系。根据映射关系的存入位置,有如下两种方案。业务表sample如下:rowkeycf(infor)aid-bid-datatimeinfo:aid表索引使用单独的hbase表存储映射关系,查询条件组成一个rowkey,value即为对应的一级索引。对于表sample,现在需通过cid-did查询表中的数据,可建立索引表index,该表rowkey为cid-did,value为表sample中对应的aid-bid-datetime。列索引列索引即将索引列建在业务表上。为避免带来副作用,需要在逻辑上和物理上将索引数据与业务数据区分开。为提高性能,最好将索引数据与业务数据放在同一个region中,此后查找一级rowkey直接在region进行,而不再需要全表扫描。通过合理的设计rowkey前缀,可将索引数据全排在业务数据前面,这样做到了数据的逻辑区分。由于region由一个或多个存储(store)文件组成,每个store只存储一个列族,因此索引列单独使用一个列族,可在物理上隔离索引数据与业务数据。在本实施例中,以sample表为例说明rowkey的设计。首先,建表时指定分区[0000,0099],[0100,0199]...[9900,9999],这样有100个分区,对于业务数据的rowkey,格式为四位hash前缀-aid-bid。各rowkey的hash前缀值为其所在region起始值外的其他任意值,如对于region1,其hash前缀为[0001,0099],其余依此类推。对于索引数据,rowkey格式曾四位hash前缀-查询条件代码-查询条件值-aid-bid,四位hash值为各region的起始值,如0000。若分别查询cid=01,did=02,其rowkey可以为0000-cid|bid-01|02-aa-02,查看aid=aa,cid=03,did=05,则rowkey为0000-aid|cid|did-aa|03|05-aa-03。步骤304:根据elasticsearch数据库中查找到的rowkey,再去hbase查出对应所述rowkey的日志数据。本发明可之大规模高性能日志存储检索系统应用在风险控制系统中,通过整合elasticsearch与hbase,实现海量日志的存储和快速检索。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
,均同理包括在本发明的专利保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1