面向互联网的用户交互痕迹捕获、存储和检索系统及方法转让专利

申请号 : CN201811074579.0

文献号 : CN109284435B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏乾臣吕江花李岳檑孟祥曦马世龙

申请人 : 北京航空航天大学

摘要 :

本发明是一种面向互联网的用户交互痕迹捕获、存储和检索的系统及方法,属于互联网数据处理领域。本发明系统包括业务逻辑层、云存储管理层和数据存储层,云存储管理层由存储接口管理子系统、集群管理子系统和存储管理子系统构成。本发明方法包括:对用户行为数据通过界面窗口树建模来采集记录,每个用户访问的轨迹为界面窗口树的一个实例;通过为每个存储服务器节点建立存储目录树,根据用户行为数据类型,实现统一分布式存储;对非结构化数据以单个文件节点存储;通过用户信息和时间戳检索分布式存储系统获得用户数据。本发明解决了用户关键数据的采集,且更加精确,解决了复杂的数据类型差异化存储的问题,数据及访问界面的存储及检索更加高效。

权利要求 :

1.一种面向互联网的用户交互痕迹捕获、存储和检索的系统,包括业务逻辑层、云存储管理层和数据存储层;其中,应用服务器位于业务逻辑层,存储服务器位于数据存储层;云存储管理层由存储接口管理子系统、集群管理子系统和存储管理子系统构成;存储接口管理子系统管理不同业务的存储接口管理模块,集群管理子系统管理所有的存储服务器,存储管理子系统管理各存储服务器的存储管理模块,存储管理模块用于管理存储服务器上文件的元数据、扩容状态信息以及存储目录;

负载均衡服务器分流用户访问请求给应用服务器;其特征在于,

位于应用服务器上的应用程序通过存储接口管理模块记录用户本次交互痕迹,检索用户所需要的数据;存储接口管理模块根据数据类型包括结构化文件存储接口和非结构化文件存储接口,应用程序根据用户数据类型调用对应的存储接口,将用户在Web界面的操作轨迹建模为界面窗口树并存储到存储服务器上,将用户在操作过程中的用户数据利用存储目录树存储到存储服务器上;

界面窗口树是将界面作为节点,对系统前端界面的窗口跳转关系建模得到,一个用户访问的轨迹形成一个界面窗口树的实例;用户的界面窗口树用树结构存储方式存储在存储服务器上;所述的界面窗口树包含控件、API、菜单、基本界面和界面,界面节点包含基本界面序列,界面之间的跳转关系由界面节点之间的二元关系来描述;API表示应用程序编程接口;用户每一次操作都将触发API,并产生交互数据;界面节点定义为四元组(id,name,BaseInterface序列,(Parent,Childs)),其中:id表示界面节点的编号,name表示界面的名称,BaseInterface序列表示界面节点包含的所有基本界面,(Parent,Childs)表示界面节点的直接父节点和直接子节点;

每个存储服务器对应一个存储目录树,存储目录树包括目录节点、服务器节点和叶子节点;服务器节点为存储目录树的根节点;叶子节点分为两种,一种是存储结构化数据的数据库文件,一种是非结构化文件,非结构化文件是以单个文件形式存在存储服务器上;

对一次用户操作序列的过程中,利用界面窗口树形成用户的操作轨迹,建立用户的行为模型;所述的系统对用户交互痕迹采集存储的流程包括:应用服务器记录用户操作过程数据,包括用户Id、输入参数、界面元素及API;存储接口管理模块判断记录的数据的类型,如果是结构化数据,把用户数据通过存储目录树写入存储服务器的数据库文件中,把界面数据对应的界面窗口树写入存储服务器的UI数据库文件中;如果是非结构化数据,则通过存储管理模块生成文件保存路径,并把数据以文件形式存到存储服务器;在存储非结构化数据时,在对应的存储目录树中插入叶子节点,叶子节点代表存储的非结构化文件;

所述的系统对用户痕迹检索的流程包括:存储管理接口模块根据用户Id和存储时间戳来遍历存储目录树森林;从第一棵树开始遍历森林,对每一棵树,从树的根节点开始遍历,将用户Id和存储时间戳与叶子节点属性中记录的相应的信息进行匹配,若匹配成功,则返回该叶子节点的存储路径;然后进一步判断叶子节点所存储的数据类型,如果是非结构化数据,根据目录检索文件,如果是结构化数据,根据获得的数据库文件路径,检索用户访问痕迹,包括用户Id、输入参数、界面元素及API。

2.根据权利要求1所述的系统,其特征在于,所述的存储接口管理模块,根据获得的用户Id和时间戳,通过存储管理模块从存储服务器上检索所需要的数据。

3.一种面向互联网的用户交互痕迹捕获、存储和检索的方法,其特征在于,包括:

(1)对用户访问web服务器过程中产生的交互/交易数据以及用户操作,建模成界面窗口树来记录,一条路径表示一条用户访问路径;

将系统前端界面的窗口跳转关系建模为界面窗口树,窗口树中包含控件、API、菜单、基本界面和界面,其中界面作为窗口树的节点;界面包含基本界面,界面节点包含基本界面序列;界面之间的跳转关系由界面节点之间的二元关系来描述;API表示应用程序编程接口;

用户的操作为一组控件触发的组合,用户每一次操作都将触发API,并产生交互数据;

界面跳转发生时,新界面作为当前界面,跳转前的界面为前驱界面,当前界面在操作后的跳转界面作为后继界面;对一次用户操作序列的过程,利用界面窗口树形成用户的操作轨迹;

界面节点定义为四元组(id,name,BaseInterface序列,(Parent,Childs)),其中:id表示界面节点的编号,name表示界面的名称,BaseInterface序列表示界面节点包含的所有基本界面,(Parent,Childs)表示界面节点的直接父节点和直接子节点;

(2)将界面窗口树模型用树结构存储方式存储在分布式存储检索系统中;应用程序生成存储目录树,根据用户数据类型将数据存储到存储目录树中;其中,用户数据分为结构化数据和非结构化数据;分布式存储检索系统中的文件系统模型包括多棵存储目录树,每棵存储目录树包括目录节点、服务器节点和叶子节点;叶子节点分为两种,一种是存储结构化数据的数据库文件,一种是非结构化文件,非结构化文件是以单个文件形式存在存储服务器上;服务器节点为存储目录树的根节点;

对用户交互痕迹采集存储的流程包括:应用服务器记录用户操作过程数据,包括用户Id、输入参数、界面元素及API;存储接口管理模块判断记录的数据的类型,如果是结构化数据,把用户数据通过存储目录树写入存储服务器的数据库文件中,把界面数据对应的界面窗口树写入存储服务器的UI数据库文件中,以树结构的形式,按照用户行为树建立索引,利于高效检索;如果是非结构化数据,则通过存储管理模块生成文件保存路径,并把数据以文件形式存到存储服务器;在存储非结构化数据时,在对应的存储目录树中插入叶子节点,叶子节点代表存储的非结构化文件;

(3)当应用程序需要读取数据时,通过统一的数据检索入口从分布式存储检索系统中获取所需数据;

应用程序根据用户Id和时间戳来查询用户行为痕迹数据,通过已知的API事件操作和界面节点,从界面窗口树中检索到用户操作的界面节点,从分布式存储检索系统中检索到操作过程中产生的数据;

在分布式存储检索系统中检索时,依次检索每棵存储目录树,对每棵存储目录树从根节点开始遍历,根据用户Id和时间戳比对叶子节点中相应的属性,如果比对不成功,则该叶子节点不包含检索的用户数据,如果比对成功,则获取该叶子节点的存储路径,进一步获得用户数据;

在界面窗口树进行检索时,API对应着菜单,遍历界面节点,若找到某一界面节点,确定它包含的某一基本界面,API对应的菜单属于该基本界面,则返回该界面节点、基本界面和菜单。

4.根据权利要求3所述的方法,其特征在于,步骤(2)中,实现存储动态扩容,具体包括:

对于非结构化文件的存储扩容,是当服务器存储容量不够时,分布式存储检索系统在选出一个新的存储目录节点进行存储扩容,将文件存放到新的存储服务器上,并为新旧两个存储目录节点建立存储关联,文件存储目录重定向;

对于结构化数据存储的自动扩容,是将结构化数据分块,把不同分块存储到不同的存储服务器,当单台服务器的存储容量达到预设的阈值时,分布式存储检索系统把新产生的数据分配到新增服务器;当服务器的数据负载分布到多台存储服务器时,多台存储服务器并发处理。

说明书 :

面向互联网的用户交互痕迹捕获、存储和检索系统及方法

技术领域

[0001] 本发明属于互联网数据技术领域,具体涉及一种面向互联网的用户交互痕迹捕获、存储和检索的系统及方法。

背景技术

[0002] 随着互联网技术的快速发展与普及应用,网络信息井喷式增长,在此复杂分布式环境中,海量用户产生数以万计无序、复杂的信息,用户行为复杂多变,应用系统尤其是电商服务平台,采集用户的信息尤为重要,挖掘用户兴趣和潜在的知识成为分析用户行为的一个目标。当前的网站用户交互行为数据主要有四种采集方式:服务器日志、JavaScript 页面标签,包嗅探器和代理服务器。服务器日志方式中,用户发送页面请求到Web 服务器,当Web 服务器收到请求时,会将访问记录添加到日志中,并通过特定的应用程序分析日志,经过处理的日志数据存储在数据库中,管理员经过数据分析处理,形成网站分析报表。不同于web 日志记录,JavaScript 页面标签从http 请求开始,JavaScript 标记返回访问者的页面代码,该代码包含将在页面显示时执行的特殊JavaScript 代码。此代码从访问者Cookie(包含访问时间、浏览器信息、工具供应商给予当前访问者的用户ID 等)检索详细信息,并发送给工具提供商的数据收集服务器,数据收集服务器处理收集的数据并将其存储在数据库中。包嗅探器方式中,在来自网站访问者的请求到达Web 服务器之前,它将通过数据包嗅探器,然后数据包嗅探器将请求发送到Web 服务器。包嗅探器得到的数据在通过工具供应商的处理服务器的处理之后将被存放于数据库。代理服务器方式中,代理端可以识别来自访问多个服务器多用户的实际http请求,代理端的缓存可以减低客户端访问对网络的装载时间,降低对web服务器的访问,减少服务器端的工作负载。
[0003] 用户浏览过程需要加载大量图片、视频、商品描述等多种类型的文件,同时产生一系列的中间数据。这些浏览界面和数据都作为用户浏览痕迹,用户操作序列作为用户行为的实际动作顺序记录。用户数据和操作序列对用户行为习惯分析有着至关重要的重要,能更精确的反应用户特征,刻画用户画像。用户数据分为结构化数据和非结构化数据两类,数据的合理存储可以提高文件的访问效率,数据类型的多样性和存储的差异性增加了数据的检索难度。在云存储架构的基础上,实现各种数据采集、录入以及检索和应用。平台需要对各种业务活动进行分析与预测,针对不同用户个性化推介产业与产品相关信息,促进行业的发展,而当前的用户行为采集、存储、分析服务又受到很多限制:
[0004] 1、网络信息多样化的限制:对于门户类的网站信息繁多,首页导航,菜单,各个应用平台内容不断增量,用户面对大量的信息无从下手,不能快速定位到自己感兴趣的内容,浪费大量时间且效率低下。
[0005] 2、数据源获取方式的限制:用户交互行为方式多样,按照采集数据源的不同,分为客户端数据,代理端数据和服务器端数据。服务器端日志由服务器自动生成且实时记录,可以获得不同客户端,不同用户的记录,但多个用户共享一个IP的情况下,则无法区分用户身份,而且当用户请求的信息在缓存中时,请求就不会到达服务器,造成服务器端获取数据的不完整。客户端日志通过客户端软件来完成,能获取到单个客户端的行为记录,但是软件对操作系统和浏览器的兼容性有比较高的要求。基于代理的日志记录方法需要获取所有请求网页的信息,支持SSL的编码,cookie的管理以及JavaScript的使用,但js可以动态的创建网页链接,且这些链接并不指向代理,代理不能捕获所有的用户访问记录。
[0006] 3、数据源准确度的限制:当前捕获用户数据的方式存在各种缺陷,不能完全获取所有的用户行为和数据,不能详细记录用户和网站的交互情况,在分析用户行为的过程中数据不完整,降低了用户偏好预测的准确性,得不到准确的用户分析,影响了用户的内容推荐。
[0007] 4、数据结构类型的限制:对于高度复杂集成应用环境,业务活动的多样导致数据类型的繁杂,主要包含关系数据库、半结构化数据库、媒体文件等数据的操作。
[0008] 5、磁盘存储空间的限制:单台存储服务器上的磁盘空间是有限的,应用系统不断产生用户数据及操作过程数据,海量数据使存储节点、计算节点和服务节点海量增加,传统意义上的单节点存储必然不能满足用户的要求,需要存储服务器的数量进行调整,并合理平衡存储负载。

发明内容

[0009] 针对上述所存在的情况,为了解决在复杂网络的分布式环境中,采集海量用户产生的复杂多变信息并将这些信息存储在不同的位置,本发明提供了一种面向互联网的用户交互痕迹捕获,存储和检索的系统及方法,把存储系统建模为存储目录树,存储用户数据。
[0010] 本发明提供的面向互联网的用户交互痕迹捕获,存储和检索的系统,包括业务逻辑层、云存储管理层和数据存储层。应用服务器位于业务逻辑层,存储服务器位于数据存储层。云存储管理层由存储接口管理子系统、集群管理子系统和存储管理子系统构成。存储接口管理子系统管理不同业务的存储接口管理模块。集群管理子系统管理所有的存储服务器。存储管理子系统管理各存储服务器的存储管理模块。存储管理模块用于管理存储服务器上文件的元数据、扩容状态信息以及存储目录。
[0011] 负载均衡服务器分流用户访问请求给应用服务器,位于应用服务器上的应用程序通过存储接口管理模块记录用户本次交互痕迹,检索用户所需要的数据。存储接口管理模块根据数据类型包括结构化文件存储接口和非结构化文件存储接口,应用程序根据用户数据类型调用对应的存储接口,将用户在Web界面的操作轨迹建模为界面窗口树并存储到存储服务器上,将用户在操作过程中的用户数据利用存储目录树存储到存储服务器上。
[0012] 界面窗口树是将界面作为节点,对系统前端界面的窗口跳转关系建模得到,一个用户访问的轨迹形成一个界面窗口树的实例。用户的界面窗口树用树结构存储方式存储在存储服务器上。
[0013] 每个存储服务器对应一个存储目录树。存储目录树包括目录节点、服务器节点和叶子节点。服务器节点为存储目录树的根节点,记录存储器服务器信息。目录节点记录存储服务器上的存储目录信息。叶子节点分为两种,一种是存储结构化数据的数据库文件,一种是非结构化文件,非结构化文件是以单个文件形式存在存储服务器上。
[0014] 存储接口管理模块在获得用户Id和时间戳后,通过存储管理模块从存储服务器上检索所需要的数据。
[0015] 本发明提供的面向互联网的用户交互痕迹捕获,存储和检索的方法,包括:
[0016] (1)对用户访问web服务器过程中产生的交互/交易数据以及用户操作,建模成界面窗口树来记录,一条路径表示一条用户访问路径。
[0017] 将系统前端界面的窗口跳转关系建模为界面窗口树,窗口树中包含控件、API、菜单、基本界面和界面,其中界面作为窗口树的节点;界面包含基本界面,界面节点包含基本界面序列;界面之间的跳转关系由界面节点之间的二元关系来描述;API表示应用程序编程接口。
[0018] 用户的操作为一组控件触发的组合,用户每一次操作都将触发API,并产生交互数据;界面跳转发生时,新界面作为当前界面,跳转前的界面为前驱界面,当前界面在操作后的跳转界面作为后继界面;对一次用户操作序列的过程,利用界面窗口树形成用户的操作轨迹。
[0019] (2)将界面窗口树模型用树结构存储方式存储在分布式存储检索系统中;应用程序生成存储目录树,根据用户数据类型将数据存储到存储目录树中。其中,用户数据分为结构化数据和非结构化数据。分布式存储检索系统中的文件系统模型包括多棵存储目录树,每棵存储目录树包括目录节点、服务器节点和叶子节点。叶子节点即文件节点,分为两种,一种是存储结构化数据的数据库文件,一种是非结构化文件。目录节点用来描述存储服务器上的存储目录,服务器节点用来描述存储服务器信息。
[0020] 应用程序传递参数指定存储位置创建数据库文件,通过统一的存储入口根据数据类型存储用户数据。
[0021] (3)当应用程序需要读取数据时,通过统一的数据检索入口从分布式存储检索系统中获取所需数据。
[0022] 本发明提出的面向互联网的用户交互痕迹捕获、存储和检索的系统及方法,实现了用户行为数据的采集,支持不同的web数据存储到分布式存储系统中并可以检索。相对于现有技术,本发明的系统及方法具有以下有益效果:
[0023] (1)本发明系统和方法通过界面窗口树建模,解决了网络信息化信息繁多且数据源多样化、无法精确采集用户行为的问题,完成了用户行为数据采集的过程;
[0024] (2)数据类型的多样性和存储的差异性增加了数据的检索难度,本发明系统和方法通过构建的存储目录树,解决了复杂的数据类型差异化存储的问题,数据的合理存储提高文件的访问效率。本发明给应用程序提供便捷的分布式的存储接口,根据不同的数据类型,自动分类存储在不同的位置,简化了应用程序管理分布式用户痕迹采集过程中多类型文件的过程。
[0025] (3)本发明系统和方法解决了分布式用户存储系统中存储的动态逻辑扩容问题,随着存储变化动态调整,克服了单节点存储服务器磁盘存储空间的限制。
[0026] (4)本发明系统和方法解决了数据检索过程繁琐,效率低下的问题,采用界面窗口树,提高了界面节点增删改查的效率。

附图说明

[0027] 图1为本发明的界面节点关系示例图;
[0028] 图2为本发明的系统基本架构图;
[0029] 图3为本发明的用户痕迹采集存储流程图;
[0030] 图4为本发明的用户痕迹检索流程图。

具体实施方式

[0031] 下面结合附图和实施例对本发明进一步说明。
[0032] 本发明提供的面向互联网的用户交互痕迹捕获、存储和检索的系统及方法,主要解决三个问题:(1)关于用户行为数据的采集的问题,本发明把用户访问web服务器过程中产生的交互/交易数据以及用户操作,建模成界面窗口树来记录,一条路径表示一条用户访问路径;(2)关于用户行为数据的分布式存储的问题,数据分为结构化数据类型和非结构化数据类型,本发明通过识别数据类型,把存储系统建模为存储目录树,根据不同的数据类型存储到分布式存储系统的不同位置中。页面访问信息通过界面窗口树增删节点,用户通过前端访问应用程序页面并产生交互,在这过程中相关的输入输出数据、数据包含的用户关键数据存储在结构化数据库中。(3)关于用户行为数据检索的问题,用户访问服务器的输入输出数据从结构化数据文件中提取,界面信息用界面窗口树中提取,本发明通过检索分布式存储系统中记录的用户数据,通过统一的数据检索入口,精准提取与用户相关的历史行为记录,访问内容和对象,数据及访问界面的存储及检索更加高效,分布式存储检索系统良好的扩展性给用户数据分析带来良好的体验。
[0033] 本发明提供的面向互联网的用户交互痕迹捕获、存储和检索的系统及方法,实现的核心思想是:
[0034] 1)用户在访问网站的过程中,无需受限数据来源于服务端、代理端还是客户端,所有和服务器交互的事件都会记录下来,并识别用户在此过程中的操作序列和操作的输入输出数据,前后台事件及时间等都能捕获并记录下来。除此外,web服务器日志还能记录其他信息,如访问IP,访问的资源,传输协议,上级页面等内容。
[0035] 2)通过识别页面节点和页面的分解,根据用户ID和访问过程生成界面窗口树,每个访问界面都抽象为一个节点,所有这个界面上的操作记录都会被捕获,避免了操作事件的遗漏,并且能记录访问的时长,准确记录用户的信息。
[0036] 3)不同的文件存储在不同的位置,根据数据类型的不同采用不同的存储方式,非结构化数据按照动态目录树的规则存放在对应的位置,结构化数据根据用户访问信息,存储在数据库中。服务器日志存储在log日志文件中。这种方法使应用程序可以根据数据类型分类存储的用户信息,自定义存储路径,并检索用户历史访问信息,为用户分析提供可靠的数据支持。
[0037] 4)把界面窗口树存储在数据库中,因为需要有序的遍历数据,将节点的信息以及树中每个节点与其后代节点的关系都存储了下来,包含节点关系的存储,祖先节点和后续的节点的距离信息,用来表示某个界面节点距离根节点的距离。
[0038] 5)数据存储冗余度小、直观性强,检索遍历过程简单高效,界面节点增删改查效率高。
[0039] 本发明提出一种面向互联网的用户交互痕迹捕获、存储和检索的方法,实现了用户行为数据的采集,存储到分布式存储系统中并可以进行检索。下面说明实现的三部分。
[0040] (1)首先,通过界面窗口树对用户交互痕迹进行捕获,解决用户行为数据采集的问题。
[0041] 本步骤通过用户id和网页浏览记录对用户身份进行精确的识别,记录用户历史访问信息,为用户分析提供可靠的数据支持。
[0042] 本发明把用户访问web服务器过程中产生的交互/交易数据以及用户操作,采用界面窗口树来建模。用户在前端发起请求,服务器响应请求,进行一次API的调用,记录用户操作序列,界面的跳转即界面窗口树的边,界面作为界面窗口树的节点,精准捕捉用户行为,支持系统跟踪用户的偏好和访问习惯。数据采集是用户行为分析的前提,采集数据的准确性,完整性对后续分析有着至关重要的作用。每个用户访问的轨迹即为界面窗口树的一个实例。
[0043] 如图1为本发明的界面节点关系图例,系统前端界面的窗口跳转关系建模为界面窗口树,包含控件、API、菜单Menu、基本界面BaseInterface、界面InterfaceNode,其中界面作为窗口树的节点。界面节点用来描述某个界面的信息,由基本界面或基本界面的叠加组合而成,基本界面是界面,界面叠加基本界面也是界面。界面之间的跳转关系由界面节点之间的二元关系来描述。界面窗口树中,界面包含基本界面。功能菜单本质上为用户操作,而每一个用户操作实质为一组前端控件触发的组合,用户每一次操作都将触发API,并产生交互数据,数据和操作写入分布式存储检索系统中,记录用户痕迹。界面窗口树是对整套系统界面的抽象,它用来描述该系统的界面组成以及界面之间的跳转关系信息。
[0044] 界面节点InterfaceNode定义为四元组(id,name,BaseInterface序列,(Parent,Childs)),其中:id表示界面节点的编号,name表示界面的名称,BaseInterface序列表示当前界面节点包含的所有基本界面,即界面可以分解为若干个基本界面的叠加。(Parent,Childs)表示界面节点的直接父节点和直接子节点。Childs ={InterfaceNode1,…, InterfaceNodem }(m≥0),是目录节点的直接子节点的集合,其中InterfaceNodei(1≤i≤m)是界面节点,m=0时,Childs为空。以界面节点InterfaceNode为根节点的界面窗口Tree(InterfaceNode)定义为:
[0045] 如果InterfaceNode.Childs=Φ,则Tree(InterfaceNode)= InterfaceNode;
[0046] 如果InterfaceNode.Childs={InterfaceNode1,…, InterfaceNodem },( m≥1),则:
[0047] Tree(InterfaceNode)是以InterfaceNode为根节点和m棵树Tree(InterfaceNode1),…,Tree(InterfaceNodem)按从左到右顺序构成的树,称Tree(InterfaceNode1),…, Tree(InterfaceNodem)为Tree(InterfaceNode)的m棵子树。
[0048] 用Tree(InterfaceNode).id表示界面窗口树的编号,则Tree(InterfaceNode).id = InterfaceNode.id。Tree(InterfaceNode)在根节点InterfaceNode下从左到右的第一棵树是Tree(InterfaceNode1),…,第m棵树是Tree(InterfaceNodem)。
[0049] 界面跳转发生时,新界面作为当前界面,跳转前的界面为前驱界面,当前界面在操作后的跳转界面作为后继界面。对一次用户操作序列的过程中,利用界面窗口树形成用户的操作轨迹,建立用户的行为模型,生成用户一次交互/交易行为的痕迹和数据记录,数据和操作将写入分布式存储检索系统中,为用户行为进一步分析奠定基础。
[0050] (2)通过存储目录树来解决用户行为数据的分布式存储。本发明分布式存储系统建模为存储目录树,根据不同的数据类型存储到分布式存储系统的不同位置中。用户数据分为结构化数据类型和非结构化数据类型。本发明将结构化数据存储到分布式数据库中,非结构化数据即以文件形式存在的数据作为单个文件节点存在存储目录树中。存储系统能根据存储容量的变化动态扩容。
[0051] 页面访问信息通过界面窗口树存储,界面窗口树模型用树结构存储方式存储在分布式存储检索系统中。用户通过前端访问应用程序页面并产生交互,在这过程中相关的输入输出数据、数据包含的用户关键数据存储在结构化数据库中。在本步骤,根据数据类型的不同采用不同的存储方式,使应用程序可以根据数据类型分类存储用户信息,自定义存储路径,并检索用户历史访问信息,为用户分析提供可靠的数据支持。
[0052] 分布式存储检索系统环境中文件系统模型由多棵存储目录树构成,每棵存储目录树包括:目录节点、服务器节点、叶子节点等。其中,服务器节点为存储目录树的根节点。对于用户界面数据建模为界面窗口树,按照树的存储和界面节点之间的联系,存储在分布式数据库中。结构化的数据存储在数据库文件中,存储结构化数据的叶子节点是数据库文件。在存储用户结构化数据时,在存储目录树中找到数据库文件所在的叶子节点,将数据存入叶子节点对应的数据库文件中。非结构化文件节点是非结构化文件。存储目录节点用来描述存储服务器上的某个存储目录的信息,服务器节点用来描述存储服务器信息。应用程序传递参数指定存储位置创建数据库文件,通过统一的存储入口可以分类型、按要求存储用户数据,结构化数据存储在数据库,而数据库本身存储在文件里,是有结构的数据文件。
[0053] 本发明设计的存储机制支持存储动态扩容,实现分布式存储平台的扩展性。对于用户行为痕迹捕获中的非结构化文件的存储扩容,当服务器存储容量不够时,分布式存储检索系统在选出一个新的存储目录节点(存储服务器)进行存储扩容,将文件放到新的存储服务器上,并为新的存储服务器和原存储服务器的两个存储目录节点建立存储关联,文件存储目录重定向。对于结构化数据的自动扩容,分布式存储检索系统把结构化数据分割成集合,即分块,把不同分块存储到不同的存储服务器,当单台服务器存储磁盘达到预设的阈值时,分布式存储检索系统把新产生的数据分配到新增服务器,实现了结构化数据的水平扩容。根据存储服务器磁盘使用情况需要增加服务器节点来分布式存储数据时,该数据库服务器的数据信息将负载分布到多台存储服务器,多台存储服务器并发处理。在应用程序需要读取数据时,分布式存储检索系统通过管理数据分散情况,提取分片的数据块,重新整合数据。分布式存储使服务器的存储和数据处理得到了均衡,提高了存储效率,并且做到了动态扩容,提升了平台的扩展性。
[0054] (3)当应用程序需要读取数据时,应用程序通过统一的数据检索入口检索分布式存储检索系统中记录的用户数据。用户访问服务器的输入输出数据从结构化数据文件中提取,界面信息用界面窗口树中提取,通过本发明方法能精准提取与用户相关的历史行为记录、访问内容和对象,从而分析用户最频繁的访问路径和感兴趣的内容,完善产品设计。本发明在互联网用户行为记录捕获、存储、检索相关领域解决了用户关键数据的采集,更加精确,数据及访问界面的存储及检索更加高效,分布式存储检索系统良好的扩展性给用户数据分析带来良好的体验。
[0055] 用户行为痕迹数据存储在分布式存储检索系统中,检索时从存储目录树的根节点开始检索,根据已知的用户Id和时间戳来查询用户痕迹记录,分布式存储检索系统中包含多棵存储目录树构成森林,应用程序读取数据就是从森林中检索所需要的数据。检索用户交互/交易痕迹,输入用户信息(主要包括用户Id)和时间戳,通过已知的API事件操作和界面节点,可以在界面窗口树中检索到用户操作的界面节点,以及从分布式存储检索系统中检索到操作过程中产生的数据。森林可分解为多棵树,那么检索即从第一棵存储目录树开始检索,通过依次遍历每棵树完成检索。森林的遍历可以分解为树的遍历,从存储目录树的根节点开始遍历。文件节点即为树的叶子节点,文件节点分为两类:结构化文件节点和非结构化文件节点。根据已知的用户信息,匹配叶子节点属性中的用户信息,如果比对成功,该叶子节点包含检索的用户信息,则返回该叶子节点的存储路径,以及检索到的用户历史行为数据。若失败,即该树中检索不到用户历史行为数据,则返回空集。API对应着菜单,遍历界面节点,若找到某一界面节点,确定它包含的某一基本界面,APT所对应的菜单属于该基本界面,则返回该界面节点,基本界面和菜单。这样就可以确定API和菜单,基本界面,界面节点之间的对应关系。在界面窗口树中检索用户交互/交易痕迹,通过检索起始API事件,检索对应的界面节点,再遍历此界面节点的子节点,找到满足此API调用跳转的界面节点,并对其进行以该界面节点作为根节点的子树的递归检索,检索到在此API事件操作过程中相关的界面和数据。
[0056] 如图2为本发明面向互联网的用户交互痕迹捕获、存储和检索的系统的基本架构图,整体架构分为业务逻辑层、云存储管理层和数据存储层。应用服务器位于业务逻辑层。存储服务器位于数据存储层。云存储管理层由存储接口管理子系统、集群管理子系统和存储管理子系统构成。存储接口管理子系统管理不同业务的存储接口管理模块。集群管理子系统管理所有的存储服务器,包括新增的扩容服务器,提供对存储目录进行逻辑扩容的服务。存储管理子系统管理各存储服务器的存储管理模块,存储管理模块用于管理相对应的存储服务器上文件的元数据、扩容状态信息、以及查询存储目录信息。
[0057] 负载均衡服务器根据实时服务器负载情况,分流用户访问请求给不同的应用服务器,位于应用服务器上的应用程序根据请求调用不同的业务云存储管理层提供的存储接口管理模块检索并返回用户需要的数据,同时记录在此过程中的用户交互痕迹。存储接口管理模块根据数据类型包括结构化文件存储接口和非结构化文件存储接口,应用程序根据用户数据类型调用对应的存储接口,将用户在Web界面的操作轨迹建模为界面窗口树并存储到存储服务器上,将用户在操作过程中的用户数据利用存储目录树存储到存储服务器上。应用程序根据并根据不同的数据类型来选择不同的存储方式和存储路径。云存储管理层支持存储服务器的动态扩容,在存储负荷达到一定阈值之后,立即向集群管理子系统请求增加存储空间进行逻辑扩容。
[0058] 用户数据类型分为结构化数据和非结构化数据,定义FileType::=StructFile|UnStructFile;其中非结构化数据UnStructFile::=(name, prefix, FilePath),其中:name表示文件类型的名称,如:jpg、mp3、txt、log、xml等;prefix表示该文件类型对应的前缀。FilePath表示文件的存储目录节点与它的祖先节点之间的相对路径,FilePath::= getRelativePath (directoryNodeId, directoryTree.id),directoryNodeId表示分配给该文件的叶节点的父节点编号,代表是存储目录树上的一个节点,directoryTree.id表示存储目录树的编号。结构化数据StructFile::=(Filename,DBServerNode.id,Data),文件类型名称Filename::=String,DBServerNode.id是存储服务器节点的Id,服务器节点上的数据库文件的存储路径Filepath::=(ServerId,Property),ServerId为服务器节点Id,Property表示文件的属性。
[0059] 数据序列Data::=(TableID,RecordID,keyName,Value)序列;
[0060] 其中,序列中四元组按时间排序,TableID::=String,RecordID::=String,keyName::=String,Value::= Integer|String|Array| Float|Double|Boolean|Object|Date。TableID为表的编号,RecordID为表中记录的ID,keyName为记录中的键名,Value为记录中键名对应的值。用Last(Data)表示序列Data的最后一个四元组。
[0061] 应用程序运行中与用户交互,产生的用户数据如果是非结构化文件数据,则通过如下接口进行用户数据的存储:
[0062] 非结构化文件存储接口定义为五元组(userId,uploadTime,(fileName, UnStructFile, Content));userId为用户Id,uploadTime为数据存储时间戳,fileName为文件名,UnStructFile表示非结构化文件,Content为文件内容。
[0063] 用户交互过程中产生的用户数据如果是结构化文件数据,则通过如下接口进行用户数据的存储:
[0064] 结构化文件存储接口定义为六元组( userId,uploadTime,(fileName, StructFile, API.Parmin , Content))。StructFile表示结构化文件,API.Parmin表示API的输入参数。
[0065] 如图3为本发明的面向互联网的用户交互痕迹捕获、存储和检索的系统及方法中,实现用户痕迹采集存储的流程图,具体用户保存文件的过程如下:
[0066] (1.1)用户访问浏览器页面,发起web请求;
[0067] (1.2)获取用户输入的访问参数;
[0068] (1.3)Web后台,即应用服务器,响应用户的请求,处理逻辑,返回数据给Web界面展示数据;对数据进行检索的流程如图4所示;
[0069] (1.4)应用服务器记录用户信息、输入参数、界面元素、API等过程数据;
[0070] (1.5)存储接口管理模块判断数据类型,如果是结构化数据,则把用户数据通过存储管理模块写入用户数据库文件,把界面数据建模为界面窗口树,通过存储管理模块写入UI数据库文件;如果是非结构化数据,则通过存储管理模块生成文件保存路径,并把数据以文件形式存储到存储服务器。
[0071] 非结构化文件存储以单个文件形式存在于存储系统中,运行过程中产生的用户数据如果是非结构化文件数据,在存储目录树中找到存储位置的文件节点:
[0072] TreeInsert1表示在存储目录树上插入非结构化文件,如下:
[0073] TreeInsert1(userId,uploadTime,(fileName, UnStructFile, Content))=(fileName, UnStructFile, Content, property);
[0074] 其中property为(userId, uploadTime,directoryNodeId),表示文件的属性,directoryNodeId表示分配给该非结构化文件的叶节点UnStrfileNode的父节点编号,即UnStrfileNode.Parent= directoryNodeId,UnStrfileNode.Childs=Φ。
[0075] 结构化的数据存储在关系型数据库文件中,产生的用户数据如果是结构化文件数据,在存储目录树中找到存储位置的文件节点,即数据库文件所在的叶子节点:
[0076] TreeInsert2(userId,uploadTime,(fileName, StructFile, API.Parmin  , Content))= (fileName, StructFile, Content, property);
[0077] 其中property为((userId, uploadTime),directoryNodeId),表示文件的属性,directoryNodeId表示模型分配给该结构化文件作为叶节点StrfileNode的父节点编号,即StrfileNode.Parent= directoryNodeId,StrfileNode.Childs=Φ。
[0078] 分布式用户交互痕迹和数据的捕获,根据用户在不同应用客户端的行为记录的日志,发送给存储服务器。依据产生的数据类型,如果是非结构化文件数据,则执行非结构化文件节点插入操作,如果是结构化文件数据,则执行结构化文件节点数据写入操作。
[0079] TreeInsert(userId,uploadTime,(fileName, FileType, Content))=[0080] if(FileType= UnStructFile){
[0081]  TreeInsert1(userId,uploadTime,(fileName, UnStructFile, Content));
[0082] }else if(FileType= StructFile){
[0083] TreeInsert2(userId,uploadTime,(fileName, StructFile, Content));
[0084] }else
[0085]  return Error;
[0086] 如图4为本发明的面向互联网的用户交互痕迹捕获、存储和检索的系统及方法中用户痕迹检索的流程图,用户痕迹检索的过程如下:
[0087] (2.1)应用程序接收到用户请求,需要检索指定用户的行为痕迹;
[0088] (2.2)存储管理接口模块根据用户Id和时间戳来遍历,时间戳即数据存储时间戳;若干存储目录树构成森林,那么森林的遍历是分解为树的遍历;
[0089] (2.3)从第一棵树开始遍历森林,对一棵树,从树的根节点开始遍历,检索指定用户的行为痕迹;检索是根据已知的用户Id和时间戳对存储目录树的各叶子节点进行匹配;
[0090] (2.4)匹配用户Id、时间戳和叶子节点属性中记录的相应的信息,如果匹配成功,返回该叶子节点的存储路径,如果不成功则返回空集;
[0091] (2.5)在匹配成功后,判断叶子节点所存储的数据类型,如果是非结构化数据,则根据目录检索文件,如果是结构化数据,根据获得的数据库文件路径检索用户信息、输入参数、界面元素、API等用户访问痕迹信息。
[0092] 过程分解如下:
[0093] 森林的检索ForestQuery如下:
[0094] ForestQuery(userId,uploadTime,distributeTrees)=(
[0095] for(i=1,i≤k,i++){
[0096] TreeQuery(userId,uploadTime,directoryTree(serverNodei));}[0097] return ‘Noresult’;
[0098] )
[0099] distributeTrees表示存储目录树森林,TreeQuery()表示树检索,serverNodei表示服务器节点。k为正整数,代表存储服务器个数。
[0100] 树的检索TreeQuery(),进行叶子节点的匹配如下:
[0101] 设Tree的叶节点集合为{LeafNode1,…,LeafNoden},其中LeafNodei是结构化文件节点StrfileNode或者非结构化文件节点UnStrfileNode。n为正整数,代表树上的叶子节点个数。
[0102] TreeQuery(userId,uploadTime,directoryTree)
[0103] =(
[0104] for(i=1,i≤n,i++){
[0105] if(LeafNodei. property. userId=userId& LeafNodei. property. uploadTime= uploadTime)
[0106] reture {getAbsolutePath(directoryNode.id, directoryTree.id, Parm) / LeafNodei.fileName;
[0107] LeafNodei. Content;
[0108] }
[0109] }else returnΦ;
[0110] )
[0111] 当从叶子节点匹配到相同的用户Id和存储时间戳时,通过函数getAbsolutePath获得叶子节点的存储路径以及文件内容。上面Parm表示输入参数。
[0112] 本发明未详细阐述的部分属于本领域的技术人员公知技术。
[0113] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。