用于对关系数据库表进行交叉列搜索的方法和系统与流程

文档序号:13744936阅读:200来源:国知局
本示范性实施例涉及在关系数据库管理系统中进行搜索,并且更具体地涉及在关系数据库管理系统中进行搜索的方法,其中多个列可以同时被搜索。
背景技术
:关系数据库是被组织在具有列和行的相关二维表中的相关数据的集合,其中信息可以通过对表执行诸如联接、排序、合并等的集合操作来导出。更具体地,每个数据库是相关表的集合。每个表是以包括列和行的表格格式的实体或对象的物理表示。列是记录的字段或实体的属性。行包含值或数据实例;这些还被称作记录或元组。关系存在于表内的列之间以及表之间两者。这些关系采取三种逻辑形式:一对一、一对多或多对多。许多关系数据库被设计使得每个单元格(列和行的交叉)仅仅存在一个值;在该设计模式中,仅仅存在表内的一对一关系。每个表根据其包含的数据、诸如人或地址而被命名。在实际数据库与系统的用户之间是被称为关系数据库管理系统(RDBMS)的软件层。RDBMS负责操纵用于对数据库的访问的所有请求,保护用户免于任何特定硬件实施方式的细节。RDBMS是支持数据库特征的控制系统,所述数据库特征包括但不限于存储数据、检索数据和更新数据。存储在关系数据库中的数据通常通过用户定义的查询来访问,所述用户定义的查询以诸如结构化查询语言(SQL)的查询语言来构建。SQL查询是非程序化的,因为其以对用户而言有意义的语言指定查询的目的或期望结果但是不定义要被执行的步骤或者步骤的顺序以便完成查询。技术实现要素:如上文和下文所描述的示范性实施例的各种优点和目的通过提供根据示范性实施例的第一方面的一种搜索关系数据库表的方法来实现,所述方法包括:提供具有多个行和列的关系数据库表,使得所述多个列中的每个列具有描述所述列中的所述每个列中的数据的列名;提供用以管理对所述关系数据库表的访问的关系数据库管理系统(RDBMS);向所述多个列中的至少一些列提供至少一个元数据标签,其中所述元数据标签是被分配给所述多个列中的所述至少一些列的非层次关键字或术语;响应于选择至少一个元数据标签并且响应于选择搜索字符串,通过所述RDBMS的搜索和联接功能来在所述关系数据库表中搜索所述多个列中的与所述至少一个元数据标签相对应的所述至少一些列中的列,以在所述多个列中的与所述至少一个元数据标签相对应的所述至少一些列中找到与所述搜索字符串相匹配的数据。所述方法被实施在至少一个计算设备上。根据示范性实施例的第二方面,提供了一种搜索关系数据库表的方法,所述方法包括:提供具有多个行和列的关系数据库表,使得所述多个列中的每个列具有描述所述列中的所述每个列中的数据的列名;提供用以管理对所述关系数据库表的访问的关系数据库管理系统(RDBMS);检测何时已经将至少一个元数据标签提供给所述多个列中的至少一些列,其中所述元数据标签是被分配给所述多个列中的所述至少一些列的非层次关键字或术语;当已经将至少一个元数据标签提供给所述多个列中的至少一些列时,取得与所述多个列中的所述至少一些列相对应的元数据标签的列表;响应于选择至少一个元数据标签并且响应于选择搜索字符串,通过所述RDBMS的搜索和联接功能来在所述关系数据库表中搜索所述多个列中的与所述至少一个元数据标签相对应的所述至少一些列中的列,以在所述多个列中的与所述至少一个元数据标签相对应的所述至少一些列中找到与所述搜索字符串相匹配的数据。所述方法被实施在至少一个计算设备上。根据示范性实施例的第三方面,提供了一种用于搜索关系数据库表的计算机程序产品。所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现在其中的计算机可读程序代码。所述计算机可读程序代码包括:被配置为提供具有多个行和列的关系数据库表、使得所述多个列中的每个列具有描述所述列中的所述每个列中的数据的列名的计算机可读程序代码;被配置为提供用以管理对所述关系数据库表的访问的关系数据库管理系统(RDBMS)的计算机可读程序代码;被配置为向所述多个列中的至少一些列提供至少一个元数据标签的计算机可读程序代码,其中所述元数据标签是被分配给所述多个列中的所述至少一些列的非层次关键字或术语;响应于选择至少一个元数据标签并且响应于选择搜索字符串,被配置为通过所述RDBMS的搜索和联接功能来在所述关系数据库表中搜索所述多个列中的与所述至少一个元数据标签相对应的所述至少一些列中的列以找到与所述搜索字符串相匹配的数据的计算机可读程序代码。附图说明被认为是新颖的示范性实施例的特征和示范性实施例的元素特性在所附权利要求中被阐述具有特殊性。附图仅仅出于说明的目的并且不是按比例绘制的。关于操作的组织和方法的示范性实施例可以通过下面参考结合附图进行描述的具体实施方式得到最好地理解,在附图中:图1是传统关系数据库表。图2是关于图1中的表1的传统逐列查询。图3是具有针对每个列的元数据标签的关系数据库表。图4是使用来自图3中的表1的元数据标签的查询。图5是用于实施示范性实施例的计算设备的方框图。具体实施方式更详细地参考附图,并且具体地参考图1,示出了传统关系数据库表10的示例,名义上被标记为表1(客户反馈)。关系数据库10包括多个行12a、12b、12c,多个列14a、14b、14c、14d和多个列名16a、16b、16c、16d。在图1的关系数据库表中,针对每个列存在一个列名。因此,列名“记录号”16a与列14a相对应,列名“客户”16b与列14b相对应,列名“描述”16c与列14c相对应,并且列名“评论”16d与列14d相对应。对关系数据库表10的访问可以由RDBMS操纵。RDBMS可以包括用于通过SQL查询来访问数据的查询处理器。关于图1中的关系数据库表10,用户可能想要定位在不同列上具有相同文本或文本模式的记录,所述不同列本质上可以在关系数据库表中是类似的。假设在关系数据库表10中可以存在某数量的客户,可能期望例如在具有列名“描述”的列14c和具有列名“评论”的列14d中搜索具有文本“优秀(excellent)”的那些记录或客户,因为这些列中的任一列可能包含文本“优秀”。为了以传统方式对关系数据库表10的两个列进行搜索,两个查询将必须被编写以单独地搜索每个列。现在参考图2,图示了搜索列14c、14d所必需的查询。查询1将针对列14c中的描述搜索文本“优秀”。查询1可以被表述如下:SELECT*fromTAB1whereColumn3like“%excellent%”查询2将针对列14d中的注释搜索文本“优秀”。Query2可以被表述如下:SELECT*fromTAB1whereColumn4like“%excellent%”为了针对描述列和注释列两者搜索文本“优秀”,如下面并且在图2中示出的,查询被联接在一起为:查询1SELECT*fromTAB1whereColumn3like“%excellent%”UNION查询2SELECT*fromTAB1whereColumn4like“%excellent%”精确的语法可以在SQL供应商之间变化,但是该简单的搜索说明了关于查询诸如关系数据库表10的关系数据库表的传统方法的问题在于搜索的每个列需要之后被联接的其自身的搜索查询。当前RDBMS不允许跨关系数据库表的列来搜索内容的高效且容易的方法。在表具有以下特性中的一个或多个特性时,该问题变得更明显:a.关系数据库表被设计为跨列来存储信息。例如,跨两个或更多个列来存储的产品/服务描述。高效的分类需要对两个列的分析。b.关系数据库表被设计为将不同类型的用户输入存储在不同列中。例如,具有针对问题描述、诊断、解决、反馈的列的服务票证记录。高效的分析应当考虑所有列中的文本。应用开发者和数据库管理员可以通过创建复杂的查询以单独地搜索列并且之后将结果集合进行联接来解决该问题。提出了一种解决方案,其中可以在一个搜索和联接操作中对关系数据库表的多个列进行搜索。根据示范性实施例,提出了向关系数据库表的列中的至少一些列并且优选地全部列添加标签。标签是被分配给关系数据库表的列名的非层次关键字或术语。图1中的表1已经被修改为向列中的每个列中的列名中的每个列名添加元数据标签(下文仅仅称为“一个标签”或“多个标签”)。现在参考图3中的表1(客户反馈)20,标签22a记录已经被添加到列14a中的列名“记录号”16a,标签22b姓名已经被添加到列14b中的列名“客户”16b,标签22c描述、情绪(SENTIMENT)已经被添加到列14c中的列名“描述”16c,并且标签22d评论、情绪已经被添加到列14d中的列名“评论”16d。应指出,针对每个列可以存在多于一个标签,如针对列22c、22d的情况一样。使每列具有多于一个标签允许在搜索时的更大的通用性。再次,关于图3中的关系数据库表20,用户可能想要定位包含文本“优秀”的记录。再次,假设在关系数据库表20中可以存在某数量的客户,可能期望例如在具有列名“描述”的列14c和具有列名“评论”的列14d中搜索含有文本“优秀”的那些记录或客户,因为这些列中的任一列可能包含文本“优秀”。根据示范性实施例,为了对关系数据库表20的两列进行搜索,仅仅一个查询可以必须被编写以使用标签“情绪”进行单个搜索和联接操作。现在参考图4,图示了搜索列14c、14d所必需的查询。该查询可以被表述如下:SELECT*fromTAB1whereTAGSENTIMENTlike“%excellent%”因此,基于情绪标签的搜索允许利用仅仅一个搜索和联接操作对两列进行搜索。该搜索不需要被局限于仅仅两列。任何数量的列可以被组合用于使用标签进行搜索。根据示范性实施例,可以基于诸如图3中示出的列标签22a-22d的列标签来搜索表记录。RDBMS将检测该查询是否表示基于标签的搜索。对于基于标签的搜索,RDBMS将参考表元数据以取得由一个或多个标签表示的列名的列表。对于实际搜索,对于每个相关记录,RDBMS可以(基于列顺序)顺序地搜索所有列直到找到匹配或列表被耗尽而不存在匹配。当创建关系数据库表时,以下(或类似的)语法可以被用于添加标签:Createtable(<TAB1>)columns{(<columnName1>)<existingparameters>[tag:<tagName1>,<tagName2>..](<columnName2>)<existingparameters>[tag:<tagName1>,<tagName3>..](<columnName3>)<existingparameters>[tag:<tagName2>,<tagName3>..]....}当对当前现有的关系数据库表进行修改时,以下(或类似的)语法可以被用于添加标签:Altertable(<TAB1>)ADDTAG(<columnName1>)tag:<tagName4>,<tagName5>由于TAG是逻辑分组,所以CONSTRAINTS将不可适用。尽管对实际SQL语法和数据管理算法的设计取决于RDBMS供应商,但是以上所述是用于向关系数据库表添加标签的通用表示。该标签可以以以下方式被实施在RDBMS中。第一,与列约束类似,RDBMS需要提供DDL(数据定义语言)结构和过程以在列级别上定义、存储并管理一个或多个标签。DDL位于数据库中。第二,RDBMS需要将搜索和联接功能扩展到列标签。对标签的搜索和联接操作应当覆盖被加标签的所有列。例如,如果查询针对标签来搜索文本,则关系数据库应当在内部将其与所有被加标签的列进行比较并返回其中被加标签的列中的一个或多个列与搜索字符串相匹配的所有记录。第三,RDBMS需要将索引和划分能力扩展到标签。索引当被创建在标签上时应当利用标签对所有列进行索引。第四,加标签可以被限制为仅仅搜索/过滤。加标签可以不被扩展到CRUD(创建、读取、更新和删除)、聚合或聚合功能。实施示范性实施例的计算设备可以是通用计算机或专用设备,诸如手持计算机。图5是图示了计算设备的一个示范性硬件环境的方框图。示范性实施例可以使用包括微处理器装置、随机访问存储器(RAM)、只读存储器(ROM)和其他部件的计算机510来实施。计算机510可以是个人计算机、服务器、大型计算机、手持设备或其他计算设备。驻存在计算机510中的或在其外围的可以是某种类型的存储设备514。一般而言,示范性实施例的软件实施方式、图5中的程序512可以被有形地体现在诸如上述存储设备514的计算机可读存储介质中。程序512可以包括指令,所述指令当由计算机510的微处理器读取并执行时可以使计算机510执行运行示范性实施例的步骤或元素所必需的步骤。本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于已经参考本公开的本领域技术人员将显而易见的是,可以在不脱离本发明的精神的情况下进行本文特别描述的那些实施例之外的示范性实施例的其他修改。因此,这样的修改被认为是在如仅由权利要求书限制的本发明的范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1