CN103577407B - 用于分布式数据库的查询方法及查询装置 - Google Patents
用于分布式数据库的查询方法及查询装置 Download PDFInfo
- Publication number
- CN103577407B CN103577407B CN201210250407.0A CN201210250407A CN103577407B CN 103577407 B CN103577407 B CN 103577407B CN 201210250407 A CN201210250407 A CN 201210250407A CN 103577407 B CN103577407 B CN 103577407B
- Authority
- CN
- China
- Prior art keywords
- copy
- database table
- state information
- inquiry
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及用于分布式数据库系统的查询方法。在一个实施例中,该查询方法包括:解析查询请求;生成用于所述查询请求的执行计划,其中在所述执行计划中指定与所述查询请求有关的数据库表,所述数据库表具有分别存储在不同的数据库设备中的多个副本;根据所指定的数据库表的所述多个副本的每一个的状态信息,从所述多个副本中选择一个副本作为目的数据库表;以及按照所述执行计划,在所述目的数据库表中执行查询操作。
Description
技术领域
本发明涉及分布式数据库,更具体地,涉及一种分布式数据库的查询方法及查询装置。
背景技术
现在,随着互联网应用的广泛普及,海量数据的存储和访问成为数据库系统设计的主要问题。单个数据库已很难处理用户的要求。为了满足海量数据的存储和访问,分布式数据库系统正被广泛地应用。在分布式数据库系统中,位于不同物理节点的数据库设备可分别存储在逻辑上构成一个数据库表的不同的物理的数据库子表。这可以通过数据切分技术实现。数据切分技术可通过水平切分或垂直切分将一个大型数据库表划分成多个数据库子表,这些数据库子表被分别存储在物理位置不同的数据库设备中。通过数据切分技术,能够有效降低单台数据库设备的负载,实现数据库系统的可扩展性。
在采用了数据切分技术的分布式数据库系统中,当接收到来自用户的查询请求时,通过解析该查询请求并基于切分规则,能够确定该查询请求所指向的数据库设备。然后,对该数据库设备进行查询操作,以获取数据和相关结果。
此外,在一个物理节点的数据库设备还可以采用主从备份的技术。通过在单个物理节点处设置多个数据库设备并在各个数据库设备中存储相同的数据库表(副本)以构成主从备份结构,能够防止由于单个数据库设备宕机而带来的不能访问数据的情形。
因此,在采用数据切分和主从备份的分布式数据库系统中,当进行数据查询操作时,存在选择哪个数据库设备中的数据库表以完成查询操作的问题。
下面以联邦数据库系统为例进一步详细说明上述问题。联邦数据库系统是一种类型的分布式数据库系统,其可提供对位于不同物理位置的异构数据源的统一查询接口。通过该统一查询接口,这些分散的数据源可如同一个数据源地被访问。在联邦数据库系统中,每个数据源可存储通过数据切分一个逻辑数据库表而得到的数据库表,并配备多个数据库设备,并且每个数据库设备可存储相同的数据库表(副本)。
现有技术中一种用于实现对联邦数据库系统的数据源中的数据库表副本访问的方法是由应用层直接指定数据源中的数据库表副本,这可通过硬编码实现。但该方法需要应用开发者必须知道联邦数据库系统的具体拓扑结构。另外,由于采用硬编码指定数据库表副本,因此,该方法没有可扩展性、容错性、负载均衡性。
另一种用于实现对联邦数据库系统的数据源中的数据库表副本访问的方法是对于联邦数据库系统中的每个逻辑数据库表创建视图,并使用硬编码指定一个数据库表副本。具体地,首先对某个逻辑数据库表的所有数据库表副本创建别名(nickname),并选择每个数据源中的一个数据库表副本以创建用于该逻辑数据库表的视图,这样所有对该逻辑数据库表的操作都可通过该视图进行。在对该联邦数据库系统进行查询操作时,将通过硬编码指定一个数据库表副本。由于采用硬编码指定,因此,该方法具有与上述第一种方法相同的缺点。另外,由于并不考虑数据库表副本的实时状态信息,例如工作负载、可用性等,因此,可能会由于所指定的数据库表副本不可用而造成查询失败或者所指定的数据库表副本工作负载过大。
发明内容
根据本发明的一个方面,提供了一种用于分布式数据库系统的查询方法,包括:解析查询请求;生成用于所述查询请求的执行计划,其中在所述执行计划中指定与所述查询请求有关的数据库表,所述数据库表具有分别存储在不同的数据库设备中的多个副本;根据所指定的数据库表的所述多个副本的每一个的状态信息,从所述多个副本中选择一个副本作为目的数据库表;以及按照所述执行计划,在所述目的数据库表中执行查询操作。
根据本发明的另一个方面,提供了用于分布式数据库系统的查询装置,包括:解析装置,用于解析查询请求;执行计划生成装置,用于生成用于所述查询请求的执行计划,其中在所述执行计划中指定与所述查询请求有关的数据库表,所述数据库表具有分别存储在不同的数据库设备中的多个副本;选择装置,用于根据所指定的数据库表的所述多个副本的每一个的状态信息,从所述多个副本中选择一个副本作为目的数据库表;以及执行装置,用于按照所述执行计划,在所述目的数据库表中执行查询操作。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图2是根据本发明的一个实施例的用于分布式数据库系统的查询方法的流程图;
图3是可实现根据本发明的实施例的查询方法的联邦数据库系统的一个例子的示意图;
图4是根据本发明的一个实施例的用于分布式数据库系统的查询装置的示意性方框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、射频RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
下面参照图2说明根据本发明的实施例的用于分布式数据库系统的查询方法。
在本实施例中,分布式数据库系统包括在不同物理节点处设置的数据库设备群,每个数据库设备群包括多个分离的数据库设备。大的数据库表可通过数据切分被划分成多个小的数据库表,每一个小的数据库表被存储在一个数据库设备群中。另外,在单个数据库设备群中,对应的数据库表被存储在每一个数据库设备中,从而构成数据库表的主从备份。在以下的说明中,对于一个数据库表,将在每个数据库设备中存储的相同的数据库表称为“数据库表的副本”。
如图2所示,在步骤S210,当接收到来自应用层的查询请求时,对该查询请求进行解析。一般地,查询请求的解析包括语法验证、语义验证、获得对象的解析锁和用户权限验证。语法验证用于验证查询请求的语法是否正确。如果有语法错误,则结束查询,向应用层返回错误信息。在语法验证为正确时,进行语义验证。语义验证用于验证查询请求的语义是否正确。例如,验证查询请求所指向的数据库表是否存在。基于在目录(catalog)数据库中存储的各个数据库表的统计信息,可以进行语义验证。由于在数据库设备群的每个数据库设备中存储的数据库表的副本是相同的,因此,这些副本的统计信息也相同,在目录数据库中只需存储数据库表的一个副本的统计信息即可,作为相应的数据库表的统计信息。如果验证有语义错误,则结束查询,向应用层返回错误信息。在语义验证为正确时,获得对象的解析锁。当在查询一个数据库表时,需首先对该数据库表加锁,以保证数据的统一性。然后,对用户的权限进行验证。如果用户没有数据库访问权限,则结束查询,向应用层返回错误信息。
当查询请求的解析完成后,在步骤S220,生成用于查询请求的执行计划(access plan)。所谓执行计划是指对于某一查询请求应如何完成相应的查询的方案。通常,对于一个查询请求,可能存在多个执行计划。因此,需要进行执行计划的优化,以确定最终的执行计划。具体地,根据目录数据库中的各数据库表的统计信息,例如采用基于代价的优化模式,生成最终的执行计划。在最终的执行计划中指定最终的查询请求所指向的数据库表,即与查询请求有关的数据库表。在此,由于在目录数据库中存储数据库表的一个副本的统计信息作为相应的数据库表的统计信息,因此,所生成的执行计划是数据库表级别的。
接着,进入执行计划的执行阶段。在步骤S230,根据所指定的数据库表的多个副本的每一个的状态信息,从这多个副本中选择一个副本作为目的数据库表。
如上所述,在生成执行计划时,只指定了与查询请求有关的数据库表,而不考虑该数据库表的具体副本和该副本所在的数据库设备的IP地址。因此,在执行计划的执行阶段,首先选择最终的数据库表的副本作为目的数据库表。在本实施例中,考虑各个副本的状态信息来进行选择。
具体地,副本的状态信息包括:一致性状态信息,其指示该副本与其它副本是否一致;可用性状态信息,其指示该副本的可用性;以及负载状态信息,其指示存储该副本的数据库设备的工作负载。本领域的普通技术人员能够理解,副本的状态信息还可包括其它指示与副本有关的状态的信息
副本的一致性状态信息可在该副本与其它副本一致时被设为“真”或“1”,否则设为“假”或“0”。当采用主备份方式存储数据库表时,可以将其中一个副本看作主副本,而其它副本看作从副本。因此,一致性状态信息可用于指示从副本是否与主副本一致。通常,可以对主副本进行数据的读和写操作,而对从副本仅进行数据的读操作。在进行了写操作时,由于主副本的数据发生了变化,因此,可能出现从副本与主副本不一致的情形。在这种情况下,需要将从副本与主副本进行同步,以保证数据的一致性。
副本的可用性状态信息可在该副本可用时被设为“真”或“1”,否则设为“假”或“0”。例如,如果副本被挂起(suspend)或者存储副本的数据库设备故障,则表明副本不可用。
负载状态信息可用数据库设备的实际工作负载占满负载的比例的值设置。当然,本领域的普通技术人员应当知道,也可以采用其它形式或指标来表示负载状态信息。
在本实施例中,对于每一个副本,可记录该副本的状态信息以及存储该副本的数据库设备的IP地址。
在一个实施例中,首先,根据所指定的数据库表的多个副本的每一个的一致性状态信息,选择一致性状态信息指示该副本与其它副本一致(即,一致性状态信息为“真”或“1”)的副本以形成第一候选副本集。接着,根据第一候选副本集中每一个副本的可用性状态信息,从第一候选副本集中选择可用性状态信息指示该副本可用(即,可用性状态信息为“真”或“1”)的副本以形成第二候选副本集。然后,根据第一候选副本集中的每一个副本的负载状态信息,从第二候选副本集中选择负载状态信息指示存储该副本的数据库设备的工作负载最低的副本,作为目的数据库表。虽然在此描述了按照一致性状态信息、可用性状态信息的顺序选择候选副本,但本领域的普通技术人员应当知道,也可以按照可用性状态信息、一致性状态信息的顺序选择候选副本。
可选地,首先,检查查询请求的一致性要求。一致性要求可由用户在查询请求中明确指定,或者可根据预先设定的规则确定。在后一种情况下,例如,如果查询请求涉及实时性要求高的数据,例如银行账户的交易明细清单等,则可认为该查询请求是强一致性要求。接着,当查询请求的一致性要求被检查为强一致性时,根据多个副本的每一个的一致性状态信息,选择一致性状态信息指示该副本与其它副本一致(即,一致性状态信息为“真”或“1”)的副本以形成第一候选副本集。当查询请求的一致性要求被检查为弱一致性时,可以不考虑各个副本的一致性状态信息,直接选择多个副本以形成第一候选副本集。接着,根据第一候选副本集中的每一个副本的可用性状态信息,从第一候选副本集中选择可用性状态信息指示该副本可用(即,可用性状态信息为“真”或“1”)的副本以形成第二候选副本集。最后,根据第二候选副本集中每一个副本的负载状态信息,从第二候选副本集中选择负载状态信息指示存储该副本的数据库设备的工作负载最低的副本,作为目的数据库表。
在选择了目的数据库表之后,可获得存储该目的数据库表的数据库设备的IP地址,并将其设置到执行计划中。然后,在步骤S240,按照执行计划,在目的数据库表中执行查询操作,从而取得有关数据或执行结果。查询操作的结果被返回到应用层。
通过以上描述可以看出,本实施例的查询方法通过在执行计划的生成阶段不指定数据库表的具体副本和存储该副本的数据库设备的IP地址,而在执行计划的执行阶段根据所指定的数据库表的每一个副本的状态信息选择目的数据库表,能够改善分布式数据库系统的可扩展性、可用性和负载均衡性。
在另一个实施例中,在用于查询请求的执行计划的执行阶段,进一步监控查询操作的执行。如果监控到查询操作失败,例如,由于目标数据库表在执行计划执行时不可达而造成查询操作失败,则可以根据副本的状态信息,从所指定的数据库表的多个副本中选择另一个副本作为目的数据库表。然后,按照执行计划,在新选择的目的数据库表中执行查询操作。
此外,还可以对分布式数据库中每一个数据库表的每一个副本的状态信息进行更新。在分布式数据库中,可以构建一个状态表,用于记录每个数据库表的每个副本的状态信息以及存储该副本的数据库设备的IP地址。
可选地,可通过请求-响应机制来更新状态信息。具体地,向存储每一个数据库表的每一个副本的数据库设备请求该副本的状态信息,然后,该数据库设备响应于所接收的请求而获取该副本的最新状态信息,并发送所获取的最新状态信息。在接收到最新状态信息后,用所接收的该副本的最新状态信息更新其当前状态信息。可选地,状态信息的更新可以定期执行。
可选地,通过数据库设备的推送来更新状态信息。具体地,当数据库设备检测到其存储的数据库表的副本的状态信息发生变化时,推送变化的状态信息作为最新状态信息,在接收到所推送的该副本的最新状态信息后,用所接收的该副本的最新状态信息更新该副本的当前状态信息。可选地,数据库设备可以定期地推送最新状态信息。
图3是可实现根据本发明的实施例的查询方法的联邦数据库系统的一个例子的示意图。在该例子中,联邦数据库系统存储关于一个城市的车辆信息的数据。如图3所示,联邦数据库系统包括联邦服务器300和位于不同物理节点的三个数据库设备群301、302、303,每个数据库设备群301、302、303分别包括三个数据库设备301a、301b、301c、302a、302b、302c、303a、303b、303c。关于该城市的车辆信息的数据库表按照城市的区域被切分成三个数据库表:区域1数据库表、区域2数据库表、区域3数据库表,并分别存储在数据库设备群301、302、303中。另外,在数据库设备群301的每个数据库设备301a、301b、301c中都存储了区域1数据库表的副本,并且假定数据库设备301a中存储的区域1数据库表的副本为主副本,其它两个副本为从副本。同样,在数据库设备群302、303的每个数据库设备302a、302b、302c、303a、303b、303c中相应地存储了区域2数据库表的副本和区域3数据库表的副本,并假定数据库设备302a中存储的区域2数据库表的副本为主副本,数据库设备303a中存储的区域3数据库表的副本为主副本。
根据本发明的实施例的查询方法可在联邦服务器300中执行。在联邦服务器300中还可以存储如上所述的状态表,其记录区域1数据库表、区域2数据库表和区域3数据库表的每个副本的状态信息以及存储副本的数据库设备301a、301b、301c、302a、302b、302c、303a、303b、303c的IP地址。另外,在联邦服务器300中还可创建用于该城市的车辆信息的数据库表的视图,在该视图中包含区域1数据库表、区域2数据库表和区域3数据库表的标识信息,例如它们的别名。通过该视图,位于远程物理节点处的数据库设备群中的区域数据库表就像存储在本地一样。
当联邦服务器300接收到查询请求时,解析该查询请求并生成执行计划。例如,查询请求包括区域1的车辆,则所生成的执行计划指定区域1数据库表,但并不指定哪个数据库设备中的副本。然后,在执行计划的执行阶段,可根据区域1数据库表的每个副本的状态信息,选择合适的副本作为目的数据库表,例如在数据库设备301b中的副本,并将数据库设备301b的IP地址设置到执行计划中。最后按照执行计划对数据库设备301b中的副本进行查询操作。
在同一个发明构思下,图4示出了根据本发明的一个实施例的用于分布式数据库系统的查询装置400的示意性方框图。下面结合附图,对本实施例进行详细说明。对于与前面实施例相同的部分,适当省略其说明。
如前所述,分布式数据库系统包括在不同物理节点处设置的数据库设备群,每个数据库设备群包括多个分离的数据库设备。同一个数据库表可被存储在数据库设备群中的每个数据库设备中,其中该数据库表可以是数据切分后的数据库表。在以下的说明中,对于一个数据库表,在每个数据库设备中存储的相同的数据库表被称为“数据库表的副本”。
如图4所示,本实施例的查询装置400包括解析装置401、执行计划生成装置402、选择装置403和执行装置404。
解析装置401在接收到查询请求后,对其进行解析。如前所述,查询请求的解析可包括语法验证、语义验证、获得对象的解析锁和用户的权限验证。然后,执行计划生成装置402可生成用于该查询请求的执行计划,其中在所生成的执行计划中指定了与该查询请求有关的数据库表,而没有指定数据库表的哪个副本。
接着,选择装置403可根据所指定的数据库表的多个副本的每一个的状态信息,从多个副本中选择一个副本作为目的数据库表。在本实施例中,副本的状态信息可包括:指示该副本是否与其它副本一致的一致性状态信息;指示该副本的可用性的可用性状态信息;以及指示存储该副本的数据库设备的工作负载的负载状态信息。
具体地,在选择装置403中,第一选择模块4031根据所指定的数据库表的多个副本的每一个的一致性状态信息,选择一致性状态信息指示该副本与其它副本一致的副本以形成第一候选副本集。接着,第二选择模块4032根据第一候选副本集中每一个副本的可用性状态信息,从第一候选副本集中选择可用性状态信息指示该副本可用的副本以形成第二候选副本集。最后,第三选择模块4033根据第二候选副本集中的每一个副本的负载状态信息,从第二候选副本集中选择负载状态信息指示存储该副本的数据库设备的工作负载最低的副本,作为目的数据库表。本领域的普通技术人员应当知道,第一选择模块4031和第二选择模块4032可以交换所使用的状态信息,即,第一选择模块4031使用可用性状态信息,第二选择模块4032使用一致性状态信息。
可选地,在选择装置403中,检查模块检查查询请求的一致性要求。当检查模块检查到查询请求的一致性要求是强一致性时,第一选择模块根据所指定的数据库表的多个副本的每一个的一致性状态信息,选择一致性状态信息指示该副本与其它副本一致的副本以形成第一候选副本集。当检查模块检查到查询请求的一致性要求是弱一致性时,第一选择模块不考虑各个副本的一致性状态信息,直接选择多个副本以形成第一候选副本集。然后,第二选择模块根据第一候选副本集中的每一个副本的可用性状态信息,从第一候选副本集中选择可用性状态信息指示该副本可用的副本以形成第二候选副本集。最后,第三选择模块根据第二候选副本集中的每一个副本的负载状态信息,从第二候选副本集中选择负载状态信息指示存储该副本的数据库设备的工作负载最低的副本,作为目的数据库表。
在选择装置403选择了目的数据库表后,执行装置404按照执行计划,在所选择的目的数据库表中执行查询操作,以取得有关数据和执行结果。查询操作的结果被返回到应用层。
在另一个实施例中,查询装置400还可包括监控装置405,其监控执行装置404中查询操作的执行。当监控装置405监控到查询操作失败时,选择装置403再次从所指定的数据库表的多个副本中选择另一个副本作为目的数据库表,并由执行装置404按照执行计划,在所选择的新的目的数据库表中执行查询操作。
可选地,查询装置400还可包括更新装置406,其更新分布式数据库中每一个数据库表的每一个副本的状态信息。
可选地,更新装置406可采用请求-响应机制进行更新。在更新装置406中,请求模块向存储每一个数据库表的每一个副本的数据库设备请求该副本的状态信息。然后,接收模块接收数据库设备响应于所接收的请求而发送的每一个副本的最新状态信息,并由更新模块用所接收的每一个副本的最新状态信息更新相应副本的当前状态信息。
可选地,更新装置406可利用数据库设备的推送来更新。在更新装置406中,接收模块接收由存储每一个数据库表的每一个副本的数据库设备推送的该副本的最新状态信息,并由更新模块用所接收的每一个副本的最新状态信息更新相应副本的当前状态信息。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种用于分布式数据库系统的查询方法,包括:
解析查询请求;
生成用于所述查询请求的执行计划,其中在所述执行计划中指定与所述查询请求有关的数据库表,所述数据库表具有分别存储在不同的数据库设备中的多个副本;
根据所指定的数据库表的所述多个副本的每一个的状态信息,从所述多个副本中选择一个副本作为目的数据库表,其中,所述多个副本的每一个的状态信息包括:
指示该副本是否与其它副本一致的一致性状态信息;
指示该副本的可用性的可用性状态信息;以及
指示存储该副本的数据库设备的工作负载的负载状态信息;
按照所述执行计划,在所述目的数据库表中执行查询操作;
检查所述查询请求的一致性要求;
如果所述查询请求的一致性要求是强一致性,则根据所述多个副本的每一个的所述一致性状态信息,选择所述一致性状态信息指示该副本与其它副本一致的副本以形成第一候选副本集;
如果所述查询请求的一致性要求是弱一致性,则不考虑所述一致性状态信息,选择所述多个副本以形成第一候选副本集;
根据所述第一候选副本集中的的每一个副本的所述可用性状态信息,从所述第一候选副本集中选择所述可用性状态信息指示该副本可用的副本以形成第二候选副本集;以及
根据所述第二候选副本集中的每一个副本的所述负载状态信息,从所述第二候选副本集中选择所述负载状态信息指示存储该副本的所述数据库设备的工作负载最低的副本,作为所述目的数据库表。
2.根据权利要求1所述的查询方法,还包括:
监控所述查询操作的执行;
如果所述查询操作失败,则从所指定的数据库表的所述多个副本中选择另一个副本作为目的数据库表;以及
按照所述执行计划,在所述目的数据库表中执行查询操作。
3.根据权利要求1所述的查询方法,还包括:
更新所述分布式数据库中每一个数据库表的每一个副本的状态信息。
4.根据权利要求3所述的查询方法,其中,所述更新步骤包括:
向存储所述每一个数据库表的每一个副本的数据库设备请求该副本的状态信息;
接收所述数据库设备响应于所接收的请求而发送的该副本的最新状态信息;以及
用所接收的该副本的最新状态信息更新该副本的当前状态信息。
5.根据权利要求3所述的查询方法,其中,所述更新步骤包括:
接收由存储所述每一个数据库表的每一个副本的数据库设备推送的该副本的最新状态信息;以及
用所接收的每一个副本的最新状态信息更新相应副本的当前状态信息。
6.根据权利要求1所述的查询方法,其中,所述分布式数据库系统是联邦数据库系统。
7.一种用于分布式数据库系统的查询装置,包括:
解析装置,用于解析查询请求;
执行计划生成装置,用于生成用于所述查询请求的执行计划,其中在所述执行计划中指定与所述查询请求有关的数据库表,所述数据库表具有分别存储在不同的数据库设备中的多个副本;
选择装置,用于根据所指定的数据库表的所述多个副本的每一个的状态信息,从所述多个副本中选择一个副本作为目的数据库表,其中,所述多个副本的每一个的状态信息包括:
指示该副本是否与其它副本一致的一致性状态信息;
指示该副本的可用性的可用性状态信息;以及
指示存储该副本的数据库设备的工作负载的负载状态信息;
执行装置,用于按照所述执行计划,在所述目的数据库表中执行查询操作;
检查模块,用于检查所述查询请求的一致性要求;
第一选择模块,用于在所述检查模块检查到所述查询请求的一致性要求是强一致性时,根据所述多个副本的每一个的所述一致性状态信息,选择所述一致性状态信息指示该副本与其它副本一致的副本以形成第一候选副本集,以及用于在所述检查模块检查到所述查询请求的一致性要求是弱一致性时,不考虑所述一致性状态信息,选择所述多个副本以形成第一候选副本集;
第二选择模块,用于根据所述第一候选副本集中的每一个副本的所述可用性状态信息,从所述第一候选副本集中选择所述可用性状态信息指示该副本可用的副本以形成第二候选副本集;以及
第三选择模块,用于根据所述第二候选副本集中的每一个副本的所述负载状态信息,从所述第二候选副本集中选择所述负载状态信息指示存储该副本的所述数据库设备的工作负载最低的副本,作为所述目的数据库表。
8.根据权利要求7所述的查询装置,还包括:
监控装置,用于监控所述查询操作的执行;
其中,当所述监控装置监控到所述查询操作失败时,所述选择装置从所指定的数据库表的所述多个副本中选择另一个副本作为目的数据库表,所述执行装置按照所述执行计划,在所述目的数据库表中执行查询操作。
9.根据权利要求7所述的查询装置,还包括:
更新装置,用于更新所述分布式数据库中每一个数据库表的每一个副本的状态信息。
10.根据权利要求9所述的查询装置,其中,所述更新装置包括:
请求模块,用于向存储所述每一个数据库表的每一个副本的数据库设备请求该副本的状态信息;
接收模块,用于接收所述数据库设备响应于所接收的请求而发送的该副本的最新状态信息;以及
更新模块,用于用所接收的该副本的最新状态信息更新该副本的当前状态信息。
11.根据权利要求9所述的查询装置,其中,所述更新装置包括:
接收模块,用于接收由存储所述每一个数据库表的每一个副本的数据库设备推送的该副本的最新状态信息;以及
更新模块,用于用所接收的每一个副本的最新状态信息更新相应副本的当前状态信息。
12.根据权利要求7所述的查询装置,其中,所述分布式数据库系统是联邦数据库系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210250407.0A CN103577407B (zh) | 2012-07-19 | 2012-07-19 | 用于分布式数据库的查询方法及查询装置 |
US13/933,633 US9317555B2 (en) | 2012-07-19 | 2013-07-02 | Query method for a distributed database system and query apparatus |
US14/957,648 US9563673B2 (en) | 2012-07-19 | 2015-12-03 | Query method for a distributed database system and query apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210250407.0A CN103577407B (zh) | 2012-07-19 | 2012-07-19 | 用于分布式数据库的查询方法及查询装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577407A CN103577407A (zh) | 2014-02-12 |
CN103577407B true CN103577407B (zh) | 2016-10-12 |
Family
ID=49947452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210250407.0A Expired - Fee Related CN103577407B (zh) | 2012-07-19 | 2012-07-19 | 用于分布式数据库的查询方法及查询装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9317555B2 (zh) |
CN (1) | CN103577407B (zh) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519663B2 (en) * | 2013-06-26 | 2016-12-13 | Sap Se | Upgrading and migrating a database by a migration tool |
US10114874B2 (en) * | 2014-02-24 | 2018-10-30 | Red Hat, Inc. | Source query caching as fault prevention for federated queries |
JP6157004B2 (ja) * | 2014-03-19 | 2017-07-05 | Kddi株式会社 | 仮想データベースシステム管理装置、管理方法及び管理プログラム |
FI126623B (en) * | 2014-05-30 | 2017-03-15 | Pulseon Oy | Biometric observation band |
JP6337741B2 (ja) * | 2014-10-31 | 2018-06-06 | 富士通株式会社 | 制御プログラム、制御装置、制御方法及びデータベースシステム |
CN104391913B (zh) * | 2014-11-18 | 2018-02-16 | 北京锐安科技有限公司 | 一种数据库管理方法及装置 |
CN104376087B (zh) * | 2014-11-19 | 2017-09-29 | 天津南大通用数据技术股份有限公司 | 一种采用交叉备份的分布式数据库负载均衡的计算方法 |
US11157473B2 (en) | 2014-11-21 | 2021-10-26 | Red Hat, Inc. | Multisource semantic partitioning |
CN105630850B (zh) * | 2014-11-27 | 2020-11-27 | 阿里巴巴集团控股有限公司 | 对分布式数据库的数据进行实时验证的方法及其系统 |
US10484476B2 (en) * | 2015-02-23 | 2019-11-19 | Siemens Aktiengesellschaft | Distributed data management systems for embedded controllers |
CN106156125B (zh) * | 2015-04-08 | 2019-08-23 | 中国人民解放军国防科学技术大学 | 一种基于不同数据组织方式的虚拟身份管理系统副本的方法 |
CN105868233A (zh) * | 2015-12-03 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 数据访问处理方法、装置及系统 |
CN105550274B (zh) * | 2015-12-10 | 2019-01-25 | 曙光信息产业(北京)有限公司 | 双副本并行数据库的查询方法和装置 |
EP3398091B1 (en) * | 2016-02-19 | 2022-05-11 | Huawei Technologies Co., Ltd. | System and method for unified access control on federated database |
US10459833B2 (en) * | 2016-04-18 | 2019-10-29 | Accenture Global Solutions Limited | Software integration testing with unstructured database |
US10437832B2 (en) * | 2016-05-19 | 2019-10-08 | Microsoft Technology Licensing, Llc | Reconciling foreign key references and table security policies |
CN106446153A (zh) * | 2016-09-21 | 2017-02-22 | 广州特道信息科技有限公司 | 一种分布式newSQL数据库系统及方法 |
CN106569896B (zh) * | 2016-10-25 | 2019-02-05 | 北京国电通网络技术有限公司 | 一种数据分发及并行处理方法和系统 |
CN108153614B (zh) * | 2016-12-02 | 2021-08-20 | 中科星图股份有限公司 | 一种数据库的备份及恢复方法 |
US11429586B2 (en) * | 2016-12-22 | 2022-08-30 | Sap Se | Expression update validation |
CN106802932B (zh) * | 2016-12-28 | 2021-06-22 | 华为技术有限公司 | 一种数据库的路由方法、装置及数据库系统 |
CN107045542A (zh) * | 2017-02-23 | 2017-08-15 | 上海赛可电子商务有限公司 | 数据查询系统及查询方法 |
CN108509450B (zh) * | 2017-02-27 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 用于处理数据库高并发更新的方法和装置 |
US10877962B2 (en) * | 2017-08-11 | 2020-12-29 | International Business Machines Corporation | Deferred update of database hashcode in blockchain |
CN107622091B (zh) * | 2017-08-23 | 2020-11-13 | 创新先进技术有限公司 | 一种数据库查询方法和装置 |
CN107590257A (zh) * | 2017-09-20 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种数据库管理方法及装置 |
US11061924B2 (en) * | 2017-11-22 | 2021-07-13 | Amazon Technologies, Inc. | Multi-region, multi-master replication of database tables |
US10795986B2 (en) | 2018-02-12 | 2020-10-06 | Ge Energy Power Conversion Technology Limited | Method and system for authenticating a component in a power converter |
US10802920B2 (en) * | 2018-04-18 | 2020-10-13 | Pivotal Software, Inc. | Backup and restore validation |
CN109325066A (zh) * | 2018-08-02 | 2019-02-12 | 平安科技(深圳)有限公司 | 一种数据库切换方法及终端设备 |
US11030212B2 (en) * | 2018-09-06 | 2021-06-08 | International Business Machines Corporation | Redirecting query to view masked data via federation table |
CN111104250B (zh) * | 2018-10-26 | 2023-10-10 | 伊姆西Ip控股有限责任公司 | 用于数据处理的方法、设备和计算机可读介质 |
CN109710655B (zh) * | 2018-11-09 | 2023-12-05 | 中国平安人寿保险股份有限公司 | 数据库查询方法、装置、终端设备及存储介质 |
US20200218566A1 (en) * | 2019-01-07 | 2020-07-09 | Entit Software Llc | Workload migration |
CN109995665B (zh) * | 2019-03-29 | 2022-03-22 | 新华三信息安全技术有限公司 | 一种业务数据存储方法及装置 |
US11354312B2 (en) | 2019-08-29 | 2022-06-07 | International Business Machines Corporation | Access-plan-based querying for federated database-management systems |
US11423024B2 (en) * | 2020-03-30 | 2022-08-23 | Sap Se | Efficient query compilation in replicated databases |
CN111522870B (zh) * | 2020-04-09 | 2023-12-08 | 咪咕文化科技有限公司 | 数据库访问方法、中间件和可读存储介质 |
CN111625553B (zh) * | 2020-05-27 | 2023-07-28 | 贵州易鲸捷信息技术有限公司 | 一种统计信息收集优化方法及系统 |
US11032361B1 (en) | 2020-07-14 | 2021-06-08 | Coupang Corp. | Systems and methods of balancing network load for ultra high server availability |
CN111930842B (zh) * | 2020-08-10 | 2024-02-09 | 中国工商银行股份有限公司 | 一种数据核对方法及装置 |
CN111782640B (zh) * | 2020-09-04 | 2021-02-19 | 苏州浪潮智能科技有限公司 | 一种云平台的数据处理方法、系统、电子设备及存储介质 |
CN113254476B (zh) * | 2021-05-28 | 2021-11-09 | 北京金山云网络技术有限公司 | 请求的处理方法和装置、电子设备和存储介质 |
CN116910158A (zh) * | 2023-08-17 | 2023-10-20 | 深圳计算科学研究院 | 基于复制组的数据处理、查询方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101556620A (zh) * | 2009-05-21 | 2009-10-14 | 中国建设银行股份有限公司 | 一种信息管理系统数据库查询方法、系统及相关设备 |
US7707219B1 (en) * | 2005-05-31 | 2010-04-27 | Unisys Corporation | System and method for transforming a database state |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7243093B2 (en) | 2002-11-27 | 2007-07-10 | International Business Machines Corporation | Federated query management |
US7461052B2 (en) | 2004-12-06 | 2008-12-02 | International Business Machines Corporation | Abstract query plan |
US7383247B2 (en) * | 2005-08-29 | 2008-06-03 | International Business Machines Corporation | Query routing of federated information systems for fast response time, load balance, availability, and reliability |
US20070214104A1 (en) * | 2006-03-07 | 2007-09-13 | Bingjie Miao | Method and system for locking execution plan during database migration |
US20080147593A1 (en) | 2006-12-14 | 2008-06-19 | Bhashyam Ramesh | Runtime resource sensitive and data driven optimization |
US9740727B2 (en) * | 2008-10-10 | 2017-08-22 | Abb Schweiz Ag | Method and a system for replicating databases |
US9047331B2 (en) * | 2011-04-21 | 2015-06-02 | International Business Machines Corporation | Scalable row-store with consensus-based replication |
-
2012
- 2012-07-19 CN CN201210250407.0A patent/CN103577407B/zh not_active Expired - Fee Related
-
2013
- 2013-07-02 US US13/933,633 patent/US9317555B2/en not_active Expired - Fee Related
-
2015
- 2015-12-03 US US14/957,648 patent/US9563673B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707219B1 (en) * | 2005-05-31 | 2010-04-27 | Unisys Corporation | System and method for transforming a database state |
CN101556620A (zh) * | 2009-05-21 | 2009-10-14 | 中国建设银行股份有限公司 | 一种信息管理系统数据库查询方法、系统及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
US9563673B2 (en) | 2017-02-07 |
US20160085829A1 (en) | 2016-03-24 |
CN103577407A (zh) | 2014-02-12 |
US9317555B2 (en) | 2016-04-19 |
US20140025704A1 (en) | 2014-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577407B (zh) | 用于分布式数据库的查询方法及查询装置 | |
US20200183932A1 (en) | Optimizing write operations in object schema-based application programming interfaces (apis) | |
US20190012105A1 (en) | Topology management for distributed data storage | |
CN102770849B (zh) | 当应用基于用户的安全性时优化数据高速缓存 | |
US11971865B2 (en) | Intelligent model hierarchy for infrastructure modeling | |
CN109145205A (zh) | 一种基于区块链的跨链数据操作方法和装置 | |
CN110032575A (zh) | 数据查询方法、装置、设备和存储介质 | |
US20170346875A1 (en) | Optimizing read operations in object schema-based application programming interfaces (apis) | |
US10747776B2 (en) | Replication control using eventually consistent meta-data | |
CN104933173B (zh) | 一种用于异构多数据源的数据处理方法、装置和服务器 | |
JP6419081B2 (ja) | トランスフォーム生成システム | |
JP5238915B1 (ja) | 分散型データベースシステム | |
CN107122238B (zh) | 基于Hadoop云计算框架的高效迭代机制设计方法 | |
CN103399894A (zh) | 一种基于共享存储池的分布式事务处理方法 | |
CN105518669A (zh) | 数据模型改变管理 | |
US9881073B2 (en) | Method for reconfiguration of database, recording medium, and reconfiguration device | |
CN104239412B (zh) | 数据存储库中应用至存储库的数据映射及相关方法、系统和计算机可读介质 | |
CN110402435A (zh) | 具有松散耦合节点的多主数据库中的单调交易 | |
CN110244945A (zh) | 接口文档生成方法及终端设备 | |
Varadharajulu et al. | Spatial data supply chains | |
US10353920B2 (en) | Efficient mirror data re-sync | |
CN105518670A (zh) | 用于模型查询的数据模型索引 | |
CN116662123B (zh) | 服务器部件监控方法、装置、电子设备及存储介质 | |
JPWO2013132628A1 (ja) | データベースの管理方法 | |
CN118012847A (zh) | 基于元模型的数据模型版本管理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161012 |