一种数据统计的方法及装置与流程

文档序号:11519757阅读:208来源:国知局
一种数据统计的方法及装置与流程

本申请涉及数据处理技术领域,尤其涉及一种数据统计的方法及装置。



背景技术:

目前使用的数据库系统,其内部操作不透明,无法通过外部的安全工具来阻止内部用户的恶意操作、滥用资源和泄漏企业机密信息等行为。为了对使用数据库的用户进行监督,通常通过对数据库日志的统计和处理,判断用户的操作是否安全。

现有的数据库中,在使用过程中用户真实登录只有一次且一直在线保活,但是用户使用可视化工具执行操作语句时会重新链接、执行和退出。每次重新链接、执行和退出都会产生数据库日志,也就是当用户访问数据库时,任何一条对数据库的操作都会产生登录、操作和退出三条数据库日志。

在同一个用户对数据库进行操作的过程中,不断的重复生成用户的登录与退出的数据库日志,然而登录与退出的数据库日志与判断用户操作安全性无关,是冗余日志。冗余日志不是用户的真实操作,严重干扰对用户操作的管理和监督。



技术实现要素:

本申请提供了一种数据统计的方法及装置,以解决冗余日志干扰对用户操作的管理和监督的问题。

第一方面,本申请提供了一种数据统计的方法,该方法包括:获取数据流的报文格式;如果所述报文格式符合预置数据库协议格式,则根据所述预置数据库协议格式,解析所述数据流的命令字,以及所述数据流的发送方的登录用户名;如果所述命令字是登录命令,则判断预置用户名数据库中是否存在所述登录用户名;如果预置用户名数据库中不存在所述登录用户名,则根据预置算法,计算所述数据流的日志id;根据所述日志id,生成所述数据流的登录日志;如果所述命令字不是登录命令,则根据所述登录用户名对应的日志id,生成所述数据流的操作日志;保存所述日志信息,所述日志信息包括操作日志和登录日志。

第二方面,本申请还提供了一种数据统计的装置,所述装置包括:获取单元,用于获取数据流的报文格式;解析单元,用于如果所述报文格式符合预置数据库协议格式,则根据所述预置数据库协议格式,解析所述数据流的命令字,以及所述数据流的发送方的登录用户名;判断单元,用于如果所述命令字是登录命令,则判断预置用户名数据库中是否存在所述登录用户名;计算单元,用于如果预置用户名数据库中不存在所述登录用户名,则根据预置算法,计算所述数据流的日志id;第一生成单元,用于根据所述日志id,生成所述数据流的登录日志;第二生成单元,用于如果所述命令字不是登录命令,则根据所述登录用户名对应的日志id,生成所述数据流的操作日志;保存单元,用于保存所述日志信息,所述日志信息包括操作日志和登录日志。

第三方面,本申请还提供了一种计算机程序,包括:处理器及存储器;所述处理器可以执行所述存储器中所存储的程序或指令,从而实现以第一方面各种实现方式所述数据统计的方法。

第四方面,本申请还提供了一种存储介质,该计算机存储介质可存储有程序,该程序执行时可实现包括本申请提供的数据统计的方法各实施例中的部分或全部步骤。

由上述的技术方案可知,本申请提供的一种数据统计的方法及装置,通过获取数据流的报文格式,如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名;如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名;如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id;再根据日志id,生成数据流的操作日志;如果用户名数据库中存在登录用户名,则根据登录用户名对应的用户id,生成数据流的登录日志;如果命令字不是登录命令,则根据用户登录名对应的日志id,生成数据流的操作日志;保存日志信息,日志信息包括操作日志和登录日志。与现有技术相比,本申请能够通过命令字和登录用户名,判断是否保存该条数据流的日志信息,该日志信息中只保存操作信息和首次登录信息,减少同一个用户多次登录的登录信息,剔除冗余信息,减少冗余信息对用户操作的管理和监督的干扰。通过日志id保存日志信息,每条数据流都有唯一的日志id,以便后续对日志信息的查找、处理和展示。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的一种数据统计的方法流程图;

图2为本申请提供的另一种数据统计的方法流程图;

图3为本申请提供的一种数据统计的装置组成框图;

图4为本申请提供的另一种数据统计的装置组成框图。

具体实施方式

参见图1,为提供的一种数据统计的方法流程图,该方法包括如下步骤:

步骤101,获取数据流的报文格式。

数据流,是传输中所使用的信息的数字编码信号序列。在用户使用数据库的过程中,用户向服务器发送数据流,然后服务器根据数据流中的数据信息给用户反馈对应的数据库信息。由于传输数据流的过程中,通常将数据信息用特定的报文格式封装,然后通过报文格式中的端口解析数据流。获取数据流,根据数据流的特征,识别数据流的报文格式,报文格式包传输括数据流的端口、关键字和指令等特征标识。

步骤102,如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名。

预置数据库协议格式,包括传输数据的固定端口、协议关键字和数据库指令等特征标识。判断报文格式是否符合预置数据库协议格式,也就是判断报文格式与预置数据库协议格式是否相同。在判断过程中,可以只比较特征标识中的一种,几种或者全部的特征标识。例如只比较报文格式中的端口与预置数据库协议中的固定端口是否相同,也可以只比较报文格式中的关键字与预置数据库协议格式中的协议关键字是否相同,也可以比较报文格式中的指令与预置数据库协议格式中的数据库指令是否相同,还可以同时报文格式中全部特征标识和预置数据库协议格式中的特征标识是否相同,在本发明实施例中对报文格式是否符合预置数据库协议格式的判断方法不做限定。

如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名。数据流是数据库的某一个用户发送的,通常发送方还需要接收服务器的反馈信息,所以在数据流中包括操作指令和发送方的信息,其中发送方的信息包括登录用户名、发送方的ip(internetprotocol,网络互联协议)地址等发送方信息。解析数据流,获取数据流携带的命令字,命令字是用户对数据库的操作指令。

步骤103,如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名。

用户的客户端与数据库的服务器不是一直保持连接状态,而是在用户使用数据库时,用户的客户端向数据库的服务器发送的所有命令,都需要先执行登录数据库的登录命令。所以为了避免由于重复的登录命令造成的数据冗余,先判断预置用户名数据库中是否存在登录用户名,然后根据判断结果决定是否生成该数据流的日志。预置用户名数据库中保存已经登录的登录用户名。

步骤104,如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id。

日志id(identification,身份标识符),该条数据流的唯一的标识。同一个登录用户名在同一次保活状态中只有一个日志id。只有在预置用户名数据库中不存在登录用户名时,才需要计算该登录用户名的本次保活状态的日志id。日志id是根据预置算法计算的,通常的表现形式为字符串,例如64位的整型的数字串。

步骤105,根据日志id,生成数据流的登录日志。

以日志id作为该条数据流产生日志的唯一标识,生成该条数据流的登录日志。每次处于保活状态的登录用户名的日志中,只有一条登录日志,以避免重复生成冗余的登录日志信息。

数据流的登录日志,包括但不限于登录用户名、数据流的发送时间、数据流的发送ip地址、数据流的格式、数据流占用空间的大小等信息。

步骤106,如果命令字不是登录命令,则根据登录用户名对应的日志id,生成数据流的操作日志。

本步骤与步骤103,是判断命令字是否为登录命令的两种不同的判断结果。如果命令字不是登录命令,那么命令字就是用户对数据库的操作指令,操作指令是用户对数据库操作的关键信息,是监督和管理用户操作的必要信息。操作指令,包括:查找、添加、运算和导出等具体的操作指令。由于操作指令的多样性,所以不判断命令字具体表征哪种操作指令,而是判断命令字是否为登录命令,一方面只需要一次判断而不是需要多次判断能够节省判断时间,提高判断效率,另一方面能够避免由于数据库添加操作指令而造成对判断语句的修改。根据日志id,生成数据流的操作日志,操作日志能够通过日志id标识,而且通过唯一的日志id标识。

步骤107,保存日志信息。

日志信息包括操作日志和登录日志。根据生成日志信息的限定条件,该条数据流可能生成操作日志,可能生成登录日志,也有可能不生成日志信息。保存的日志信息,通常将同一天生成的日志信息作为一个存储单元,以时间作为不同存储单元的拆分依据。例如以时间00:00,作为拆分时间。

由上述的技术方案可知,本申请提供的一种数据统计的方法,通过获取数据流的报文格式,如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名;如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名;如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id;再根据日志id,生成数据流的操作日志;如果用户名数据库中存在登录用户名,则根据登录用户名对应的用户id,生成数据流的登录日志;如果命令字不是登录命令,则根据用户登录名对应的日志id,生成数据流的操作日志;保存日志信息,日志信息包括操作日志和登录日志。与现有技术相比,本申请能够通过命令字和登录用户名,判断是否保存该条数据流的日志信息,该日志信息中只保存操作信息和首次登录信息,减少同一个用户多次登录的登录信息,剔除冗余信息,减少冗余信息对用户操作的管理和监督的干扰。通过日志id保存日志信息,每条数据流都有唯一的日志id,以便后续对日志信息的查找、处理和展示。

参见图2,为本申请提供的另一种数据统计的方法流程图,该方法包括如下步骤:

步骤201,获取数据流的报文格式。

报文格式,是数据流的封装方式,是为了保证数据完整性的一种传输数据的处理方式。用户在发送数据之前,在用户所在的发送方根据传输方式和传输目标的不同,将数据按照一定的报文格式封装到同一个数据流中。获取数据流,然后根据数据流的特征,识别并获取数据流的报文格式。

步骤202,如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名。

将步骤201获取的报文格式与预置数据库协议格式做比较,判断数据流的报文格式与预置数据库协议格式是否一致。如果两者一致,则根据预置数据库协议格式解析数据流。由于获取的报文格式,可能是封装数据流格式的一部分,所以根据预置数据库协议格式解析数据流而不是根据报文格式解析。解析数据流的命令字以及数据流的发送方的登录用户名。

步骤203,如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名。

本步骤与图1所示的步骤103所述的方法相同,这里不再赘述。

步骤204,如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id。

日志id(identification,身份标识符),该条数据流的唯一的标识。根据预置算法,计算数据流的日志id。预置算法将数据流的获取时间、登录用户名和发送ip地址等内容信息转换为日志id。

步骤205,根据日志id,生成数据流的登录日志。

生成数据流的登录日志,具体方法包括:获取数据流的登录用户名和日志id;获取数据流的指令参数,指令参数包括操作语句和数据流的发送时间;将登录用户名、日志id和指令参数,确定为数据流的登录日志。

如果用户名数据库中不存在登录用户名,则根据日志id,生成数据流的登录日志。如果登录用户名存在,说明该条数据流已经具有唯一的id,不需要将登录信息再次生成登录日志。在使用数据库时,每次对数据库进行操作都会产生登录信息,所以这样的登录日志是伴随着用户对数据库操作产生的,对监督和管理用户的操作行为没有意义。对监督和管理用户的操作行为不能提供有价值的信息,是冗余的,所以对用户名数据流中存在登录用户名的情况产生的日志不做记录。

步骤206,将登录用户名添加到预置用户名数据库中。

如果预置用户名数据库中不存在登录用户名,那么将登录用户名添加到预置用户名数据库中。预置用户名数据库中的用户名是随着登录用户名的登录和退出动态变化的。如果命令字是登录命令,并且登录用户名未保存在预置用户名数据库中,则将登录用户名添加到预置用户名数据库中。如果命令字是退出命令,则将登录用户名从预置用户名数据库中删除。预置用户名数据库,是指一个用户登录名的集合,其存储形式也可以是链表结构。

步骤207,如果命令字不是登录命令,则根据登录用户名对应的日志id,生成数据流的操作日志。

本步骤与图2所示的步骤203所述的生成操作日志的方法类似。具体包括:查找登录用户名对应的日志id;获取数据流的指令参数,指令参数包括操作语句和数据流的发送时间;将登录用户名、登录用户名对应的日志id和指令参数,确定为数据流的操作日志。

在已有的数据库日志中,从距离获取数据流的时间最近的日志开始查找登录用户名所产生的日志,并将该日志中的日志id确定为登录用户名对应的日志id。记录该条数据流的发送时间,以便后续可以根据发送时间,查询某一时刻或者某一时间段的日志信息。操作语句是对数据库进行操作的相关信息,包括数据流发送方的ip地址或者登录用户名,以及对数据库的操作命令。获取数据流的指令参数,也就是获取数据流中携带的所有信息。将登录用户名、登录用户名对应的日志id和指令参数,确定为数据流的操作日志。也就是操作日志包括登录用户名、登录用户名对应的日志id和指令参数。操作日志,按照生成的时间排列。

步骤208,保存日志信息,日志信息包括操作日志和登录日志。

由于数据流携带的信息不同,生成的日志类型也不相同,所以保存日志信息时:根据日志信息的日志类型,分类保存日志信息。分类保存日志信息,按照日志类型存储到不同的数据库中。在保存日志信息之后,通过显示屏展示日志信息,显示查询用户操作数据库日志的查询结果。在查询界面,设置日志明细选项,点击日志明细选项时,展示当前用户查询操作对应的详细日志。

通常日志信息以单位时间间隔分别保存在多个数据库中。为了更有效的查询各个登录用户名对数据库的操作情况,将对各数据库中同一个登录用户名对应的不同日志信息进行聚合。在查询时,只展示一条日志信息,再通过日志明细展示所有的日志信息。

由上述的技术方案可知,本申请提供的一种数据统计的方法,通过获取数据流的报文格式,如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名;如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名;如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id;再根据日志id,生成数据流的操作日志;如果用户名数据库中存在登录用户名,则根据登录用户名对应的用户id,生成数据流的登录日志;如果命令字不是登录命令,则根据用户登录名对应的日志id,生成数据流的操作日志;保存日志信息,日志信息包括操作日志和登录日志。与现有技术相比,本申请能够通过命令字和登录用户名,判断是否保存该条数据流的日志信息,该日志信息中只保存操作信息和首次登录信息,减少同一个用户多次登录的登录信息,剔除冗余信息,减少冗余信息对用户操作的管理和监督的干扰。通过日志id保存日志信息,每条数据流都有唯一的日志id,以便后续对日志信息的查找、处理和展示。

参见图3,为本申请提供的一种数据统计的装置组成框图,用于执行图1所对应的数据统计方法。

如图3所示,该装置包括:获取单元31,解析单元32,判断单元33、计算单元34、第一生成单元35、第二生成单元36和保存单元37。其中,

获取单元31,用于获取数据流的报文格式;

解析单元32,用于如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名;

判断单元33,用于如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名;

计算单元34,用于如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id;

第一生成单元35,用于根据日志id,生成数据流的登录日志;

第二生成单元36,用于如果命令字不是登录命令,则根据登录用户名对应的日志id,生成数据流的操作日志;

保存单元37,用于保存日志信息,日志信息包括操作日志和登录日志。

由上述的技术方案可知,本申请提供的一种数据统计的装置,通过获取数据流的报文格式,如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名;如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名;如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id;再根据日志id,生成数据流的操作日志;如果用户名数据库中存在登录用户名,则根据登录用户名对应的用户id,生成数据流的登录日志;如果命令字不是登录命令,则根据用户登录名对应的日志id,生成数据流的操作日志;保存日志信息,日志信息包括操作日志和登录日志。与现有技术相比,本申请能够通过命令字和登录用户名,判断是否保存该条数据流的日志信息,该日志信息中只保存操作信息和首次登录信息,减少同一个用户多次登录的登录信息,剔除冗余信息,减少冗余信息对用户操作的管理和监督的干扰。通过日志id保存日志信息,每条数据流都有唯一的日志id,以便后续对日志信息的查找、处理和展示。

作为图2所示方法的具体实现,本申请还提供了另一种数据统计的装置。参见图4,该装置包括获取单元41,解析单元42,判断单元43、计算单元44、第一生成单元45、第二生成单元46和保存单元47。其中,

获取单元41,用于获取数据流的报文格式;

解析单元42,用于如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名;

判断单元43,用于如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名;

计算单元44,用于如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id;

第一生成单元45,用于根据日志id,生成数据流的登录日志;

第二生成单元46,用于如果命令字不是登录命令,则根据登录用户名对应的日志id,生成数据流的操作日志;

保存单元47,用于保存日志信息,日志信息包括操作日志和登录日志。

进一步地,第一生成单元45,包括:

第一获取模块451,用于获取数据流的登录用户名和日志id;

第一获取模块451,还用于获取数据流的指令参数,指令参数包括操作语句和数据流的发送时间;

第一确定模块452,用于将登录用户名、日志id和指令参数,确定为数据流的登录日志。

进一步地,该装置还包括:

添加单元48,用于根据日志id,生成数据流的登录日志之后,将登录用户名添加到预置用户名数据库中。

进一步地,第二生成单元46,包括:

查找模块461,用于查找登录用户名对应的日志id,当前登录用户名数据库中的当前登录用户名是指处于保活状态的登录用户;

第二获取模块462,用于获取数据流的指令参数,指令参数包括操作语句和数据流的发送时间;

第二确定模块463,用于将登录用户名、登录用户名对应的日志id和指令参数,确定为数据流的操作日志。

进一步地,保存单元47,用于:

根据日志信息的日志类型,分类保存日志信息。

由上述的技术方案可知,本申请提供的一种数据统计的装置,通过获取数据流的报文格式,如果报文格式符合预置数据库协议格式,则根据预置数据库协议格式,解析数据流的命令字,以及数据流的发送方的登录用户名;如果命令字是登录命令,则判断预置用户名数据库中是否存在登录用户名;如果预置用户名数据库中不存在登录用户名,则根据预置算法,计算数据流的日志id;再根据日志id,生成数据流的操作日志;如果用户名数据库中存在登录用户名,则根据登录用户名对应的用户id,生成数据流的登录日志;如果命令字不是登录命令,则根据用户登录名对应的日志id,生成数据流的操作日志;保存日志信息,日志信息包括操作日志和登录日志。与现有技术相比,本申请能够通过命令字和登录用户名,判断是否保存该条数据流的日志信息,该日志信息中只保存操作信息和首次登录信息,减少同一个用户多次登录的登录信息,剔除冗余信息,减少冗余信息对用户操作的管理和监督的干扰。通过日志id保存日志信息,每条数据流都有唯一的日志id,以便后续对日志信息的查找、处理和展示。

具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的呼叫方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

以上所述的本发明实施方式并不构成对本发明保护范围的限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1