书签 分享 收藏 举报 版权申诉 / 16

用于管理数据库的方法和系统.pdf

  • 上传人:b***
  • 文档编号:6371803
  • 上传时间:2019-06-05
  • 格式:PDF
  • 页数:16
  • 大小:1.12MB
  • 摘要
    申请专利号:

    CN201410119830.6

    申请日:

    2014.03.27

    公开号:

    CN104951462A

    公开日:

    2015.09.30

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效 IPC(主分类):G06F 17/30申请日:20140327|||公开

    IPC分类号:

    G06F17/30

    主分类号:

    G06F17/30

    申请人:

    国际商业机器公司

    发明人:

    庄威; 曲俊媚; 李立; 刘亮; 尹文君

    地址:

    美国纽约阿芒克

    优先权:

    专利代理机构:

    北京市金杜律师事务所11256

    代理人:

    王茂华

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了用于管理数据库的方法和系统。根据本发明的实施例,提供一种用于管理数据库的方法,所述数据库中的每项数据与时间戳和数据点相关联,所述时间戳被用作所述数据库中的表的行的行键。所述方法包括:基于用户针对所述数据库的先前数据访问,获取所述用户的行为特征;基于获取的所述行为特征以及所述数据库的系统配置,将所述表中的列划分为列族;以及使所述数据库中的数据至少部分地基于相关联的所述数据点而被存储于相应的列族。还公开了相应的系统。

    权利要求书

    权利要求书
    1.  一种用于管理数据库的方法,所述数据库中的每项数据与时间戳和数据点相关联,所述时间戳被用作所述数据库中的表的行的行键,所述行被定义在所述表的两个维度中的一个维度上,所述方法包括:
    基于用户针对所述数据库的先前数据访问,获取所述用户的行为特征;
    基于获取的所述行为特征以及所述数据库的系统配置,将所述表中的列划分为列族,所述列被定义在所述表的所述两个维度中的另一维度上;以及
    使所述数据库中的数据至少部分地基于相关联的所述数据点而被存储于相应的列族。

    2.  根据权利要求1所述的方法,其中所述行为特征指示所述先前数据访问的时间跨度,并且所述系统配置指示与所述数据库相关联的文件系统中的块的大小,
    并且其中将所述表中的列划分为列族包括:
    从所述表生成至少一个逻辑表,所述至少一个逻辑表的行数基于所述时间跨度来确定;以及
    至少部分地基于所述至少一个逻辑表的所述行数和所述块的所述大小来确定每个所述列族中包含的列数,使得所述列族中的数据占用的所述块的数目最小。

    3.  根据权利要求2所述的方法,其中所述行为特征还指示所述先前数据访问的数据类型,并且其中每个所述列族中包含的所述列数还基于所述数据类型来确定。

    4.  根据权利要求2所述的方法,其中所述数据库的所述表中的数据被划分到多个区域中存储,所述方法还包括:
    基于所述区域的大小和所述块的大小,来确定所述至少一个逻辑表中包含的所述列族的数目,使得所述至少一个逻辑表中的数据占 用的所述区域的数目最小。

    5.  根据权利要求2所述的方法,还包括:
    维护用于所述数据库中的所述表的索引,所述索引将所述数据点的标识映射至所述至少一个逻辑表和所述列族。

    6.  根据权利要求1至5任一项所述的方法,其中使所述数据库中的数据至少部分地基于相关联的所述数据点而被存储于相应的列族包括:
    使相关的所述数据点的数据被存储在相同的列族中。

    7.  根据权利要求1至5任一项所述的方法,其中所述数据库是Hadoop数据库HBase。

    8.  一种用于管理数据库的系统,所述数据库中的每项数据与时间戳和数据点相关联,所述时间戳被用作所述数据库中的表的行的行键,所述行被定义在所述表的两个维度中的一个维度上,所述系统包括:
    行为特征获取单元,被配置为基于用户针对所述数据库的先前数据访问,获取所述用户的行为特征;
    列族划分单元,被配置为基于获取的所述行为特征以及所述数据库的系统配置,将所述表中的列划分为列族,所述列被定义在所述表的所述两个维度中的另一维度上;以及
    数据存储管理单元,被配置为使所述数据库中的数据至少部分地基于相关联的所述数据点而被存储于相应的列族。

    9.  根据权利要求8所述的系统,其中所述行为特征指示所述先前数据访问的时间跨度,并且所述系统配置指示与所述数据库相关联的文件系统中的块的大小,
    并且其中所述列族划分单元包括:
    逻辑表生成单元,被配置为从所述表生成至少一个逻辑表,所述至少一个逻辑表的行数基于所述时间跨度来确定;以及
    列数确定单元,被配置为至少部分地基于所述至少一个逻辑表的所述行数和所述块的所述大小来确定每个所述列族中包含的 列数,使得所述列族中的数据占用的所述块的数目最小。

    10.  根据权利要求9所述的系统,其中所述行为特征还指示所述先前数据访问的数据类型,
    并且其中每个所述列族中包含的所述列数还基于所述数据类型来确定。

    11.  根据权利要求9所述的系统,其中所述数据库的所述表中的数据被划分到多个区域中存储,所述系统还包括:
    列族数目确定单元,被配置为基于所述区域的大小和所述块的大小,来确定所述至少一个逻辑表中包含的所述列族的数目,使得所述至少一个逻辑表中的数据占用的所述区域的数目最小。

    12.  根据权利要求9所述的系统,还包括:
    索引维护单元,维护用于所述数据库中的所述表的索引,所述索引将所述数据点的标识映射至所述至少一个逻辑表和所述列族。

    13.  根据权利要求8至12任一项所述的系统,其中所述数据存储管理单元被配置为使相关的所述数据点的数据被存储在相同的列族中。

    14.  根据权利要求8至12任一项所述的系统,其中所述数据库是Hadoop数据库HBase。

    说明书

    说明书用于管理数据库的方法和系统
    技术领域
    本发明的实施例总体上涉及数据存储技术,更具体地,涉及用于管理数据库的方法和系统。
    背景技术
    时间序列数据(time series data)是指随时间而收集的一系列数据。一般而言,时间序列数据可以根据预定的时间间隔从多个数据监测点(简称“数据点”)被获取。由此,时间序列数据与时间信息和数据点二者相关联。时间序列数据的典型示例之一是电网中的电表数据。这些数据由分布在给定地理区域(例如,街道、社区、城市,等等)中的电表测量,并且被定期存储到例如电力公司的中央数据库中。
    与其他类型的数据相比,时间序列数据的增长速度快。随着时间的增加,每一个数据点都会产生数据导致需要存储的数据总量将急剧增长。另外,由于时间序列数据同时与数据点和时间二者相关联,因此在访问此类数据时需要这两方面的信息。这些特点使传统的关系型数据库不适于时间序列数据的存储。例如,由于关系型数据库的ACID(原子性、一致性、独立性和持久性)要求,大规模的时间序列数据将会导致并发问题(例如死锁)、过于频繁(例如,每秒钟数千次)的SQL操作等各种问题。因此,关系型数据库在查询性能方面无法满足实际需求。
    已经提出了使用面向列的数据库来存储时间序列数据。例如,Hadoop数据库(简称“HBase”)是一种已知的面向列的数据库,并且将在下文作为示例被加以讨论。在HBase中的,数据表(table)中的列被划分到列族(column family)中,每个列族可以包含一个或 多个列。当数据不断增大时,数据表的大小也随之增大。此时,数据表中的数据被划分到多个区域(Region)中存储,每个区域可由相应的称为HRegion的对象管理。在底层Hadoop分布式文件系统(HDFS)中,每个区域中的数据被存储在对应数据节点的一个或多个块(block)中。
    然而,对于时间序列数据而言,HBase等已知的面向列的数据库同样存在数据访问性能方面的缺陷,这将在下文详细讨论。由此,本领域中需要一种用于管理时间序列数据存储的技术方案,以支持对此类数据更加高效和有效的访问。
    发明内容
    对于时间序列数据而言,表的行通常与时间维度相关联。换言之,在同一时间段(例如,同一天、同一个月,等等)获得的数据被存储在数据表的一行中。由此,时间信息可以作为行键(row key)来定位待访问数据所在的行。时间数据序列的数据点信息被用来检索列。也即,与同一数据点相关联的数据被依序存储在给定列族的一个列中。发明人发现:当查询集中在同一行或者少数几行时,这种面向列的数据库能够提供较好的数据访问性能。然而,当用户的查询跨数目较多的行时,数据访问性能将显著下降。
    为了解决上述以及其他潜在问题,本发明提出了一种用于管理时间序列数据的存储的技术方案。
    在本发明的一个方面,提供一种用于管理数据库的方法,所述数据库中的每项数据与时间戳和数据点相关联,所述时间戳被用作所述数据库中的表的行键。所述方法包括:基于用户针对所述数据库的先前数据访问,获取所述用户的行为特征;基于获取的所述行为特征以及所述数据库的系统配置,将所述表中的列划分为列族;以及使所述数据库中的数据至少部分地基于相关联的所述数据点而被存储于相应的列族。
    在本发明的另一方面,一种用于管理数据库的系统,所述数据 库中的每项数据与时间戳和数据点相关联,所述时间戳被用作所述数据库中的表的行键。所述系统包括:行为特征获取单元,被配置为基于用户针对所述数据库的先前数据访问,获取所述用户的行为特征;列族划分单元,被配置为基于获取的所述行为特征以及所述数据库的系统配置,将所述表中的列划分为列族;以及数据存储管理单元,被配置为使所述数据库中的数据至少部分地基于相关联的所述数据点而被存储于相应的列族。
    通过下文描述将会理解,不同于现有技术,根据本发明的实施例,用户在访问时间序列数据中变现出的规律性行为特征被获取,并且被用于配置数据库的存储结构。具体而言,数据库表的列族中包含的列数可以基于用户的时间行为特征和数据库的具体配置而灵活确定。以此方式,能够有效地避免数据访问中的跨块操作,从而显著提升数据访问的性能。本发明的其他特征和优点将通过下文描述而变得容易理解。
    附图说明
    通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显其中:
    图1示出了适于用来实现本发明实施例的示例性计算机系统/服务器的示意性框图;
    图2示出了根据本发明实施例的数据库管理方法的示意性流程图;
    图3示出了根据本发明实施例的将数据库表中的列划分为列族的方法的示意性流程图;
    图4示出了根据本发明实施例的数据库配置的示意图;以及
    图5示出了根据本发明实施例的数据库管理系统的示意性框图。
    在所有附图中,相同或相似的标号被用来表示相同或相似的元素。
    具体实施方式
    下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
    图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的方框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
    如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
    总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
    计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
    系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失 性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
    具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
    计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
    下面将详细描述本发明的实施例。本发明的若干示例性实施例的核心思想之一是:通过对用户访问时间序列数据时的行为特征进行统计,来配置数据库中的表(特别是列族)以便提高数据访问的性能。发明人注意到:对于时间序列数据而言,用户的访问通常涉及特定的时间段(例如,一个月、一年、等等)。由此,通过按照这种时间特性以及数据库的系统配置来配置数据库的表,能够有效 地减少甚至避免数据访问中的跨块数据操作。另外,可选地,还能够减少甚至避免跨区域的数据访问操作。
    特别地,在本公开的上下文中,术语“行”和“列”可以互换使用。具体而言,对于数据库的表而言,它的任何一个维度(横向维度或者纵向维度)可以被定义为行,而另一个维度则可被定义为列。尽管在下文的描述中将会把数据库的横向维度描述为行,而将纵向维度描述为列,但这仅仅是示例性的。换言之,可以在表的纵向维度上定义行,而在横向维度上定义列。
    现在参考图2,其示出了根据本发明实施例的数据库管理方法200的流程图。根据本发明的实施例,方法200所针对的目标数据库是面向列的数据库,例如HBase。而且,所要存储的数据是时间序列数据。换言之,每个数据项都与一个时间戳和一个数据点相关联。例如,时间戳可以指示数据被获取或操作的时间,数据点则可以指示数据的数据源(例如,采集用电量信息的电表)。如已知的,当利用面向列的数据库存储和访问时间序列数据时,数据的时间信息可被用作行键,即数据库表中的行的索引。
    如图2所示,方法200开始之后,在步骤S201,基于用户针对数据库的先前数据访问,获取该用户的行为特征。根据本发明的实施例,可以对给定的一个或多个用户访问数据库中的时间序列数据时的行为进行记录,并且使用任何适当的数据分析方法从中提取具有规律性的行为。
    例如,在某些实施例中,该行为特征可以包括先前数据访问的时间跨度(time span)。作为示例,如果通过统计发现用户通常访问一个月、一年或其他任意长度的时间窗口内的数据,则可以将该时间窗口的长度确定为时间跨度。时间跨度反映了用户在访问时间序列数据时的时间特性,并且可以被用来配置数据库,这将在下文详述。
    备选地或附加地,还可以统计用户通常访问的数据类型,并且由此导出用户通常访问的数据的大小。例如,如果通过统计发现用 户经常访问的是一年内的指定区域内的用电量数据,则可以将用电量数据确定为通常访问的数据类型。而且,由于用电量数据的数据结构是已知的,可以基于确定的数据类型计算出每个数据项的大小。
    请注意,上文的描述的示例仅仅出于说明目的,并非意在限制本发明的范围。根据本发明的实施例,可以获取任何备选的或者附加的用户行为特征。本发明的范围在此方面不受限制。
    接下来,方法200进行到步骤S202,在此基于步骤S201处获取的用户行为特征以及数据库的系统配置,将数据库的表中所包含的列划分为列族。
    在已知的方案中,列族中的列数是由数据库确定的,并且在某些情况下可以动态地扩展。然而,列族的划分仅仅以数据库的配置或者存储的数据量为基础。与此不同,根据本发明的实施例,在列族的划分中不仅考虑了数据库本身的配置,而且还将用户的历史行为特征纳入考虑。
    例如,在某些实施例中,可以将用户的先前数据访问的时间跨度、每个数据项的大小与数据库的配置(例如,块大小)相结合,用以确定每个列族中包含的列的数目。这样,同一列族中的数据可被存储在尽可能少的文件系统块中。以此方式,能够有效地减少甚至消除数据访问时的跨块操作。
    备选地或附加地,在某些实施例中,为了划分列族,可以基于原始的数据库表生成若干逻辑表(logical table)。在此使用的术语“逻辑表”是数据库表中的一个部分。换言之,一个逻辑表由物理数据库表中的特定数目的行和特定数目的列在逻辑上组成。在这样的实施例中,每个逻辑表的宽度(即,包含的列族的数目)可以基于系统的配置而确定,使得同一逻辑表中的数据被存储在尽可能少的区域(region)中。以此方式,可以减少甚至消除数据访问时的跨区域操作。
    步骤S202的若干示例性实施例将在下文参考图3详述。
    继续参考图2,方法200接下来进行到步骤S203,在此使数据 库中的数据至少部分地基于与之关联的数据点,而被存储在相应的列族中。
    例如,如上所述,在面向列的数据库中,与一个数据点相关联的所有数据被存储在数据库表中的一列中。根据本发明的某些实施例,在步骤S203,可以将相关数据点的数据存储在相同列族的不同列中。具体而言,假设列I和列II是同一列族中的两个列,其中列I存储与数据点A相关联的时间序列数据。此时,根据本发明的实施例,可以将与数据点A相关的数据点B的数据存储在列II中。
    根据本发明的实施例,数据点之间的相关性可以通过多种方式来定义。例如,在某些示例实施例中,地理上靠近的两个数据点可以认为是相关的。仍以电表数据为例,可以认为同一社区中的建筑所对应的数据点(电表)是相关的。由此,这些建筑的电表数据可以被存储在相同列族的列中。
    备选地,数据点之间的相关性例如可以基于行政区划、隶属关系等其他各种因素来确定。例如,假设一家机构具有若干分支机构,则可以认为与这些分支机构对应的数据点是相关的,由此将其数据存储在相同列族中,即使这些分支机构在地理上并不相邻。
    使数据基于相关联的数据点而被存储在列族中是有益的。这是因为,当用户访问时间序列数据时,不仅在时间上倾向于具有潜在的规律性(这种规律性可由时间跨度来指示,如上所述),而且在数据点上也是如此。已经发现:用户往往会访问一段时间内针对某些相关数据点的数据,例如某个社区一个月内的电表数据。如下文将会讨论的,在某些实施例中,同一列族中的数据可以被尽可能存储在最小数目的文件系统块中。这样,通过将相关数据点的数据存储在相同的列族,当用户访问相关数据点的数据时,可以有效地减少甚至消除跨块操作。
    另外,还需注意,在步骤S203处执行的操作即包括将新的数据按照本发明实施例的要求存储到数据库中,也包括调整数据库中先前已经存在的数据的存储。实际上,方法200和下文即将描述的方 法300既可在建立数据库时执行,也可以针对已经投入使用的数据库执行,这将在下文详述。
    接下来参考图3,其示出了根据本发明的示例性实施例的用于将数据库表中的列划分到列族中的方法300的流程图。可以理解,方法300是上文针对图2描述的方法200中的步骤S202的一种具体实现。
    在方法300的实施例中,用户的行为特征(在方法200中的步骤S201处获取)至少包括先前数据访问的时间跨度的指示。由此,在方法300的步骤S301,可以基于该时间跨度而从数据库表生成至少一个逻辑表。如上所述,逻辑表是数据库表中的一部分,其在逻辑上包含数据库表中的若干行和列。
    如上文所述,根据本发明的实施例,与时间序列数据相关联的时间信息被用作行键,用于对数据库表中的行进行索引。换言之,数据库的表中的每一行所存储的是在同一时刻或时间段内获取的不同数据点的数据。由此,可以确定数据库表中的多少行在时间上对应于用户行为特征中指示的时间跨度。考虑一个简单的示例,假设存储在数据库中的时间序列数据以一天为间隔获取,并且针对先前数据访问的时间跨度为一周(即,7天),则逻辑表所包含的行数为7行。
    接下来,在步骤S302,确定与数据库相关联的文件系统中的块大小。可以理解,块是数据的物理存储的单位,块的大小是一类数据库配置信息。以HBase系统为例,它与底层的HDFS系统相关联。在实现中,数据库表中的数据被存储在HDFS中的块中。块的大小是可知的。例如,在某些实施例中,块的大小可以由系统确定和配置,例如64M。备选地或附加地,HDFS允许用户指定或调整块的大小。
    方法300继而进行到步骤S303,在此至少部分地基于在步骤S301处确定的逻辑表中的行数以及在步骤S302获得的文件系统中的块大小,来确定每个列族中包含的列的数目。特别地,根据本发 明的实施例,列族以这样的方式来划分,使得位于同一列族中的数据在存储中占用最小数目的块。
    具体而言,假设每个数据项的大小为D,在步骤S301处确定的逻辑表的行数为N,在步骤S302处确定的文件系统的块大小为B。在某些实施例中,每个列族中所包含的列的数目x可以通过求解如下方程来计算:
    D*N*x=B
    根据本发明的实施例,在理想情况下,每个列族中的数据被存储在文件系统的一个块中。如果一个块不足以容纳列族中的所有数据,则可以调整块的大小或逐步递增块的数目。以此方式,可以确保列族中的数据被存储在尽量少的块中。
    这样做是有利的,因为当用户访问同一列族中的数据时,能够有效地减少甚至是消除跨块的数据访问。而且,如上文所述,在本发明的某些实施例中,同一列族中存储的可以是相关的数据点的数据。鉴于用户在访问时间序列数据时在时间和数据点两方面的规律性(也即,用户通常访问一段时间内针对某些相关数据点的数据),本发明的实施例确保每次数据访问请求只需要访问文件系统中的最少数目的块,例如只涉及一个块。以此方式,可以有效地减少甚至消除跨块数据访问,从而显著提高数据库的访问性能,缩短响应时间。
    特别地,根据本发明的实施例,每个数据项的大小D可以是预先定义的,例如由数据库系统设定。备选地,数据项的大小也可以基于所获取的用户行为特征而导出。例如,如上文所述,在某些实施例中,在步骤201处获得的用户行为特征可以指示用户过去经常访问的数据类型。由此,可以假设用户在后续访问中也将访问该数据类型的数据。这样,可以基于该数据类型以及该类型数据的数据结构来确定数据项的大小。
    可选地,在表被划分为逻辑表的实施例中,除了选择逻辑表包括的行数(即,逻辑表的宽度)之外,在某些实施例中,还可以确 定逻辑表的宽度,即一个逻辑表中所包含的列族的数目。在这样的实施例中,在步骤S304,基于与数据表相关联的区域的大小以及在步骤S302处获得的文件系统中的块大小,确定每个逻辑表中所包含的列族的数目。
    具体而言,在面向列的数据库中,随着数据的不断增长,数据表中的数据可被划分到多个不同的区域中存储,这是已知的。例如,在HBase中,表的每个区域由相应的HRegion对象管理。不同的HRegion例如可以分布在相同或者不同的服务器上。可以理解,与跨块的数据访问相类似,跨区域的数据操作同样可能成为数据访问的性能瓶颈。例如,跨区域的数据访问往往会导致跨不同服务器的操作。
    为了解决这一问题,根据本发明的实施例,在步骤S304,可以这样来确定逻辑表所包含的列族的数目,使得逻辑表中的数据占用最小数目的区域。具体而言,数据库表的区域大小可以是数据库预先设定的,例如256M。在某些情况下,区域的大小也可以由用户指定。由于区域的大小和块的大小都是已知的,因此可以确定一个区域中的数据被存储在文件系统中的多少块中。假设,一个区域对应于M个块,M是自然数(例如M=4)。
    同时,如上文所述,当在步骤S303处划分列族时,每个列族的数据所占用的块数已经确定,例如记为C。由此,在某些实施例中,一个逻辑表中包含的列族的数目y可以确定如下:
    y=M/C
    特别地,在理想情况下(当C=1时),每个列族中的列被存储在一个块中。此时,逻辑表所包含的列族数目恰好等于M。
    注意,步骤S304是可选的。例如,在某些实施例中,逻辑表的宽度可以等于数据库表的原始宽度。本发明的范围在此方面不受限制。
    接下来,方法300进行到步骤S305,在此维护用于数据库表的 索引。请注意,在此使用的术语“维护”即包括创建索引,也包括随后更新索引。例如,在某些实施例中,索引可被实现为独立于数据库表的索引表。该索引表的每个表项用于将数据点映射至相应的逻辑表和列族。具体而言,在某些实施例中,索引表可以使用数据点ID作为行键。当用户要访问给定时间段内针对一个或多个特定位置的数据时,数据访问命令中所包含目标位置的数据点ID被用来检索索引表,以定位相应的索引条目。索引条目转而确定与该数据点ID对应的逻辑表的标识以及列族的标识。
    请注意,上文参考图2和图3描述的方法200和300可以在数据库的初始设置时执行。此时,数据库在被建立之初即按照本发明的实施例所提出的方案被配置。这样,可以在随后的使用中提供高效、准确的时间序列数据访问。备选地或附加地,上述方法也可以在数据库被投入使用之后在工作状态中动态地执行。例如,对用户行为特征的获取和分析(步骤S201)以及后续操作可以在数据库操作的同时进行。一旦发生用户的行为特征发生变化,则可以相应地重新配置数据库。
    参考图4,其示出了根据本发明的实施例的数据库配置400的框图。在此实施例中,根据方法300从数据库表生成多个逻辑表401-1到401-N(统称为“逻辑表401”)。如上所述,每个逻辑表401所包含的行402的数目可以根据用户行为特征中所指示的先前时间访问的时间跨度来确定。而且,列族403中包含的列404的数目可以基于用户行为特征和系统配置而确定,以使得列族404中的数据占用的文件系统块的数目被最小化。可选地,逻辑表401中包含的列族403的数目同样可以基于系统配置生成,以使得逻辑表401中的数据所占用的区域的数目最小化。
    而且,如图4所示,维护有独立于数据库表的索引表405。在索引表中,每个索引条目406至少具有“数据点ID”字段以及“逻辑表ID和列族ID”字段。当接收到数据访问命令时,该命令中包含的数据点ID被用作行键,从而确定存储该数据点的数据的逻辑表401 的标识和列族404的标识。注意,在逻辑表中,仍然使用数据访问命令中的时间信息作为行键。
    参考图5,其示出了根据本发明的实施例的用于管理数据库的系统500的框图。如上所述,所述数据库中的每项数据与时间戳和数据点相关联,所述时间戳被用作所述数据库中的表的行键。
    如图所示,系统500包括:行为特征获取单元501,被配置为基于用户针对所述数据库的先前数据访问,获取所述用户的行为特征;列族划分单元502,被配置为基于获取的所述行为特征以及所述数据库的系统配置,将所述表中的列划分为列族;以及数据存储管理单元503,被配置为使所述数据库中的数据至少部分地基于相关联的所述数据点而被存储于相应的列族。
    在某些实施例中,所述行为特征指示所述先前数据访问的时间跨度,并且所述系统配置指示与所述数据库相关联的文件系统中的块的大小。在这样的实施例中,所述列族划分单元502可以包括:逻辑表生成单元,被配置为从所述表生成至少一个逻辑表,所述至少一个逻辑表的行数基于所述时间跨度来确定;以及列数确定单元,被配置为至少部分地基于所述至少一个逻辑表的所述行数和所述块的所述大小来确定每个所述列族中包含的列数,使得所述列族中的数据占用的所述块的数目最小。
    而且,在某些实施例中,所述行为特征还指示所述先前数据访问的数据类型。此时,每个所述列族中包含的所述列数还基于所述数据类型来确定。备选地或附加地,所述数据库的所述表中的数据可被划分到多个区域中存储。相应地,系统500还可以包括:列族数目确定单元,被配置为基于所述区域的大小和所述块的大小,来确定所述至少一个逻辑表中包含的所述列族的数目,使得所述至少一个逻辑表中的数据占用的所述区域的数目最小。备选地或附加地,系统500还可以包括索引表维护单元,被配置为维护用于所述数据库中的所述表的索引,所述索引将所述数据点的标识映射至所述至少一个逻辑表和所述列族。
    在某些实施例中,所述数据存储管理单元503可被配置为使相关数据点的数据被存储在相同的列族中。而且,在某些实施例中,目标数据库可以是HBase。
    请注意,为清晰起见,图5中没有示出系统500所包括的可选单元或者子单元。然而应当理解,上文所描述的所有特征和操作分别适用于系统500,故在此不再赘述。而且,系统500中的单元或子单元的划分不是限制性的而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实现。本发明的范围在此方面不受限制。
    而且,系统500所包含的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。例如,在某些实施方式中,系统500可以利用软件和/或固件来实现。备选地或附加地,系统500可以部分地或者完全地基于硬件来实现。例如,系统500中的一个或多个单元可以实现为集成电路(IC)芯片、专用集成电路(ASIC)、片上系统(SOC)、现场可编程门阵列(FPGA),等等。本发明的范围在此方面不受限制。
    本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
    计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可 读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
    这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
    用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
    这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流 程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
    这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
    也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
    附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
    以上已经描述了本发明的各实施例,上述说明是示例性的,并 非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

    关 键  词:
    用于 管理 数据库 方法 系统
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:用于管理数据库的方法和系统.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6371803.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1