数据服务器及数据储存方法

文档序号:9887725阅读:456来源:国知局
数据服务器及数据储存方法
【技术领域】
[0001]本发明涉及数据储存领域,尤其涉及一种数据服务器及数据储存方法。
【背景技术】
[0002]在现有的数据储存中,对于树形数据结构,由于同一层级的节点具有相同的属性,因此,通常按节点的层级存储在不同的表中。例如,所有第一层节点(根节点)的节点信息都储存在一张表中。第二层节点(第一层节点的子节点)的节点信息都储存在另一张表中。第三层节点(第二层节点的子节点)的节点信息都储存在又一张表中。不同层级节点通过在表中插入当前节点的父节点的唯一标识信息来进行关联。在利用这样储存的数据来进行统计时,需要利用数据库中多个表的连接(join),然而对于类似hbase的其他一些数据库中,在进行数据统计时,无法把多个表连接起来获得数据,只能通过附加的程序来实现这样的连接的功能。附加的程序来实现连接的功能非常费力和耗时。

【发明内容】

[0003]本发明为了克服上述现有技术存在的缺陷,提供一种能够应用于树形数据结构,在同一个数据表中关联多层节点进行储存的数据服务器及数据储存方法。
[0004]本发明提供一种按列储存的数据储存方法,所述数据储存方法应用于树形数据结构,每一层节点均为其上一层节点的子节点,所述数据储存方法包括:在同一数据表中,将每个第一层节点的节点信息与该第一层节点的所有子孙节点的节点信息按列名格式储存在同一行中,每一层所述节点的节点信息全部跟随在上一层节点的节点信息之后;所述第一层节点的节点信息的列名格式至少包括该节点的标识信息;所述第二层节点的节点信息的列名格式至少包括表示该节点为所在层节点的前缀、该节点的标识信息和对于该节点的父节点的索引号;除所述第一层和所述第二层外,其余每一层所述节点的节点信息的列名格式包括该节点所在的层节点的前缀、该节点的标识信息、该节点的父节点的标识信息和对于所述父节点的索引号。
[0005]优选地,用于储存所述第一层节点的节点信息的列数固定;用于储存其余各层所述节点的节点信息的列数动态变化。
[0006]优选地,所述索引号根据同一父节点下的子节点的数量累计增长。
[0007]根据本发明的又一方面,还提供一种数据服务器,按上述的数据储存方法储存数据。
[0008]根据本发明的又一方面,还提供一种按列储存的数据储存方法,所述数据储存方法应用于树形数据结构,包括表示访问数据的第一层节点,表示页面数据的第二层节点,表示事件数据的第三层节点,其中,第二层节点为所述第一层节点的子节点,第三层节点为所述第二层节点的子节点;在同一数据表中,将每个第一层节点的节点信息与该第一层节点的所有子孙节点的节点信息按列名格式储存在同一行中,每一层所述节点的节点信息全部跟随在上一层节点的节点信息之后;所述第一层节点的节点信息通过固定列存储,所述第一层节点的节点信息的列名格式至少包括该节点的标识信息;所述第二层节点的节点信息通过动态列存储,所述第二层节点的列名格式包括节点为所在层节点的前缀、该节点的标识信息和对于该节点的父节点的索引号;所述第三层节点的节点信息通过动态列存储,所述第三层节点的节点信息的列名格式包括节点为所在层节点的前缀、该节点的父节点的标识信息和对于所述父节点的索引号。
[0009]优选地,所述索引号根据同一父节点下的子节点的数量累计增长。
[0010]优选地,所述访问数据的节点信息包括如下信息中的一个或多个:访问时间戳;访问来源;以及用户标识信息。
[0011]优选地,所述页面数据的节点信息包括页面时间戳。
[0012]优选地,所述事件数据的节点信息包括如下信息中的一个或多个:事件类型、事件描述以及事件时间戳。
[0013]根据本发明的又一方面,还提供一种数据服务器,按上述的数据储存方法储存数据。
[0014]相比现有技术,本发明具有如下优势:
[0015]I)本发明通过将树形数据结构的不同层级节点的节点信息储存在同一数据表中,并通过列名格式的设置将不同层级的节点关联起来,来避免使用join的功能,并且在同一数据表中对数据进行删除、插入等处理效率更高;
[0016]2)通过部分层级节点的列名格式中前缀来标识,进而能在数据统计时,通过前缀就可以检索到某一个层级的所有数据;
[0017]3)第一层节点的节点信息通过固定的列数来储存,其他层节点的节点信息通过动态的列数来储存进而实现数据表可扩展性。
【附图说明】
[0018]通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
[0019]图1示出了根据树形数据结构的示意图。
[0020]图2示出了根据先前使用的第一层节点储存表的示意图。
[0021 ]图3示出了根据先前使用的第二层节点储存表的示意图。
[0022]图4示出了根据先前使用的第三层节点储存表的示意图。
[0023]图5示出了根据本发明实施例的数据表的结构图。
【具体实施方式】
[0024]现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。
[0025]本发明提供了一种能够应用于树形数据结构,在同一个数据表中关联多层节点进行储存的数据储存方法。树形数据结构参见图1。树形数据结构包括第一层节点110、第二层节点120和第三层节点130。第二层节点120为第一层节点110的子节点。第三层节点130为第二层节点120的子节点。
[0026]在一个具体的树形数据结构储存的实施例中,例如,在对网站进行分析时,通常对网站的一个访问会触发多个页面,一个页面会触发多个事件。访问、页面和事件这三个层级形成一个树形数据结构。访问作为第一层节点就是这个树形数据结构的根,页面作为第二层节点,事件作为第三层节点。如图1所示,访问节点Vl、V2为第一层节点;页面节点Pl至P4为第二层节点,其中,页面节点Pl和P2为访问节点Vl的子节点,页面节点P3和P4为访问节点V2的子节点;事件节点El至E6为第三层节点,其中,事件节点El和E2为页面节点Pl的子节点,事件节点E3为页面节点P2的子节点,事件节点E4为页面节点P3的子节点,事件节点E5和E6为页面节点P4的子节点。
[0027]访问节点、页面节点和事件节点各自都有一些属性去描述,处于相同层级的节点所需要描述的属性相同,因此,现有技术通常使用不同的表来储存不同层级的节点信息(也就是属性)。如图2至图4所示。
[0028]图2示出了先前使用的第一层节点,也就是访问节点的数据表,其列名包括访问节点的标识Vid、访问的时间戳Time以及执行访问的用户标识Uid等。图3示出了先前使用的第二层节点,也就是页面节点的数据表,其列名包括用于区分与同一访问节点关联的页面节点的索引号(自生长ID)、关联访问节点的标识Vid、页面节点的标识Pid以及页面的时间戳Time。其中,每个第二层节点通过关联访问节点的标识Vid来与访问节点进行关联。与同一访问节点关联的页面节点,除了可以通过页面节点的标识Pid来进行区分,还可以利用自生长ID来进行区分。例如,与访问节点Vl关联的页面节点P1、P2的自生长ID分别为1、2,当与访问节点Vl关联的页面节点继续增加时,自生长ID可继续累计为3、4等。图4示出了先前使用的第三层节点,也就是事件节点的数据表,其列名包括用于区分与同一页面节点关联的事件节点的索引号(自生长ID)、关联访问节点的标识Vid、关联页面节点的标识Pid、事件的时间戳Time以及事件类型Cat。
[0029]然而,利用三个各自独立的表来储存不同层级节点的节点信息,并在进行数据统计时,需要通过附加的程序来实现三张表的连接。然而使用附加的程序又非常费力耗时。
[0030]为了解决这样的缺陷,本发明提供了一种数据储存方法。以hbase数据库为例,说明本发明提供的数据储存方法,本发明适用的数据库并不以此为限。为了储存类似图1所示的树形数据结构中的节点信息,本发明的数据储存方法提供如图5所示的数据表。
[0031]在图5所示的数据表中,各层级的节点都储存在同一张表里。本发明提供的数据储存方法将每个第一层节点的节点信息与该第一层节点的所有子孙节点的节点信息按列名格式储存在同一行中,每一层节点的节点信息全部跟随在上一层节点的节点信息之后。具体而言,也就是对于一个访问节点VI,访问节点Vl与访问节点Vl的所有子孙节点(页面节点P1、P2及页面节点P1、P2的子节点)的节点信息都按各自的列名格式储存在同一行中。列名格式指的是该列的信息都需要按列名格式所指示信息类型来储存。例如,图5所示第一列的列名格式为Vid,则该列储存的信息类型都为访问节点的标识信息。更具体地,访问节点的标识信息Vid作为数据表的主键,当用户需要检索统计同一访问节点下的所有页面节点和事件节点的信息时,只需以访问节点的标识信息Vid来进行检索,检索后与该访问节点关联的所有节点都在一行中进行显示。
[0032]由于多个页面节点对应一个访问节点,因此多个页面节点与访问节点储存在同一行中来表示页面节点和访问节点的关联关系。而在同一行中储存了多个页
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1