著录项信息
专利名称 | 一种进行数据存储和检索的方法及装置 |
申请号 | CN201280001730.2 | 申请日期 | 2012-09-04 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-06-25 | 公开/公告号 | CN103891244A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 曹莉;吴向阳 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明公开了一种进行数据存储和检索的方法及装置,涉及信息处理领域,能够实现了需要进行全文检索的数据和不需要进行全文检索的数据在并行数据库中的分布式存储,降低了存储冗余度;同时,能够实现在并行数据库下对待检索数据的全文检索和结构化检索,提高了检索效率。本发明包括:控制节点在并行数据库系统架构中,对需要进行全文检索的数据和不需要进行全文检索的数据分别存储与不同类型的数据节点上;以及根据客户端发送的检索请求,向不同类型的数据节点发送不同类型的检索指令,实现了检索执行节点可以根据不同的检索执行指令同时对待检索数据进行不同类型的检索。本发明实施例主要应用于数据存储和检索的过程中。
1.一种进行数据存储的方法,其特征在于,所述方法应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;所述方法包括:
所述控制节点接收客户端发送的数据存储请求;
根据所述数据存储请求创建数据表;
根据所述数据表的元数据确定所述数据表的全文检索字段;
根据所述全文检索字段,向所述全文检索数据节点发送第一数据存储指令;所述第一数据存储指令用于指示所述全文检索数据节点存储所述全文检索字段对应的数据;
根据所述数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据表的元数据确定所述数据表的全文检索字段,具体包括:
如果所述数据表的字段存储的数据超过所述字段的最大长度,则确定所述字段为全文检索字段;或者,
如果所述数据表中有根据索引字段中的关键字进行检索时,则确定所述字段为全文检索字段。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
在根据所述数据表的元数据确定所述数据表的全文检索字段之前,将所述数据表按行切分;
则根据所述数据表的元数据确定所述数据表的全文检索字段,具体包括:
对每行需要存储的数据,根据所述数据表的元数据确定所述每行的全文检索字段。
4.根据权利要求1所述的方法,其特征在于,所述第一数据存储指令用于指示所述全文检索数据节点存储所述全文检索字段对应的数据,具体包括:
指示所述全文检索数据节点为所述全文检索字段创建索引或者更新所述全文检索数据节点存储的索引。
5.一种进行数据检索的方法,其特征在于,应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;
所述方法包括:
所述控制节点接收客户端发送的检索请求;
根据所述检索请求,确定待检索字段和待检索数据表;
获取待检索数据表的元数据,并根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段;
根据所述待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令,所述第一检索指令用于指示所述全文检索数据节点检索所述待检索字段中的全文检索字段对应的数据;
根据所述待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令,所述第二检索指令用于指示所述底层数据库节点检索所述待检索字段中全文检索字段以外的其它字段对应的数据;
接收全文检索数据节点和底层数据库节点各自返回的检索结果,并将全文检索数据节点和底层数据库节点各自返回的检索结果进行汇聚处理,将汇聚结果作为完整的检索结果返回给所述客户端。
6.根据权利要求5所述的方法,其特征在于,所述根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段包括:
如果所述待检索字段中存在至少一个字段在所述待检索数据表中存储的数据超过所述至少一个字段的最大长度,则确定所述至少一个字段为全文检索字段;或者,如果所述待检索字段中有需要根据索引字段中的关键字进行检索的字段时,则确定所述需要根据索引字段中的关键字进行检索的字段为全文检索字段。
7.一种用于进行数据存储的控制节点,其特征在于,应用于并行数据库系统中,所述并行数据库系统包括所述控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;所述控制节点包括:
接收单元,用于接收客户端发送的数据存储请求;
创建单元,用于根据所述接收单元接收到的数据存储请求创建数据表;
确定单元,用于根据所述创建单元创建的数据表的元数据确定所述数据表的全文检索字段;
发送单元,用于根据所述确定单元确定的全文检索字段,向所述全文检索数据节点发送第一数据存储指令;所述第一数据存储指令用于指示所述全文检索数据节点存储所述全文检索字段对应的数据;根据所述确定单元确定的数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。
8.根据权利要求7所述的控制节点,其特征在于,所述确定单元具体用于在所述数据表的字段存储的数据超过所述字段的最大长度时,确定所述字段为全文检索字段;在所述数据表中有根据索引字段中的关键字进行检索时,确定所述字段为全文检索字段。
9.根据权利要求7或8所述的控制节点,其特征在于,所述控制节点还包括:
切分单元,用于在所述确定单元根据所述数据表的元数据确定所述数据表的全文检索字段之前,将所述数据表按行切分;
所述确定单元,还用于对每行需要存储的数据,根据所述数据表的元数据确定所述每行的全文检索字段。
10.根据权利要求7所述的控制节点,其特征在于,所述第一数据存储指令用于指示所述全文检索数据节点存储所述全文检索字段对应的数据,具体包括:指示所述全文检索数据节点为所述全文检索字段创建索引或者更新所述全文检索数据节点存储的索引。
11.一种用于进行数据检索的控制节点,其特征在于,应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;所述控制节点包括:
接收单元,用于接收客户端发送的检索请求;
获取单元,用于根据所述接收单元接收到的检索请求,获取待检索字段和待检索数据表;
确定单元,用于根据所述检索请求,确定待检索字段和待检索数据表;根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段;
发送单元,用于根据所述确定单元确定的待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令,所述第一检索指令用于指示所述全文检索数据节点检索所述待检索字段中的全文检索字段对应的数据;根据所述确定单元确定的待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令,所述第二检索指令用于指示所述底层数据库节点检索所述待检索字段中全文检索字段以外的其它字段对应的数据;
接收单元,用于接收全文检索数据节点和底层数据库节点各自返回的检索结果;
汇聚单元,用于将所述接收单元接收到的全文检索数据节点和底层数据库节点各自返回的检索结果进行汇聚处理;所述发送单元,还用于将汇聚结果作为完整的检索结果返回给所述客户端。
12.根据权利要求11所述的控制节点,其特征在于,所述确定单元具体用于在所述待检索字段中存在至少一个字段在所述待检索数据表中存储的数据超过所述至少一个字段的最大长度,确定所述至少一个字段为全文检索字段;在所述待检索字段中有需要根据索引字段中的关键字进行检索的字段时,确定所述需要根据索引字段中的关键字进行检索的字段为全文检索字段。
一种进行数据存储和检索的方法及装置\n技术领域\n[0001] 本发明涉及信息处理领域,尤其涉及一种进行数据存储和检索的方法及装置。\n背景技术\n[0002] 不同的应用存在不同的数据检索需求。对于不同应用的不同的数据检索需求,现有的技术方案是使用结构化检索语言SQL对结构化数据进行检索,使用现有的全文检索引擎对非结构化数据进行全文检索。但是,有一些应用需要对数据中的一部分信息进行结构化检索,并对该数据中的另一部分信息进行全文检索之后,才能得到想要的结果。现有技术提供的技术方案是通过将待检索的数据向发送到SQL检索系统中进行结构化检索,并将待检索的数据发送至全文检索引擎的系统中进行全文检索,然后对着两个独立的检索系统得到的检索结果进行整合,当需要让全文检索引擎对大量的待检索数据进行检索时,全文检索过程中会产生比待检索数据多得多的数据,极大地降低了全文检索效率,从而降低了整个检索过程的检索效率。\n发明内容\n[0003] 本发明的实施例提供一种进行数据存储和检索的方法及装置,实现了需要进行全文检索的数据和不需要进行全文检索的数据在并行数据库中的分布式存储,降低了存储冗余度;同时,能够实现在并行数据库下对待检索数据的全文检索和结构化检索,提高了检索效率。\n[0004] 为达到上述目的,本发明的实施例采用如下技术方案:\n[0005] 一种进行数据存储的方法,其特征在于,所述方法应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;所述方法包括:\n[0006] 所述控制节点接收客户端发送的数据存储请求;\n[0007] 根据所述数据存储请求创建数据表;\n[0008] 根据所述数据表的元数据确定所述数据表的全文检索字段;\n[0009] 根据所述全文检索字段,向所述全文检索数据节点发送第一数据存储指令;所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据;\n[0010] 根据所述数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。\n[0011] 一种进行数据检索的方法,其特征在于,应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;所述方法包括:\n[0012] 所述控制节点接收客户端发送的检索请求;\n[0013] 根据所述检索请求,确定待检索字段和待检索数据表;\n[0014] 获取待检索数据表的元数据,并根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段;\n[0015] 根据所述待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令,所述第一检索指令用于指示所述全文检索数据节点检索所述待检索字段中的全文检索字段对应的数据;\n[0016] 根据所述待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令,所述第二检索指令用于指示所述底层数据库节点检索所述待检索字段中全文检索字段以外的其它字段对应的数据;\n[0017] 接收全文检索数据节点和底层数据库节点各自返回的检索结果,并将全文检索数据节点和底层数据库节点各自返回的检索结果进行汇聚处理,将汇聚结果作为完整的检索结果返回给所述客户端。\n[0018] 一种用于进行数据存储的控制节点,其特征在于,应用于并行数据库系统中,所述并行数据库系统包括所述控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;所述控制节点包括:\n[0019] 接收单元,用于接收客户端发送的数据存储请求;\n[0020] 创建单元,用于根据所述接收单元接收到的数据存储请求创建数据表;\n[0021] 确定单元,用于根据所述创建单元创建的数据表的元数据确定所述数据表的全文检索字段;\n[0022] 发送单元,用于根据所述确定单元确定的全文检索字段,向所述全文检索数据节点发送第一数据存储指令;所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据;根据所述确定单元确定的数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。\n[0023] 一种用于进行数据检索的控制节点,其特征在于,应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;所述控制节点包括:\n[0024] 接收单元,用于接收客户端发送的检索请求;\n[0025] 获取单元,用于根据所述接收单元接收到的检索请求,获取待检索字段和待检索数据表;\n[0026] 确定单元,用于根据所述检索请求,确定待检索字段和待检索数据表;根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段;\n[0027] 发送单元,用于根据所述确定单元确定的待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令,所述第一检索指令用于指示所述全文检索数据节点检索所述待检索字段中的全文检索字段对应的数据;根据所述确定单元确定的待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令,所述第二检索指令用于指示所述底层数据库节点检索所述待检索字段中全文检索字段以外的其它字段对应的数据;\n[0028] 接收单元,用于接收全文检索数据节点和底层数据库节点各自返回的检索结果;\n[0029] 汇聚单元,用于将所述接收单元接收到的全文检索数据节点和底层数据库节点各自返回的检索结果进行汇聚处理;\n[0030] 所述发送单元,还用于将汇聚结果作为完整的检索结果返回给所述客户端。\n[0031] 本发明实施例提供的一种进行数据存储和检索的方法及装置,可以在并行数据库系统架构中,对需要进行全文检索的数据和不需要进行全文检索的数据分别存储与不同类型的数据节点上,实现了对数据的分布式存储,相对于现有技术的统一存储方式来说,降低了数据存储的冗余度;同时,根据客户端发送的检索请求,向不同类型的数据节点发送不同类型的检索指令,实现了检索执行节点可以根据不同的检索执行指令同时对待检索数据进行不同类型的检索。与现有技术提供的方法相比,本发明实施例提供的方法在同一个系统中同时提供了全文检索能力和结构化检索能力,不需要使用两个独立的检索系统进行检索,从而简化了检索步骤,提高的检索效率。\n附图说明\n[0032] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0033] 图1为本发明实施例1中的一种进行数据存储的方法流程图;\n[0034] 图2为本发明实施例1中的一种进行数据检索的方法流程图;\n[0035] 图3为本发明实施例2中的一种进行数据存储的方法流程图;\n[0036] 图4为本发明实施例2中的另一种进行数据存储的方法流程图;\n[0037] 图5为本发明实施例3中的一种进行数据检索的方法流程图;\n[0038] 图6为本发明实施例4中的一种用于进行数据存储的控制节点的组成框图;\n[0039] 图7为本发明实施例4中的另一种用于进行数据存储的控制节点的组成框图;\n[0040] 图8为本发明实施例4中的一种用于进行数据检索的控制节点的组成框图;\n[0041] 图9为本发明实施例5中的一种用于进行数据存储的控制节点的组成框图;\n[0042] 图10为本发明实施例5中的一种用于进行数据检索的控制节点的组成框图。\n具体实施方式\n[0043] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0044] 实施例1\n[0045] 本发明实施例提供了一种进行数据存储和检索的方法,其特征在于,所述方法应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点。\n[0046] 其中,所述数据节点包括全文检索数据节点和底层数据库节点,所述全文检索数据节点用于存储需要进行全文检索字段对应的数据,并针对自身存储的数据进行全文检索;所述底层数据库节点用于存储不需要进行全文检索字段对应的数据,并针对自身存储的数据进行结构化检索。\n[0047] 在此并行数据库系统架构中,所述全文检索数据节点和底层数据库节点可以由如下两种分布方式:\n[0048] 第一种分布方式:将所有的全文检索数据节点都设置在一个池中,将所述的底层数据库节点都设置在另一个池中,这两个池在逻辑上是独立的,物理上可以分别部署在两个设备,也可以集成在同一个设备上。在这种方式下,设置有全文检索数据节点的池存储需要进行全文检索的数据,设置有底层数据库节点的池存储不需要进行全文检索的数据。\n[0049] 第二种分布方式:将一个全文检索数据节点与一个底层数据库节点作为一对节点,共同设置在同一个数据检索节点上。这个数据检索节点只包括一个全文检索数据节点与一个底层数据库节点,并且不同的数据检索节点设置不同的全文检索数据节点与底层数据库节点。在这种方式下,每个数据检索节点内部存储不同的数据。在同一个数据检索节点中,全文检索数据节点存储需要进行全文检索的数据,底层数据库节点存储不需要进行全文检索的数据,并且,在同一个数据检索节点中的全文检索数据节点和底层数据库节点存储的数据需要对应相同的分布键值等具有标识功能的信息。\n[0050] 基于上述并行数据库系统架构,本发明实施例提供了一种进行数据存储的方法,该方法可以由控制节点实现,如图1所示,该方法包括:\n[0051] 101、接收客户端发送的数据存储请求。\n[0052] 102、根据所述数据存储请求创建数据表。\n[0053] 其中,所述数据表可以使用结构化数据存储形式来表示,其中存储的内容由客户端提供。下表1为数据表的一个实施例的具体结构。\n[0054] 表1数据表的结构\n[0055]\n[0056] 其中,Name、Provider和Summary均为字段名称,与各字段对应的各列中存储的就是各个字段各自对应的数据。\n[0057] 103、根据所述数据表的元数据确定所述数据表的全文检索字段。\n[0058] 其中,所述元数据用于指示数据表的所有字段中哪些是全文检索字段,哪些不是全文检索字段。元数据的表现形式可以具体设置在数据表内,标识每个字段存储的数据是否超过其字段的最大长度,或者,将元数据设置为一个与数据表对应的,但设置在数据表外独立存储的数据表。元数据可以设置为用“0”“1”或者“yes”“no”等组合表示方法来表示哪些需要进行全文检索哪些不需要,例如,“0”则表示不需要,“1”则表示需要;或者,“no”则表示不需要,“yes”则表示需要。\n[0059] 其中,所述根据所述数据表的元数据确定所述数据表的全文检索字段可以通过以下两种方法实现,具体包括:\n[0060] 第一种方法:如果所述数据表的字段存储的数据超过所述字段的最大长度,则确定所述字段为全文检索字段。\n[0061] 第二中方法:如果所述数据表中有根据索引字段中的关键字进行检索时,则确定所述字段为全文检索字段。\n[0062] 其中,所述第一种方法是由控制节点对各字段存储的数据长度进行统计,并与各字段的最大长度进行比较,来确定全文检索字段和非全文检索字段,并由控制节点对各字段的类型进行标识。\n[0063] 第二种方法是索引字段中的关键字由客户端进行标识的,而控制节点仅用于存储这些标识,并识别这些标记的含义。例如,客户端设置索引字段为“value”,并当“value=0”时对应不需要进行全文检索的字段,当“value=1”时,对应需要进行全文检索的字段。则控制节点就按照这一对应关系来识别各个字段。\n[0064] 104、根据所述全文检索字段,向所述全文检索数据节点发送第一数据存储指令;\n所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据。\n[0065] 其中,所述第一数据存储指令具体用于指示所述全文检索数据节点为所述全文检索字段创建索引或者更新所述全文检索数据节点存储的索引。\n[0066] 105、根据所述数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。\n[0067] 其中,所述第二数据存储指令具体用于指示底层数据库节点进行结构化数据存储。\n[0068] 基于上述并行数据库系统架构,本发明实施例提供了一种进行数据检索的方法,该方法由控制节点实现,如图2所示,该方法包括;\n[0069] 201、接收客户端发送的检索请求。\n[0070] 其中,所述检索请求可以为SQL规定的标准查询语句,例如“Selectid,name from A where comment Like‘roman’group by name”,该语句意思为从表A中查询“comment”包含“roman”对应的id和name,并用name进行排序。\n[0071] 202、根据所述检索请求,确定待检索字段和待检索数据表。\n[0072] 203、获取待检索数据表的元数据,并根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段。\n[0073] 其中,所述根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段的实现可以通过以下两种方法实现,具体包括:\n[0074] 第一种方法:如果所述待检索字段中存在至少一个字段在所述待检索数据表中存储的数据超过所述至少一个字段的最大长度,则确定所述至少一个字段为全文检索字段。\n[0075] 第二种方法,如果所述待检索字段中有需要根据索引字段中的关键字进行检索的字段时,则确定所述需要根据索引字段中的关键字进行检索的字段为全文检索字段。\n[0076] 值得说明的是,第一种方法和第二种方法对于全文检索字段的识别,与上述步骤\n103中记载的如何标记全文检索字段的方法是对应的。\n[0077] 204、根据所述待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令,所述第一检索指令用于指示所述全文检索数据节点检索所述待检索字段中的全文检索字段对应的数据。\n[0078] 205、根据所述待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令,所述第二检索指令用于指示所述底层数据库节点检索所述待检索字段中全文检索字段以外的其它字段对应的数据。\n[0079] 其中,这里的第一检索指令,是指全文检索数据节点接收到搜索请求后,针对请求中的搜索关键字,扫描倒排索引表的过程。该检索指令主要包含了以下信息:\n[0080] 1)当前使用的分词器类型,例如WhitespaceAnalyzer、StandardAnalyzer、SimpleAnalyzer、ChineseAnalyzer等。\n[0081] 2)此次请求中携带的关键字,例如对于q=″what is search engine″而言,关键字就是search,engine,而″what″,″is″以停用词方式被过滤。\n[0082] 3)是否进行拼写检查,例如对于“aplle”,如果进行拼写检查,则系统校正为″apple″\n[0083] 4)是否包含同义词,例如对于″爸爸″,如果包含同义词,则系统将增加″爹″,″干爹″进行搜索。\n[0084] 5)搜索命中得分计算,这个值的大小,决定检索结果的排序。\n[0085] 这里的第二检索指令是指对一个特定的查询数据库要执行的一系列操作的集合,执行指令的每一步描述了一个特定的数据库操作如tablescan,join,aggregation,sort等。\n[0086] 一个完整的数据库检索指令,主要包括以下信息:\n[0087] 1)Cost:数据被检索时,对系统资源消耗的评估;\n[0088] 2)rows:检索返回结果的总行数的评估。反映了估计任何WHERE子句条件的选择性。\n[0089] 3)width:检索返回的总行数的总字节数的评估,反映满足检索条件的数据集大小。\n[0090] 206、接收全文检索数据节点和底层数据库节点各自返回的检索结果。\n[0091] 207、将全文检索数据节点和底层数据库节点各自返回的检索结果进行汇聚处理。\n[0092] 其中,所述对各个数据节点返回的检索结果进行汇聚处理的实现方法可以为:根据一个特定的字段进行等值连接。例如,如下表2、3、4所示,表2表示在全文检索数据节点得到的检索结果为id字段值为2、3;表3底层数据库节点得到的检索结果为id字段值为1、2、3以及对应的Name字段的信息,则可根据id字段的值,将id字段值为2、3的检索结果合并到一个表中,如表4所示。\n[0093] 表2全文检索节点检索结果\n[0094]\nId\n3\n2\n[0095] 表3底层数据库节点检索结果\n[0096]\nId Name\n1 Notorious\n2 Titanic\n3 Gift\n[0097] 表4完整的检索结果\n[0098]\nid name\n3 Gift\n2 Titanic\n[0099] 需要说明的是,在本实施例中,结合以上述表2、3、4描述的汇聚处理方法仅是一种示例。\n[0100] 208、将汇聚结果作为完整的检索结果返回给所述客户端。\n[0101] 本发明实施例提供的一种进行数据存储和检索的方法,可以在并行数据库系统架构中,对需要进行全文检索的数据和不需要进行全文检索的数据分别存储与不同类型的数据节点上,实现了对数据的分布式存储,相对于现有技术的统一存储方式来说,降低了数据存储的冗余度;同时,根据客户端发送的检索请求,向不同类型的数据节点发送不同类型的检索指令,实现了检索执行节点可以根据不同的检索执行指令同时对待检索数据进行不同类型的检索。与现有技术提供的方法相比,本发明实施例提供的方法在同一个系统中同时提供了全文检索能力和结构化检索能力,不需要使用两个独立的检索系统进行检索,从而简化了检索步骤,提高的检索效率。\n[0102] 实施例2\n[0103] 基于实施例1中描述的全文检索数据节点和底层数据库节点的第一种分布方式,本发明实施例提供了一种进行数据存储的方法,该方法有控制节点实现,如图3所示,该方法包括:\n[0104] 301、接收客户端发送的数据存储请求。\n[0105] 302、根据所述数据存储请求创建数据表。\n[0106] 其中,所述数据表的有关描述与所述步骤102中的有关描述相同,本发明实施例对此不再赘述。\n[0107] 303、根据所述数据表的元数据确定所述数据表的全文检索字段。\n[0108] 其中,所述元数据的有关描述以及实现根据所述数据表的元数据确定所述数据表的全文检索字段的方法与上述步骤103中的有关描述相同,本发明实施例对此不再赘述。\n[0109] 304、根据所述全文检索字段,向所述全文检索数据节点发送第一数据存储指令;\n所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据。\n[0110] 305、根据所述数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。\n[0111] 进一步,值得说明的是,此处记载的步骤304和305在执行顺序上不要求明显的先后顺序。\n[0112] 进一步,值得说明的是,在执行上述步骤303的过程中,若确定无需要全文检索的字段则只执行步骤305即可。若确定全部都需要进行全文检索字段时,则只执行步骤304即可。\n[0113] 另外,值得说明的是,在客户端数量比较大,待存储的数据量比较大时,在如实施例1中所述的并行数据库系统框架中会设置有数据加载服务器,包括全文检索数据加载服务器和底层数据库加载服务器。其中,所述全文检索数据加载服务器用于在控制节点的控制下,将数据表中需要进行全文检索字段对应的数据加载到全文检索数据节点,以使得全文检索数据节点存储相应数据;底层数据库加载服务器用于在控制节点的控制下,将数据表中不需要进行全文检索字段对应的数据加载到底层数据库节点,以使得底层数据库节点存储相应数据。\n[0114] 此时,所述步骤304的具体步骤则包括:控制节点将数据表按列切分,将需要全文检索的列字段划分到一起,然后根据划分好的字段生成相应的数据加载任务发送至全文检索数据加载服务器中,全文检索数据加载服务器根据预设置的分布策略,将需要全文检索的列字段对应的数据分配给不同的全文检索数据节点进行存储。\n[0115] 其中,所述全文检索数据加载任务,是将应用的非结构化数据或需要支持全文检索的数据存储到全文检索服务器的过程,通常是指创建倒排索引的过程。如果是结构化数据,则直接通过分词、过滤、创建倒排索引表,否则还包含数据信息提取过程。全文检索的数据加载没有严格的行业标准,通常对外开放私有的API,完成数据索引的创建。\n[0116] 其中,预设置的分布策略可以设置为不同的数据节点存储不同地区的信息,例如,节点1存储北京的信息,节点2存储上海的信息等。分布策略可根据实际需要进行设置,本发明实施例对此不进行限制。\n[0117] 同样的,而所述步骤305的具体步骤则包括:控制节点将数据表按列切分,将不需要全文检索的列字段划分到一起,然后根据划分好的字段生成相应的数据加载任务发送至底层数据加载数据库加载服务器中,底层数据库加载服务器根据预设置的分布策略,将不需要全文检索的列字段对应的数据分配给不同的底层数据库节点进行存储。\n[0118] 其中,底层数据库数据加载任务,是通过标准的SQL加载语句COPY FROM完成应用的具体数据在底层数据库的存储,例如:\n[0119] COPY tableA FROM′/opt/data/datainfo.tbl′DELIMITERS′|′;\n[0120] 其中,tableA表示需要加载的数据表,/opt/data/datainfo.tbl表示待加载数据的具体路径,′|′表示一行数据的多个字段之间的分隔符。具体参见SQL标准99。如果在创建表的过程中创建了索引,则在数据加载的过程中,同时还需要完成数据表的索引生成。\n[0121] 另外,值得说明的是,为保证全文检索数据节点的检索结果和底层数据库节点的检索结果能够进行合并,在进行数据加载任务生成的过程中,还需要确定哪些字段是主钥匙字段,即master key字段,这些字段用于表示存储在不同的节点内的数据之间的关联关系。具体在进行数据存储时,全文检索数据节点除了要存储需要全文检索的字段对应的数据,还必须存储主钥匙字段对应的数据,底层数据库节点的存储方法类似。\n[0122] 本发明实施例还提供了一种进行数据存储的方法,该方法应用于如实施例中描述的全文检索数据节点和底层数据库节点的第二种分布方式中,如图4所示,在此方法中,在所述步骤303根据所述数据表的元数据确定所述数据表的全文检索字段之前,还包括步骤\n306将所述数据表按行切分;则所述步骤303根据所述数据表的元数据确定所述数据表的全文检索字段可由下述步骤307替换,所述步骤307为对每行需要存储的数据,根据所述数据表的元数据确定所述每行的全文检索字段。其它步骤的执行与本实施例中基于全文检索数据节点和底层数据库节点的第一种分布方式对应的进行数据存储的方法相同。\n[0123] 本发明实施例提供的一种进行数据存储的方法,可以在并行数据库系统架构中,对需要进行全文检索的数据和不需要进行全文检索的数据分别存储与不同类型的数据节点上,实现了对数据的分布式存储,相对于现有技术的统一存储方式来说,降低了数据存储的冗余度。\n[0124] 实施例3\n[0125] 在本实施例中,控制节点创建的数据表以如下表5所示的数据表来表示,该数据表表名为A,共有三个不同的字段id、name、comment,其中,id为masterkey字段,comment字段需要全文检索。id字段和name字段存储在底层数据库节点中,id字段和comment字段存储在全文检索节点中。\n[0126] 表5待检索数据表\n[0127]\n[0128] 基于该待检索数据表,本发明实施例提供的进行数据检索的方法,如图5所示,包括:\n[0129] 401、控制节点接收客户端发送的检索请求。在本实施例中,该检索请求对应的语句为Select id,name from A where comment Like‘roman’group byname,该语句意思为从表A中查询“comment”包含“roman”对应的id和name,并用name进行排序。\n[0130] 402、控制节点根据所述检索请求,确定待检索字段和待检索数据表。\n[0131] 403、控制节点获取待检索数据表的元数据,并根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段。\n[0132] 404、控制节点根据所述待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令。\n[0133] 405、控制节点根据所述待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令。\n[0134] 406、全文检索数据节点根据所述第一检索指令,对全文检索数据节点内存储的待检索数据进行检索,得到全文检索节点检索结果。\n[0135] 407、底层数据库节点根据所述第二检索指令,对底层数据库节点存储的待检索数据进行检索,得到底层数据库节点检索结果。\n[0136] 在本实施例中,全文检索节点检索结果如下表6所示,底层数据库节点检索结果如下表7所示。\n[0137] 表6全文检索节点检索结果\n[0138]\nId\n3\n2\n[0139] 表7底层数据库节点检索结果\n[0140]\nId Name\n1 Notorious\n2 Titanic\n3 Gift\n[0141] 408、控制节点接收全文检索数据节点发送的全文检索节点检索结果和底层数据库节点发送的底层数据库节点检索结果。\n[0142] 409、控制节点对接收到的全文检索节点发送的全文检索节点检索结果和底层数据库节点发送的底层数据库节点检索结果进行汇聚处理,得到完整的检索结果。在本实施例中,此处得到的完整检索结果如下表8所示。\n[0143] 表8完整的检索结果\n[0144]\nid name\n3 Gift\n2 Titanic\n[0145] 410、控制节点将所述完整的的检索结果发送至客户端。\n[0146] 需要说明的是,上述表6至表8所述的检索结果是基于实施例1中描述的第一种分布方式产生的检索结果,即全文检索节点对应的池返回给控制节点一个全文检索结果,底层数据库节点对应的池返回给控制节点一个底层数据检索结果,由控制节点对这两类检索结果进行汇聚处理。\n[0147] 若基于实施例1中描述的第二种分布方式,则每个数据检索节点都会返回自己的检索结果若设置有数据检索节点1、数据检索节点2和数据检索节点3,每个数据检索节点中各有一个全文检索数据节点和一个底层数据库节点,则三个数据检索节点的检索结果可以如下表9至表11所示。\n[0148] 表9数据检索节点1检索结果:\n[0149]\nid name\nnull null\n[0150] 表10数据检索节点2检索结果:\n[0151]\nid name\n2 Titanic\n[0152] 表11数据检索节点3检索结果:\n[0153]\nid name\n3 Gift\n[0154] 此时,控制节点在接收到这三个数据检索节点发送的检索结果后,会对这三个检索结果进行汇聚处理得到完整的检索结果。检索结果与上述表8一样。\n[0155] 本发明实施例提供的一种进行数据检索的方法,可以在并行数据库系统架构中,根据客户端发送的检索请求,向不同类型的数据节点发送不同类型的检索指令,实现了检索执行节点可以根据不同的检索执行指令同时对待检索数据进行不同类型的检索。与现有技术提供的方法相比,本发明实施例提供的方法在同一个系统中同时提供了全文检索能力和结构化检索能力,不需要使用两个独立的检索系统进行检索,从而简化了检索步骤,提高的检索效率。\n[0156] 实施例4\n[0157] 本发明实施例提供了一种用于进行数据存储的控制节点,可以应用于并行数据库系统中,所述并行数据库系统包括所述控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;如图6所示,所述控制节点包括:接收单元51、创建单元52、确定单元53、发送单元54。\n[0158] 接收单元51,用于接收客户端发送的数据存储请求。\n[0159] 创建单元52,用于根据所述接收单元51接收到的数据存储请求创建数据表[0160] 确定单元53,用于根据所述创建单元52创建的数据表的元数据确定所述数据表的全文检索字段。\n[0161] 发送单元54,用于根据所述确定单元53确定的全文检索字段,向所述全文检索数据节点发送第一数据存储指令;所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据;根据所述确定单元53确定的数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。\n[0162] 可选的是,所述确定单元53具体用于在所述数据表的字段存储的数据超过所述字段的最大长度时,确定所述字段为全文检索字段;在所述数据表中有根据索引字段中的关键字进行检索时,确定所述字段为全文检索字段。\n[0163] 可选的是,如图7所示,所述控制节点还包括:切分单元55。\n[0164] 切分单元55,用于在所述确定单元53根据所述数据表的元数据确定所述数据表的全文检索字段之前,将所述数据表按行切分。\n[0165] 所述确定单元53,还用于对每行需要存储的数据,根据所述数据表的元数据确定所述每行的全文检索字段。\n[0166] 可选的是,所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据,具体包括:指示所述全文检索数据节点为所述全文检索字段创建索引或者更新所述全文检索数据节点存储的索引。\n[0167] 本发明实施例还提供了一种用于进行数据检索的控制节点,可以应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;如图8所示,所述控制节点包括:接收单元61、获取单元62、确定单元63、发送单元64、接收单元65、汇聚单元66。\n[0168] 接收单元61,用于接收客户端发送的检索请求。\n[0169] 获取单元62,用于根据所述接收单元61接收到的检索请求,获取待检索字段和待检索数据表。\n[0170] 确定单元63,用于根据所述检索请求,确定待检索字段和待检索数据表;根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段。\n[0171] 发送单元64,用于根据所述确定单元63确定的待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令,所述第一检索指令用于指示所述全文检索数据节点检索所述待检索字段中的全文检索字段对应的数据;根据所述确定单元63确定的待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令,所述第二检索指令用于指示所述底层数据库节点检索所述待检索字段中全文检索字段以外的其它字段对应的数据。\n[0172] 接收单元65,用于接收全文检索数据节点和底层数据库节点各自返回的检索结果。\n[0173] 汇聚单元66,用于将所述接收单元65接收到的全文检索数据节点和底层数据库节点各自返回的检索结果进行汇聚处理。\n[0174] 所述发送单元64,还用于将汇聚结果作为完整的检索结果返回给所述客户端。\n[0175] 可选的是,所述确定单元63具体用于在所述待检索字段中存在至少一个字段在所述待检索数据表中存储的数据超过所述至少一个字段的最大长度,确定所述至少一个字段为全文检索字段;在所述待检索字段中有需要根据索引字段中的关键字进行检索的字段时,确定所述需要根据索引字段中的关键字进行检索的字段为全文检索字段。\n[0176] 本发明实施例提供的一种进行数据存储和检索的装置,可以在并行数据库系统架构中,对需要进行全文检索的数据和不需要进行全文检索的数据分别存储与不同类型的数据节点上,实现了对数据的分布式存储,相对于现有技术的统一存储方式来说,降低了数据存储的冗余度;同时,根据客户端发送的检索请求,向不同类型的数据节点发送不同类型的检索指令,实现了检索执行节点可以根据不同的检索执行指令同时对待检索数据进行不同类型的检索。与现有技术提供的方法相比,本发明实施例提供的方法在同一个系统中同时提供了全文检索能力和结构化检索能力,不需要使用两个独立的检索系统进行检索,从而简化了检索步骤,提高的检索效率。\n[0177] 实施例5\n[0178] 本发明实施例提供了一种用于进行数据存储的控制节点,可以应用于并行数据库系统中,所述并行数据库系统包括所述控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点;如图9所示,所述控制节点包括:处理器71、存储器72。\n[0179] 处理器71,用于接收客户端发送的数据存储请求;根据所述数据存储请求创建数据表;根据所述数据表的元数据确定所述数据表的全文检索字段;根据所述全文检索字段,向所述全文检索数据节点发送第一数据存储指令;所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据;根据所述数据表全文检索字段以外的字段,向所述底层数据库节点发送第二数据存储指令;所述第二数据存储指令用于指示所述底层数据库节点存储所述数据表全文检索字段以外的其他字段对应的数据。\n[0180] 存储器72,用于存储数据存储请求、数据表的元数据、第一数据存储指令和第二数据存储指令。\n[0181] 可选的是,所述处理器71具体用于在所述数据表的字段存储的数据超过所述字段的最大长度时,确定所述字段为全文检索字段;在所述数据表中有根据索引字段中的关键字进行检索时,确定所述字段为全文检索字段。\n[0182] 可选的是,所述处理器还用于在根据所述数据表的元数据确定所述数据表的全文检索字段之前,将所述数据表按行切分。对每行需要存储的数据,根据所述数据表的元数据确定所述每行的全文检索字段。\n[0183] 可选的是,所述第一数据存储指令用于指示所述将所述全文检索数据节点存储所述全文检索字段对应的数据,具体包括:指示所述全文检索数据节点为所述全文检索字段创建索引或者更新所述全文检索数据节点存储的索引。\n[0184] 本发明实施例还提供了一种用于进行数据检索的控制节点,可以应用于并行数据库系统中,所述并行数据库系统包括控制节点和数据节点;所述数据节点包括全文检索数据节点和底层数据库节点如图10所示,所述控制节点包括:处理器73和存储器74。\n[0185] 所述处理器73,用于接收客户端发送的检索请求;根据所述检索请求,确定待检索字段和待检索数据表;获取待检索数据表的元数据,并根据所述待检索数据表的元数据,确定所述待检索字段中的全文检索字段;根据所述待检索字段中的全文检索字段,向所述全文检索数据节点发送第一检索指令,所述第一检索指令用于指示所述全文检索数据节点检索所述待检索字段中的全文检索字段对应的数据;根据所述待检索字段中全文检索字段以外的其它字段,向所述底层数据库节点发送第二检索指令,所述第二检索指令用于指示所述底层数据库节点检索所述待检索字段中全文检索字段以外的其它字段对应的数据;接收全文检索数据节点和底层数据库节点各自返回的检索结果,并将全文检索数据节点和底层数据库节点各自返回的检索结果进行汇聚处理,将汇聚结果作为完整的检索结果返回给所述客户端。\n[0186] 所述存储器74,用于存储检索请求、所述待检索数据表的元数据、第一检索指令、第二检索指令和检索结果.\n[0187] 可选的是,所述处理器73具体用于在所述待检索字段中存在至少一个字段在所述待检索数据表中存储的数据超过所述至少一个字段的最大长度,确定所述至少一个字段为全文检索字段;在所述待检索字段中有需要根据索引字段中的关键字进行检索的字段时,确定所述需要根据索引字段中的关键字进行检索的字段为全文检索字段。\n[0188] 本发明实施例提供的一种进行数据存储和检索的装置,可以在并行数据库系统架构中,对需要进行全文检索的数据和不需要进行全文检索的数据分别存储与不同类型的数据节点上,实现了对数据的分布式存储,相对于现有技术的统一存储方式来说,降低了数据存储的冗余度;同时,根据客户端发送的检索请求,向不同类型的数据节点发送不同类型的检索指令,实现了检索执行节点可以根据不同的检索执行指令同时对待检索数据进行不同类型的检索。与现有技术提供的方法相比,本发明实施例提供的方法在同一个系统中同时提供了全文检索能力和结构化检索能力,不需要使用两个独立的检索系统进行检索,从而简化了检索步骤,提高的检索效率。\n[0189] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。\n[0190] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
法律信息
- 2022-03-01
专利权的转移
登记生效日: 2022.02.17
专利权人由华为技术有限公司变更为华为云计算技术有限公司
地址由518129 广东省深圳市龙岗区坂田华为总部办公楼变更为550025 贵州省贵阳市贵安新区黔中大道交兴功路华为云数据中心
- 2016-11-16
- 2014-07-16
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201280001730.2
申请日: 2012.09.04
- 2014-06-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-12-15
|
2010-08-17
| | |
2
| |
2011-04-20
|
2010-12-20
| | |
3
| |
2010-11-24
|
2010-06-28
| | |
4
| |
2007-06-27
|
2005-12-23
| | |
5
| | 暂无 |
1996-06-18
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |