一种数据存储方法和协调节点与流程

文档序号:12596302阅读:334来源:国知局
本发明实施例涉及数据信息管理
技术领域
:,尤其涉及一种数据存储方法和协调节点。
背景技术
::现有技术中,通常将不同领域的数据存储到不同的数据库中,以实现对数据的管理。不同的数据库组成分布式数据管理系统。分布式数据管理系统中包含至少一个协调节点(CoordinateNode,简称CN),至少一个数据节点(DataNode,简称DN)。任一协调节点和任一数据节点之间可通信,任两个数据节点之间也可通信。协调节点中包含全局优化查询器,全局优化查询器将各个数据表按照某种规则对数据表进行分区或分片。比如,将数据表中一个列或多个列作为该数据表的分布键的列,进而根据将数据根据一个分布键的列的哈希值进行分区或分片。将分区或分片之后的数据表中的数据根据一个分布键分别存储在多个不同的数据节点中,使每一个数据节点中存储的数据量得到均衡分配。每个数据节点可以根据全局优化查询器的指令管理和操作自身的存储的数据。由于数据库中涵盖的数据表种类比较多,因此在各个数据节点中存储的数据中,各个数据表作为分布键的列可能相同,也可能不同。在分布式数据管理系统中,用户登录客户端,连接数据库,向协调节点发出数据查询命令,协调节点的全局优化查询器接收到数据查询命令,并对数据查询命令进行解析,生成数据查询计划,并将生成的数据查询计划分发到每个数据节点。每个数据节点在接收到数据查询计划后,进行数据查询。有关联(join)的相关数据表的分布键相同,则相关联数据就可在相同节点内部进行关联,并 将关联操作之后的结果发送至协调节点,从而能够较好提高数据查询效率。由于现有技术中存储数据的方法,使用户在进行数据查询的过程中,往往要重新分布数据节点中存储的数据,即数据查询过程中,多个数据节点之间需要进行数据的传输以及数据与分布键重新关联,降低了数据查询的效率,增加了网络的负担。可见,由于现有的数据存储方法导致用户在查询所存储的数据时,以非分布键进行查询的概率加大,导致各个数据节点之间大量的数据传输,为查询过程带来了不必要的开销,如此不足以满足当前高效率查询的需求。技术实现要素:本发明实施例提供一种数据存储方法和协调节点,用于有效存储数据,以便匹配当前高效率查询的需求。本发明实施例提供一种数据存储方法,包括以下步骤:协调节点CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应多个分布键中的至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的多个分布键中的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询 操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。可选地,CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,包括:CN根据多个分布键,向一个数据节点发送数据和数据节点的存储区标识,存储区标识被数据节点用于将数据存储在数据节点的公共存储区。如此,避免了将该数据在一个数据节点的多个分布键中的每个分布键上均存储该数据,将数据存储于一个数据节点的公共存储区,节省了数据存储空间,减轻了网络负荷。可选地,CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,包括:CN根据多个分布键,向多个数据节点发送数据和多个数据节点各自对应的存储区标识,多个数据节点各自对应的存储区标识被多个数据节点中的每一个数据节点用于将数据分别存储在每一个数据节点的至少一个存储区,至少一个存储区为每一个数据节点对应的至少一个分布键各自的私有存储区。如此,则在查询数据时,可根据所查询的分布键,准确的确定出数据在数据节点上的存储位置,进而提高了数据查询效率。可选地,还包括:经过预设时长,CN获取数据表标识对应的至少一条历史查询记录;其中,每条历史查询记录中包括关联键,关联键表示历史查询记录中查询数据所使用的关键词;CN根据至少一条历史查询记录,确定出至少一条历史查询记录中出现频率大于阈值的至少一个关联键;CN将确定出的至少一个关联键作为数据表标识对应的至少一个新的分布键;CN根据至少一个新的分布键,更新数据表标识与分布键的对应关系。由于根据历史查询记录确定出用户查询数据时所使用的关键词,进而将确定出的关键词作为新的分布键,之后,进一步提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。本发明实施例提供一种协调节点,包括:确定单元,用于根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;发送单元,用于根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应多个分布键中的至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的多个分布键中的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。可选地,发送单元,具体用于:根据多个分布键,向一个数据节点发送数据和数据节点的存储区标识,存储区标识被数据节点用于将数据存储在数据节点的公共存储区。如此,避免了将该数据在一个数据节点的多个分布键中的每个分布键上均存储该数据,将数据存储于一个数据节点的公共存储区,节省了数据存储空间, 减轻了网络负荷。可选地,发送单元,具体用于:根据多个分布键,向多个数据节点发送数据和多个数据节点各自对应的存储区标识,多个数据节点各自对应的存储区标识被多个数据节点中的每一个数据节点用于将数据分别存储在每一个数据节点的至少一个存储区,至少一个存储区为每一个数据节点对应的至少一个分布键各自的私有存储区。如此,则在查询数据时,可根据所查询的分布键,准确的确定出数据在数据节点上的存储位置,进而提高了数据查询效率。可选地,还包括处理单元,用于:经过预设时长,获取数据表标识对应的至少一条历史查询记录;其中,每条历史查询记录中包括关联键,关联键表示历史查询记录中查询数据所使用的关键词;根据至少一条历史查询记录,确定出至少一条历史查询记录中出现频率大于阈值的至少一个关联键;将确定出的至少一个关联键作为数据表标识对应的至少一个新的分布键;根据至少一个新的分布键,更新数据表标识与分布键的对应关系。由于根据历史查询记录确定出用户查询数据时所使用的关键词,进而将确定出的关键词作为新的分布键,之后,进一步提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。本发明实施例提供一种协调节点,包括:存储器,用于存储数据表标识与多个分布键的对应关系,并向处理器提供数据表标识与多个分布键的对应关系;处理器,用于根据获取的一条数据对应的数据表标识,通过存储器确定出数据表标识对应的多个分布键;以及用于根据多个分布键,通过收发器向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应多个分布键中的至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的多个分布键中的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区;收发器,用于向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。可选地,处理器,具体用于:根据多个分布键,通过收发器向一个数据节点发送数据和数据节点的存储区标识,存储区标识被数据节点用于将数据存储在数据节点的公共存储区;相应的,收发器具体用于向一个数据节点发送数据和数据节点的存储区标识。如此,避免了将该数据在一个数据节点的多个分布键中的每个分布键上均存储该数据,将数据存储于一个数据节点的公共存储区,节省了数据存储空间,减轻了网络负荷。可选地,处理器,具体用于:根据多个分布键,通过收发器向多个数据节点发送数据和多个数据节点各自对应的存储区标识,多个数据节点各自对应的存储区标识被多个数据节点中 的每一个数据节点用于将数据分别存储在每一个数据节点的至少一个存储区,至少一个存储区为每一个数据节点对应的至少一个分布键各自的私有存储区;相应的,收发器具体用于向多个数据节点发送数据和多个数据节点各自对应的存储区标识。如此,则在查询数据时,可根据所查询的分布键,准确的确定出数据在数据节点上的存储位置,进而提高了数据查询效率。可选地,处理器,还用于:经过预设时长,获取数据表标识对应的至少一条历史查询记录;其中,每条历史查询记录中包括关联键,关联键表示历史查询记录中查询数据所使用的关键词;根据至少一条历史查询记录,确定出至少一条历史查询记录中出现频率大于阈值的至少一个关联键;将确定出的至少一个关联键作为数据表标识对应的至少一个新的分布键;根据至少一个新的分布键,更新存储器中存储的数据表标识与分布键的对应关系。由于根据历史查询记录确定出用户查询数据时所使用的关键词,进而将确定出的关键词作为新的分布键,之后,进一步提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。本发明实施例中,CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个 数据节点的存储区。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率,与当前高效率查询的需求相匹配。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例适用的分布式数据管理系统架构示意图;图2为本发明实施例提供的在协调节点侧实现的一种数据管理方法的流程示意图;图2a为本发明实施例适用的一种数据节点内部数据存储的结构示意图;图2b为本发明实施例对数据节点中的数据进行查询时的查询方法示意图;图3为本发明实施例提供的一种协调节点的的结构示意图;图4为本发明实施例提供的另一种协调节点的的结构示意图。具体实施方式为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例中的标识,用于标识一个对象,对象可以是:数据表、存储区,比如本发明实施例中的数据表标识、存储区标识等。一个标识可包括名称、编号、ID(Identification)中的至少一项,只要能够将被标识的对象与其他对象区别开即可。本发明实施例中数据表表示由对应同一组分布键的一组数据所组成的表,一个数据表标识所对应的所有数据均对应同一组分布键,该同一组分布键中包括多个分布键。图1示例性示出了本发明实施例适用的分布式数据管理系统架构示意图。如图1所示,该系统中包含至少一个协调节点102,至少一个数据节点101。任一协调节点102和任一数据节点101之间可通信,任两个数据节点101之间也可通信。用户通过网络设备103输入数据,协调节点102与网络设备103之间交互,从网络设备中获取数据等信息。协调节点对一条或多条数据中一个列或多个列作为该数据表的分布键,进而根据该分布键对该一条或多条数据进行哈希,得到每条数据对应的哈希值,根据该哈希值,将每条数据存储于数据节点中,从而使每一个数据节点中存储的数据量得到均衡分配。现有技术中,数据都以一个分布键进行存储。举个例子,比如,表A的分布键为aa,表B的分布键为aa,表C的分布键为bb。当对表A和表B中的数据进行A.aa=B.aa的等值关联时,表A和表B的关联键均为aa,即表A和表B均在分布键aa上进行关联,因此,表A和表B在同一个节点内即可做关联。当对表B和表C进行B.bb=C.aa的等值关联时,表B的关联键为bb,表C的关联键为aa,由于表B和表C的分布键均与其关联键不同,因此,数据节点将对表C以关联键aa进行重新分布,同时对表B以关联键bb进行重新分布,以便实现可在同一个节点内做关联的目的。基于上述描述可看出,现有技术中,由于数据仅仅是根据一个分布键进行存储,此时,用户查询数据时所使用的关键词为该数据对应的分布键的概率较小,用户在非分布键上做关联等查询操作的机率非常大,从而各个节点之间进 行数据重分布的机率也较大,可见,使用现有技术中将数据以一个分布键进行存储,之后对数据进行查询的过程中网络开销较大,资源耗用较多,且查询效率较低。基于上述描述,以及图1所示的系统架构,图2示出了本发明实施例提供的在CN侧实现的一种数据存储方法的流程示意图,包括以下步骤:步骤201,协调节点CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;步骤202,CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应多个分布键中的至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的多个分布键中的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。其中,至少一个数据节点中的每个数据节点对应多个分布键中的至少一个分布键。举例来说,存在第一数据节点、第二数据节点、第三数据节点和第四数据节点,第一分布键对应第一数据节点和第二数据节点,即,数据按第一分布键进行存储时,可存储于第一数据节点或第二数据节点;第二分布键可对应第二数据节点和第三数据节点,即,数据按第二分布键进行存储时,可存储于 第二数据节点或第三数据节点。至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的多个分布键中的至少一个分布键。一种可选地实施方式为,至少一个数据节点中每个数据节点的存储区标识为每个数据节点对应的多个分布键中的至少一个分布键,另一种可选的实施方式为,至少一个数据节点中每个数据节点的存储区标识为:每个数据节点对应的多个分布键中的至少一个分布键对应的存储区的标识。举例来说,分布键为“班级”,则可将数据节点的存储区划分为至少一个区域,其中存在一个分布键为“班级”所对应的存储区,分布键为“班级”所对应的存储区的标识可为“001”等能够标识出该存储区的标识,或者分布键为“班级”所对应的存储区的标识为分布键“班级”。上述步骤201之前,用户通过创建表格(createtable)的结构化查询语句(StructuredQueryLanguage,简称SQL)语句建数据表,数据表对应一个数据表标识,进而为所创建的数据表指定多个分布键,并将数据标识对应的分布键的信息存储于CN中,或者存储于CN连接的其它设备中,以使CN能够从CN所连接的其它设备中获取数据标识对应的分布键的信息。可选地,CN中预设有数据表标识与分布键的对应关系。一种可选的实施方式为,CN根据SQL语句将数据表标识与分布键的对应关系预先存储于CN中,一个数据表标识可对应一个或多个分布键,一个数据表标识对应的多个分布键是不同的,其中,任一个分布键可为该数据表标识对应的数据的多个列中的任一列或任几列的组合。本发明实施例对此不做限制,以下内容仅以一个数据为例进行介绍。具体实施中,用户通过系统为用户提供界面录入一条或多条数据,每条数据均包括多列,用户将数据录入系统之后,CN会实时或者周期性的获取用户所录入系统的数据,或者通过插入(insert)语句插入数据,也可以通过复制(copy)命令或其它工具批量导入数据。无论通过用户录入、插入还是导入的数据,CN均将所获取的数据按条进行处理,且CN可获取每一条数据所应存储的数据表的标识,即CN可确定出一条数据对应的数据表标识。CN获取到一条数据之后, 确定出该条数据对应的数据表标识,以及该数据表标识对应的多个分布键,根据该分布键对该数据进行存储。上述步骤202中,根据多个分布键中的每个分布键,确定出的数据根据每个分布键所应存储的数据节点。可选地,根据该数据对应的数据表标识对应的每个分布键,根据该分布键对数据进行哈希,得到该数据对应的哈希值,并根据确定出的哈希值确定该数据应该存储的数据节点。本发明实施例可有多种实现方式,本发明实施例中提供以下几种可选地实施方式。方式一,若根据多个分布键确定出的数据应存储的数据节点为同一个,则CN根据多个分布键,向一个数据节点发送数据和数据节点的存储区标识,存储区标识被数据节点用于将数据存储在数据节点的公共存储区。可选地,若根据多个分布键确定出的数据应存储的数据节点为多个,则CN根据多个分布键,向多个数据节点发送数据和多个数据节点各自对应的存储区标识;其中,多个数据节点各自对应的存储区标识被多个数据节点中的每一个数据节点用于将数据分别存储在每一个数据节点的至少一个存储区,至少一个存储区为每一个数据节点对应的至少一个分布键各自的私有存储区。方式二,针对多个分布键中的每个分布键,根据该分布键确定出数据应存储的数据节点,以及该数据在该数据节点对应的存储区标识,CN将数据和数据在该数据节点对应的存储区标识发送给该数据节点;其中,存储区标识为该分布键对应的私有存储区的标识,数据节点根据该存储区标识,将数据存储于该分布键对应的私有存储区;若依次根据所有的分布键将数据均存储于同一个节点上,则将该数据存储于该数据节点的所有分布键均对应的公共存储区,并将该数据节点上其它存储区所存储的该数据删除。图2a示例性示出了本发明实施例适用的一种数据节点内部数据存储的结构示意图。如图2a所示,一个协调节点2101连接三个数据节点,分别为数据节点1、数据节点2、数据节点3。该三个数据节点中的每个数据节点中的数据存储结构类似,以数据节点1为例进行介绍,当数据节点1所储存的数据表标识 对应的分布键为N个时,分别为分布键1、分布键2、…、分布键N,其中,N为大于1的整数,数据节点1内部包括(N+1)个存储区,分别为分布键1对应的私有存储区2102、分布键2对应的私有存储区2103、…、分布键N对应的私有存储区2104,以及一个所有分布键均对应的公共存储区2105。结合上述方式一举例,CN获取到一条数据之后,获取该条数据对应的数据表标识,根据预设的数据表标识与分布键的对应关系,以及获取的该条数据对应的数据表标识,确定出数据表标识对应的多个分布键。根据多个分布键中的每个分布键,确定出的数据应存储的数据节点。若根据多个分布键确定出的数据应存储的数据节点为同一个,则CN根据多个分布键,向该确定出的一个数据节点发送数据和数据节点的存储区标识,此时,数据节点的存储区标识为该数据节点上与所有多个分布键均对应的公共存储区的标识。比如,对数据根据分布键1进行哈希,并得到哈希值之后,根据该哈希值确定出该数据应存储在数据节点1中;对数据根据分布键2进行哈希,根据得到的哈希值确定出该数据应存储在数据节点1中;对数据根据N个分布键中的每个分布键均进行哈希,确定出对数据根据N个分布键中的每个分布键进行哈希时,该数据均应存储在数据节点1中。此时,CN将该数据以及数据节点1的公共存储区的标识发送给数据节点1,以使数据节点1将该数据存储在数据节点1的公共存储区。若根据多个分布键确定出的数据应存储的数据节点为多个,则CN根据多个分布键,向多个数据节点发送数据和多个数据节点各自对应的存储区标识。比如,当N为4时,对数据根据分布键1进行哈希,根据得到的哈希值确定出该数据应存储在数据节点1中,对数据根据分布键2进行哈希,根据得到的哈希值确定出该数据应存储在数据节点2中,对数据根据分布键3进行哈希,根据得到的哈希值确定出该数据应存储在数据节点3中,对数据根据分布键4进行哈希,根据得到的哈希值确定出该数据应存储在数据节点1中。此时,CN向数据节点1发送数据,以及分布键1对应的私有存储区的标识、分布键4对应的 私有存储区的标识,以使数据节点1将该数据存储在数据节点1的分布键1对应的私有存储区,而且也将该数据也存储在数据节点1的分布键4对应的私有存储区;CN向数据节点2发送数据,以及分布键2对应的私有存储区的标识,以使数据节点2并将该数据存储在数据节点2的分布键2对应的私有存储区;CN向数据节点3发送数据,以及分布键3对应的私有存储区的标识,以使数据节点3将该数据存储在数据节点3的分布键3对应的私有存储区。上述方式二中,具体以N为4举例。比如,将数据根据分布键1进行哈希,并得到哈希值之后,根据该哈希值确定出该数据应存储在数据节点1中,此时,CN向数据节点1发送数据,以及分布键1对应的私有存储区的标识,以使数据节点1将该数据存储在数据节点1中分布键1对应的私有存储区。根据分布键2确定出该数据应存储在数据节点1中,此时,CN向数据节点1发送数据,以及分布键1对应的私有存储区的标识,以使数据节点1将该数据存储在数据节点1中分布键2对应的私有存储区。根据分布键3确定出该数据应存储在数据节点1中,此时,CN向数据节点1发送数据,以及分布键1对应的私有存储区的标识,以使数据节点1将该数据存储在数据节点1中分布键3对应的私有存储区。根据分布键4确定出该数据应存储在数据节点1中,此时,CN向数据节点1发送数据,以及分布键1对应的私有存储区的标识,以使数据节点1将该数据存储在数据节点1中分布键4对应的私有存储区。此时,确定根据四个分布键确定出的数据应存储的数据节点为同一个时,均为数据节点1,则将数据存储在该数据节点1中的公共存储区,并删除该数据节点中分布键1对应的私有存储区所存储的该数据、删除分布键2对应的私有存储区所存储的该数据、删除分布键3对应的私有存储区所存储的该数据,以及删除分布键4对应的私有存储区所存储的该数据。另一个示例中,将数据根据分布键1进行哈希,并得到哈希值之后,根据该哈希值确定出该数据应存储在数据节点1中,此时,CN向数据节点1发送数据,以及分布键1对应的私有存储区的标识,以使数据节点1将该数据存储在 数据节点1中分布键1对应的私有存储区。根据分布键2确定出该数据应存储在数据节点2中,此时,CN向数据节点2发送数据,以及分布键2对应的私有存储区的标识,以使数据节点2将该数据存储在数据节点2中分布键2对应的私有存储区。根据分布键3确定出该数据应存储在数据节点3中,此时,CN向数据节点3发送数据,以及分布键3对应的私有存储区的标识,以使数据节点3将该数据存储在数据节点3中分布键3对应的私有存储区。根据分布键4确定出该数据应存储在数据节点1中,此时,CN向数据节点1发送数据,以及分布键4对应的私有存储区的标识,以使数据节点1将该数据存储在数据节点1中分布键4对应的私有存储区。此时,确定根据四个分布键确定出的数据应存储的数据节点为多个,分布为数据节点1、数据节点2和数据节点3。可选地,在初始设置数据表标识对应的分布键时,可为该数据表标识对应设置一个分布键,也可设置多个分布键,本领域技术人员可根据经验进行设置。可选地,经过预设时长,比如几周或几个月,经过预设时长,CN获取数据表标识对应的至少一条历史查询记录;其中,每条历史查询记录中包括关联键,关联键表示历史查询记录中查询数据所使用的关键词;CN根据至少一条历史查询记录,确定出至少一条历史查询记录中出现频率大于阈值的至少一个关联键;CN将确定出的至少一个关联键作为数据表标识对应的至少一个新的分布键;CN根据至少一个新的分布键,更新数据表标识与分布键的对应关系。具体来说,历史查询记录中包括等值关联条件,等值关联条件中包括关联键。举个例子,为一个数据表标识对应设置分布键A,之后经过预设时长,获取了五条历史查询记录,历史查询记录可为SQL语句。此时查找历史查询记录中的等值关联条件,确定出关联键,并将出现的关联键作为新的分布键。可选地,确定关联键B的出现频率大于阈值,则将该关联键B设置为新的分布键,更新预设的数据表标识与分布键的对应关系,更新后,该数据表标识对应分布键B。可选地,CN通过接收到的用户发出的命令,或者CN自动以该更新后的分布键B对数据节点中的数据进行重新分布。也有一种可能的实现方式为,数 据表标识原来对应的是分布键A,对历史查询记录进行分析后,发现关联键A、关联键B和关联键C的出现频率均大于阈值,此时,将关联键A、关联键B和关联键C均设置为新的分布键,更新后的数据表标识与分布键的对应关系为,该数据表标识对应分布键A、分布键B和分布键C。CN以该更新后的分布键B和分布键C对数据节点中的数据进行重新分布。重新分布的过程具体为CN向各个数据节点发送重新分布命令,各个节点依据该新的分布键B和分布键C判断自身存储的数据哪些是自己的,哪些是属于其它数据节点的,并将属于其它的数据节点存储的数据发送给其它数据节点。比如,数据节点1确定出自身存储的一条数据应存储于数据节点4中,则数据节点1将该数据发送给数据节点4,数据节点4接收该数据并存储。对数据以分布键A、分布键B和分布键C对数据表TB_SVC_SUBS_HIST做数据分布的SQL语句可为:createtableTB_SVC_SUBS_HIST(…)distributeby(分布键A),(分布键B),(分布键C)通过上述方法对数据进行管理之后,用户在查询时,登录客户端,连接数据库,发出数据查询命令。CN的全局优化查询器接收到数据查询命令,并将数据查询命令进行解析,生成数据查询计划,并将生成的数据查询计划分发到每个数据节点,每个数据节点在接收到数据查询计划后,进行数据查询。针对任一数据节点,该数据节点对于接收到的数据查询计划,进行哈希运算,根据哈希运算得到的结果,确定该数据所存储的位置,比如数据节点1确定出该数据在分布键1对应的私有存储区,在分布键4对应的私有存储区,或者在该数据节点的所有分布键均对应的公共存储区等。进而在该确定出的该数据所存储的位置扫描出数据。本发明实施例中,由于每个数据对应的数据表标识可对应多个分布键,因此查询计划中所查询的关联键为分布键的机率较大,待关联的数据在相同的数据节点的机率也加大,如果确定出两个数据存储在相同的数据节点,则在每个 存储数据的数据节点内,对数据进行关联操作,每个数据节点将得到的关联结果发送给CN,CN将关联结果整理合并后,将查询到的数据返回给客户端,呈现给用户。如果确定出两个数据存储在不同的数据节点,则数据节点之间进行数据传输,以使两个数据存储在相同的数据节点内。图2b示意性示出了本发明实施例对数据节点中的数据进行查询时的查询方法示意图。如图2b所示,数据1以分布键A和分布B在数据节点1、数据节点2中存储,数据2以分布键A分布,数据3以分布键B分布。当用户需要以分布键A对数据1和数据2进行关联时,以分布键B对数据1和数据3进行关联,则以数据节点1为例,数据节点1查询数据节点1中分布键A对应的私有存储区和公共存储区,在数据节点1内对数据1和数据2进行关联;数据节点1查询数据节点1中分布键B对应的私有存储区和公共存储区,在数据节点1内对数据1和数据3进行关联。数据节点2和数据节点3均执行上述类似方法流程,在此不再赘述。对数据1和数据2以分布键A进行关联的SQL语句如下,数据1为TB_SVC-SUBS-HIST,数据2为DIL-BILL,分布键A为SUBS-ID:Selectcount(*)fromTB_SVC-SUBS-HISTJOINDIL-BILLonTB_SVC-SUBS-HISTSUBS-ID=DIL-BILLSUBS-ID对数据1和数据3以分布键B进行关联的SQL语句如下,数据1为TB_SVC-SUBS-HIST,数据3为GPRS-CDR,分布键B为MSISDN:Selectcount(*)fromTB_SVC-SUBS-HISTJOINGPRS-CDRonTB_SVC-SUBS-HISTMSISDN=GPRS-CDRMSISDN从上述内容可看出:本发明实施例中,CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的至少一个分布键,至少一个 数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。图3示例性示出了本发明实施例提供的一种协调节点的结构示意图。基于相同构思,本发明实施例提供的一种协调节点300,用于执行上述方法流程,如图3所示,包括确定单元301、发送单元302,可选地,还包括处理单元303:确定单元,用于根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;发送单元,用于根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应多个分布键中的至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的多个分布键中的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区。可选地,发送单元,具体用于:根据多个分布键,向一个数据节点发送数据和数据节点的存储区标识,存储区标识被数据节点用于将数据存储在数据节点的公共存储区。可选地,发送单元,具体用于:根据多个分布键,向多个数据节点发送数据和多个数据节点各自对应的存储区标识,多个数据节点各自对应的存储区标识被多个数据节点中的每一个数据节点用于将数据分别存储在每一个数据节点的至少一个存储区,至少一个存储区为每一个数据节点对应的至少一个分布键各自的私有存储区。可选地,还包括处理单元,用于:经过预设时长,获取数据表标识对应的至少一条历史查询记录;其中,每条历史查询记录中包括关联键,关联键表示历史查询记录中查询数据所使用的关键词;根据至少一条历史查询记录,确定出至少一条历史查询记录中出现频率大于阈值的至少一个关联键;将确定出的至少一个关联键作为数据表标识对应的至少一个新的分布键;根据至少一个新的分布键,更新数据表标识与分布键的对应关系。从上述内容可看出:本发明实施例中,CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。图4示例性示出了本发明实施例提供的另一种协调节点的结构示意图。基于相同构思,本发明实施例提供的一种协调节点400,用于执行上述方法流程,如图4所示,包括处理器401、收发器403、存储器402:存储器,用于存储数据表标识与多个分布键的对应关系、指令,以及处理器在执行指令过程中的相关数据,并向处理器提供数据表标识与多个分布键的对应关系和指令;处理器,用于读取存储器中的指令,执行下列过程:根据获取的一条数据对应的数据表标识,通过存储器确定出数据表标识对应的多个分布键;以及用于根据多个分布键,通过收发器向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应多个分布键中的至少一个分布键,至少一个数据节点中每个数据节点的存储区标识表示每个数据节点对应的多个分布键中的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区;收发器,用于向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识。可选地,收发器还用于向另一个协调节点发送信令和数据、接收另一个协调节点发送的信令和数据,以及向数据节点信令,接收数据节点发送的数据等等。可选地,处理器,具体用于:根据多个分布键,通过收发器向一个数据节点发送数据和数据节点的存储区标识,存储区标识被数据节点用于将数据存储在数据节点的公共存储区;相应的,收发器具体用于向一个数据节点发送数据和数据节点的存储区标识。可选地,处理器,具体用于:根据多个分布键,通过收发器向多个数据节点发送数据和多个数据节点各自对应的存储区标识,多个数据节点各自对应的存储区标识被多个数据节点中的每一个数据节点用于将数据分别存储在每一个数据节点的至少一个存储区,至少一个存储区为每一个数据节点对应的至少一个分布键各自的私有存储区;相应的,收发器具体用于向多个数据节点发送数据和多个数据节点各自对应的存储区标识。可选地,处理器,还用于:经过预设时长,获取数据表标识对应的至少一条历史查询记录;其中,每条历史查询记录中包括关联键,关联键表示历史查询记录中查询数据所使用的关键词;根据至少一条历史查询记录,确定出至少一条历史查询记录中出现频率大于阈值的至少一个关联键;将确定出的至少一个关联键作为数据表标识对应的至少一个新的分布键;根据至少一个新的分布键,更新存储器中存储的数据表标识与分布键的对应关系。其中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器代表的一个或多个处理器和存储器代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发器可以是多个元件,即包括发送机和收发器,提供用于在传输介质上与各种其他装置通信的单元。处理器负责管理总线架构和通常的处理,存储器可以存储处理器在执行操作时所使用的数据。从上述内容可看出:本发明实施例中,CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键;CN根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,其中,至少一个数据节点中的每个数据节点对应至少一个分布键,至少一个数据节点中每 个数据节点的存储区标识表示每个数据节点对应的至少一个分布键,至少一个数据节点各自对应的存储区标识被至少一个数据节点中的每一个数据节点用于将数据存储在每一个数据节点的存储区。由于CN根据获取的一条数据对应的数据表标识,确定出数据表标识对应的多个分布键,并根据多个分布键,向至少一个数据节点发送数据和至少一个数据节点各自对应的存储区标识,进而可使一条数据按多个分布键进行存储,通过该有效的数据存储方法,增加了数据对应的分布键,进而提高了用户查询数据时所使用的关键词为分布键的概率,降低了用户在非分布键上做关联等查询操作的机率,从而降低了各个节点之间进行数据重分布的机率,进而降低了开销以及网络和内容等资源的耗用,提高了数据查询效率。本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流 程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1