CN102426602B - 范围化数据库连接 - Google Patents
范围化数据库连接 Download PDFInfo
- Publication number
- CN102426602B CN102426602B CN201110355934.3A CN201110355934A CN102426602B CN 102426602 B CN102426602 B CN 102426602B CN 201110355934 A CN201110355934 A CN 201110355934A CN 102426602 B CN102426602 B CN 102426602B
- Authority
- CN
- China
- Prior art keywords
- database
- joint
- context
- access operation
- database access
- 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.)
- Active
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/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual databases
Abstract
本发明涉及范围化数据库连接。本发明扩展到用于范围化用于访问数据库分区的上下文的方法、系统和计算机程序产品。本发明的实施例在多承租人数据库中使用分区来允许数据隔离,同时减轻客户端应用处理分区的负担。例如,包括分布式数据库系统的计算机系统接收当在该分布式数据库系统中执行数据库访问操作时使用的上下文,所述分布式数据库系统包括在联合中的多个数据库分区。上下文表示了指定修改的联合部分。计算机系统还接收与所述上下文相关联的数据库访问操作。计算机系统根据所关联的上下文对数据库访问操作的语义进行修改以指引将该数据库访问操作应用到指定相关的联合部分。
Description
技术领域
本申请涉及范围化数据库连接。
背景技术
1.背景和相关技术
计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行跨多个不同的计算机系统和/或多个不同的计算环境分布。
在一些计算环境中,使用数据库来管理一个或多个数据库承租人(例如用户、组织等)的数据集。当管理多个承租人的数据时,可以使用隔离边界来将不同数据库承租人的数据分隔开来并提升安全性。
隔离边界通常是通过对每个承租人使用单独数据库来形成的。例如,通过将来自一个用户的数据存储在单独的数据库中,可以将该用户的数据与来自所有其他用户的数据分隔开来。然而,一些应用管理非常大量的承租人。例如,社交网络站点可以具有数亿用户。为每个承租人(用户)维护单独的数据会变得很麻烦并且资源密集的。
在一些环境中,通过碎片化(sharding)来形成隔离边界。碎片化是一种通过将不同的行分离到不同的表格中来拆分(分区)一个或多个表格的水平分区形式。水平分区减少了每个表格中的行的总数,减少了跨单个方案的实例(或同一逻辑服务器)的索引大小。通过跨多个服务器(逻辑的或物理的)拆分(分区)一个或多个表格来进一步碎片化。这样,碎片化能够将较大的数据库在多个机器上分布,改进了性能。然而,碎片化难以实现,并且通常需要手动编码和在应用层和数据库之间的复杂的协调。
无论使用了什么隔离方案,在数据库是在线或离线时,数据隔离可以改变在数据库或数据库分区中数据的排列。这样,即使底层数据保持相同,但数据集在数据库环境中的位置会改变。因此,即使数据没有被改变,但给定的数据库查询在不同的时间基于当前的数据排列会返回不同的结果。
发明内容
本发明扩展到用于范围化在联合的数据库中的数据库连接的方法、系统和计算机程序产品。在一些实施例中,计算机系统接收在分布数据库系统中执行数据库访问操作时使用的上下文。所述上下文标识了分布数据库系统中的指定相关的联合部分。计算机系统还接收与所述上下文相关联的数据库访问操作。计算机系统根据所关联的上下文对数据库访问操作的语义进行修改以将该数据库访问操作的应用指引到指定相关的联合部分。
提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本说明书将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。
附图说明
为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中:
图1A示出了便于范围化数据库连接的示例计算机体系结构。
图1B示出了便于范围化数据库连接的示例计算机体系结构。
图2示出了用于范围化被用于访问数据库分区的上下文的示例方法的流程图。
具体实施方式
本发明扩展到用于范围化在联合的数据库中的数据库连接的方法、系统和计算机程序产品。在一些实施例中,计算机系统接收在分布数据库系统中执行数据库访问操作时使用的上下文。所述上下文标识了分布数据库系统中的指定相关的联合部分。计算机系统还接收与所述上下文相关联的数据库访问操作。计算机系统根据所关联的上下文对数据库访问操作的语义进行修改以将该数据库访问操作的应用指引到指定相关的联合部分。
本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理介质和其他计算机可读介质。这些计算机可读介质可以是通用或专用计算机系统能够访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同类型的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置的且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输介质的计算机系统组件中。
计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备中。
通常,范围化的连接被用于将它们查询上的操作自动向下过滤到指定的数据库承租人,而不需要应用必须完成过滤所述操作的额外工作。这种类型的连接使得在单个联合成员(物理数据库)中安置多个承租人变得容易,同时确保了当联合成员内的数据排列改变时的操作的一致性。
本发明的实施例包括数据库联合的使用,该联合尤其可用于数据隔离。数据库联合是一种一个或多个联合成员的集合,每个联合成员表示可以被分开存储的数据库分区。根据联合方案定义联合成员,并且联合成员包括一个或多个联合的(或分布的)数据表格,这些数据表格在公共联合键(例如诸如federation_key(联合_键)、tenant_id(承租人id)等的列)上被联合。这样,每个联合成员可以包括一个或多个具有在所定义的分布中的联合键的值的联合数据表格的一组行。数据库联合因此可以包括一个或多个联合成员,每个联合成员基于联合键的值的对应范围而包括一个或多个联合的表格的一部分。
所述联合方案定义下述一个或多个项:每个联合成员的联合键、它们的数据类型以及分布数据(例如范围、散列、循环)。每个联合可以具有其自身的联合方案。联合成员在应用模型中可以是可见的,并且通过它们的联合键分布以及在一些实施例中通过成员名字来标识。
每个联合成员可以包括一个或多个联合单元。联合单元是具有公共的联合键的值的一个或多个联合数据表格的行的集合。在一些实施例中,联合单元可以对应于单独数据库承租人,并且联合键可以用于使用承租人标识符(例如tenant_id=55(承租人id=55))来标识承租人。这样,联合单元可以是依靠具有在联合成员的联合键范围或分布中的联合键的值的联合成员的一部分。联合单元通常是原子的,因此,它是不可分的。
可以在任意数据库中创建联合。在一个数据库中可以存在许多联合,每个联合表示一个分开的表格集合,例如“所有的消费者数据”或“所有订单数据”,并且,每个联合成员可以含有完整的数据集的子集。然而,对于单个联合成员来说,也可能含有整个表格集合。
除了包含来自分区的或联合的表格的行之外,联合成员还可以包含其行是完整包含在所述成员内的常规(非联合的)表格。非联合的表格可以包含结合分区数据来检索的参考数据(例如产品信息(参考数据)和产品销售(由销售日期联合的))。
联合成员可以是彼此物理分开的(例如在不同的机器上运行、保存在分开的存储中)。这样,在一个联合成员处的数据也可以是与在其他联合成员处的数据物理分开的。用于在一个联合成员中的联合的和非联合的表格的方案可以与其他联合成员中的表格的方案不相同。方案的分歧可以是临时的,例如将新的方案版本跨联合中的成员子集安置铺开(roll-out),并直到联合成员最终聚合在同一方案上。
联合可以包括根数据库,它表示了联合的应用边界。根数据库对于连接到联合的应用是“着陆垫(landing pad)”或是逻辑端点。根数据库可以包含一个或多个命名的联合,每个联合具有其自身的定义联合键的联合方案。根数据库还可以包含全局数据,包括:应用定义(配置)数据、用户和密码以及角色。根数据库还可以包含联合成员的版本信息或提供分布查询处理能力。
联合还可以定义用于数据分布的分布策略以及数据类型。通过联合概念以及用于在物理数据库之间在线复制数据的第一类服务器侧的声明的引入,可以更加容易地开发新类型的云、web和多承租人的解决方案。通过范围化连接,应用可以使用单个连接而连接到联合成员,并只能看到包含该值的联合表格的部分。
根据上述内容,图1A和1B示出了便于范围化数据库连接的示例计算机体系100。参考图1A,计算机体系100包括数据访问模块101和数据库联合102。所描绘的组件中的每一个都通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至因特网之类的网络彼此连接(或者是网络的一部分)。因此,所描绘的组件中的每一个以及任何其他连接的计算机系统及其组件都可以创建消息相关数据并通过网络交换与消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等)。
如所述,数据库联合102包括基于对应于原始数据表格的一列的联合键105而在联合表格104A、104B和104C上分布原始数据表格(未示出)的行的分区(即联合成员)103A、103B和103C。原始数据表格的行基于所述列的值以及分配给每个分区的键值(106A、106B和106C)的部分在联合表格(104A、104B和104C)上分布。例如,分区103A包括联合表格104A,它存储了具有在键值106A的部分中的联合键105的值的原始数据表格的行。类似地,分区103B和103C包括联合表格104B和104C,联合表格104B和104C各自存储了分别具有在键值106B和106C的部分中的联合键105的值的原始数据表格的行。
键值106A、106B和106C的每个部分可以定义使用合适的数据分布技术的联合键值的子集。例如,键值的每个部分可以定义联合键值的连续范围(例如具有联合键105的值1-10的行属于分区103A、具有联合键105的值11-20的行属于分区103B等)。然而,用于分配键值子集的职责和键值子集中的键值的其他机制不需要是连续的(例如散列、循环)。
分区可以可选地包括被完全包含在对应分区之内的一个或多个非联合数据表格(例如非联合表格107A、107B和107C)。非联合表格可以存储参考数据或其他类型的非联合数据,它们可以结合联合数据来访问。
虽然图1A仅说明了一个数据库联合102,但数据库可以包括任意数目的数据库联合。而且,虽然数据库联合102被示出为仅具有一个联合键105,但数据库联合可以包括任意数目的联合键和对应分区。而且,虽然结合联合键105示出了三个分区,但人们可以理解借助于在此的揭示,所述数据库联合可以包括任意数目的分区,包括单个分区。最后,虽然每个分区被示为仅存储单个联合表格,每个表示单个原始数据表格的一部分,但每个分区可以存储对应于多个原始数据表格的多个联合表格。在这种情况下,所述多个数据表格的每个通过包括对应于联合键105的公共列被相关联。
分区103A、103B和103C的每个可以被存储在分开的存储位置上(例如分开的物理机器、分开的数据存储等)。这样,使用数据库联合102,数据库操作者可以将原始数据表格分布并分区到多个分开的位置,因此,便利了数据隔离。虽然分区可以是分开存储的,但通过数据联合102,分区被作为单个单元呈现给客户端应用。
数据库联合102可以通过一系列命令来形成。例如,分区模块(未示出)可以发出创建命令以创建具有联合名字109的数据库联合102。在创建数据库联合102后,可以创建覆盖给定联合键的所有值的单个分区。这样,单个分区将包括原始数据表格的所有行。接着,通过其他数据库联合操作(例如拆分操作和/或合并操作),单个分区被分成分区103A、103B和103C,并且原始数据表格可以被“联合”到联合数据表格104A、104B和104C。随后,可以从数据库联合102中移除原始分区。
数据访问模块101被配置为提供对存储在分区中的数据的访问。特别地,数据访问模块101被配置为提供到包含所请求的数据的特定分区的范围化连接。范围化连接确保了后续的拆分和合并操作将不会影响数据库命令的结果,因为在范围化连接上执行的命令在数据的相同行上操作,而不考虑它们在数据库联合102中的排列。
数据库访问模块101被配置为最初接收包括所请求的数据库联合102的联合名字109、范围110和过滤选项111的范围化连接请求108。范围110可以是在联合表格104A、104B和104C之一的范围中的联合键值。在标识合适的联合表格后,数据访问模型101可以被配置为建立到对应的分区的范围化的连接。例如,范围110可以是联合表格104A的联合键值106A的所述部分中的值。这样,可以在数据访问模块101和分区103A之间建立范围化连接112。
数据访问模块101还可以被配置为对通过范围化连接112连接到分区103A的数据库命令进行修改,并与范围110中的数据(例如包含在联合表格104A中的指定的联合键值的数据)进行交互。例如,数据访问模块101可以被配置为将数据库命令113转换成数据库命令114,以便经修改的数据库命令114通过连接112被引向分区103A。随后,依据过滤选项111的值,经修改的数据库命令114通常与联合表格104A中的行进行交互,或仅与匹配范围114的行中的行交互。在一些实施例中,数据库命令113、114可以包括结构化查询语言(SQL)命令。
可以以许多方式来建立到联合成员的连接。在一些实施例中,范围化连接请求可以为下述格式:
USE FEDERATION federation_name(federation_key_value)
WITH FILTERING={ON|OFF},RESET
[;]
wherein:
federation_name是所述连接的目标联合的名字。
federation_key_value定义了所述连接的范围,并且包括连接到分区的联合键值。服务该联合键值的分区变成所述连接要建立到的分区。所述值通常与由federation_name所指定的数据库联合所使用的联合键值的类型相符合,并且不应该为空(NULL)。
WITH FILTERING={ON|OFF}定义了所定义的范围的行为。
当定义时,WITH RESET使得连接重置清楚。
具有FILTERING=ON的“USE FEDERATION federation_name(federation_key_value)”的声明便利于与对应分区建立范围化连接112,所述范围化连接112将数据库命令限制到分区中的特定的联合单元(即具有与联合键相同的值),而不是存储在分区中的行的全部范围。就是说,在范围化连接112期间,诸如SQL之类的数据操作语言(DML)仅范围化到包含指定的联合键值的对应的联合表格中的行。这可以通过数据访问模型101将联合键列上的预测值(例如“PartitionKey=@value”(分区键=@值))加入到指向联合表格的每个查询中来实现。在“UPDATE”(更新)和“INSERT”(插入)命令的情况下,在范围之外的操作可以生成异常。对于“SELECT”(选择)以及“删除”命令,具有联合键值之外的范围的操作不返回值或没有效果。
具有FILTERING=OFF的“USE FEDERATION federation_name(federation_key_value)”的声明便利了连接到由包含指定联合键值的分区所存储的行的所有范围。为定义数据结构和要求最大可能的范围(例如选择联合中的所有数据的扇出(fan-out)查询)的查询的数据定义语言(DDL)命令典型地保留这种连接类型。对分区的过滤可以通过数据访问模型101将预测值(例如“range_low[<|<=]PartitionKey[<|<=range_high”)加入到指向联合表格的每个查询中来实现。可选地,可以建立到直接使用分区名字来取代联合键值的分区的连接。
现在,返回到图1B,示例性的联合表格104A可以包括行115A-115E。如所示,联合表格104A可以包括对应于联合键105(例如federation_key,tenant_id等)的列。每个行115A可以包括在分区的键值106A的部分中的对应的联合键值116A-116D。在一些实施例中,联合键值116A-116D在键值106A的部分中每个可以为唯一的值,而在其他实施例中,至少一部分键值可以是相同的。例如,行115D和115E被示为共享同一联合键值116D。在一些实施例中,例如,这可以指示行115D和115E中的数据对应于公共数据库承租人。
当使用FILTERING=ON连接到分区103A时,连接的范围可以被限制到仅为对应于指定的键值的那些行。例如,范围117A示出使用键值116D和FILTERING=ON所建立的连接112的范围仅包括行115D和115E。这样,经修改的数据库命令114可以仅作用在行115D和115E上。当指定键值对于一个行是唯一的时,连接的范围可以包括少至一行,或者当指定的键值由多个行共享时可以包括多个行(多至包括联合表格中的所有行)。
相对地,当连接到使用FILTERING=OFF的分区103A时,连接的范围可以是在分区中的所有行的范围,如由范围117B所指示的。这样,不用考虑在连接请求108的范围110中所指定的联合键值116A-116D,连接112被范围化到整个联合数据表格104A,并且,经修改的数据库命令114可以在表格的所有行(例如行115A-115E)上起作用。
图2示出了用于范围化被用于访问数据库分区的上下文的示例方法200的流程图。方法200将参考计算机体系结构100的组件和数据来描述。
方法200包括接收当在分布式数据库系统中执行数据库访问时要使用的上下文的动作,所述上下文标识了指定相关的联合部分(动作201)。例如,数据访问模块101可以接收范围化的连接请求108。范围化连接请求108可以包括标识要连接到的分区(例如分区103A、103B或103C之一)的范围110。范围化连接请求108还可以包括所请求的数据库联合(例如数据库联合102)和/或过滤选项111的联合名字109。范围110可以包括在对应于联合键105的联合表格(例如联合表格104A、104B或104C之一)中的联合键列的值。基于与每个分区相关联的所述值和键值的一部分(例如键值106A、106B、和106C的一部分),数据访问模型101可以确定要连接到哪个分区。例如,数据访问模型101可以确定范围110标识了对应于分区103A的键值106A的部分中的一个键值,并且建立与分区103A的范围化连接112。
方法200进一步包括接收与上下文相关联的数据库访问操作的动作(动作202)。例如,在接收范围化连接请求108并建立了范围化连接112之后,数据访问模块101可以接收与连接请求108相关联的数据库命令113。数据库命令113可以包括任何合适的数据访问操作,包括例如UPDATE(更新)、INSERT(插入)、SELECT(选择)、DELETE(删除)的DML命令和/或DDL命令。
方法200还包括根据所关联的上下文对数据库访问操作的语义进行修改以将该数据库访问操作的应用指引到指定相关的联合部分的动作(动作203)。例如,数据访问模型101可以修改数据库命令113以创建在范围化的连接112中执行的数据库命令114。修改的性质可以至少部分地依赖于在范围化连接请求中所包括的过滤选项111。
当过滤选项111为On(例如FILTERING=ON)时,经修改的数据库命令114可以仅在由范围110所标识的连接的分区的数据表格中的行上执行。在说明的情况中,例如,如果范围110定义键值116D,经修改的数据库命令114可以仅在(如由范围117A所指示的)分区103中的联合表格104A的行115D和115E上执行或访问这些行。类似地,如果范围110定义了不同的键值(例如116A),那么,经修改的数据库命令114将仅在联合表格104A的对应的不同的行(例如115A)上执行或访问该行。可以通过加入预测值,例如“fed_column=value”、“PartitionKey=@value”等来完成范围化。
当过滤选项111为Off(例如FILTERING=OFF)时,经修改的数据库命令114可以在由范围110所标识的连接的分区的联合表格中的任意行上执行。例如,如由范围117B所示,只要范围110标识了键116A-116D之一,经修改的数据库命令114将在联合表格104A的任意行上执行,而不用考虑范围110的特定值。
如先前所示,联合可以包括根数据库,该根数据库表示了联合的应用边界并且尤其包含一个或多个命名的联合。在一些实施例中,USE FEDERATION(使用联合)的声明可以被用于使用下述格式连接到根数据库:
USE FEDERATION ROOT
WITH RESET
这指明了在联合根处的现有连接。当在分区中运行时,连接被重置回联合根数据库。当在任意其他数据库中运行时,这将导致“空操作(noop)”。
通过允许到包含了联合对象的该数据库的第一连接的应用,所述USE FEDERATION声明还可以为连接性库提供有效连接池行为,并且通过USE FEDERATION声明,切换到特定分区。这有助于确保客户端连接池保持与如果它必须定址个别分区(联合成员)或联合单元值时所要保持的池相比更小的池。
USE FEDERATION可以典型地在连接的生命周期中的任意点处的连接上执行。USEFEDERATION可以将连接从当前分区或根数据库再接到联合根或包含在分区中的指定键值。当通过USE FEDERATION再次接通连接时,可以重新建立连接。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
Claims (20)
1.在包括一个或多个处理器和系统存储器的分布式数据库系统处,所述分布式数据库还包括联合分区,所述联合分区指在联合(102)中的多个数据库分区(103A、103B、103C),所述联合(102)配置为存储多个数据行(115A-115E),每个数据行由联合键值(116A-116E)标识,使得所述联合存储了联合键值集的数据,所述多个数据库分区(103A、103B、103C)中的每一个被配置为物理地存储具有在集中的联合键值的指定部分中的一个联合键值的数据的任意行,一种用于对用于访问数据库分区的上下文进行范围化的方法,所述方法包括:
接收当在所述分布式数据库系统中执行数据库访问操作时要使用的上下文(108)的动作,所述上下文标识了所指定的相关的联合部分,所述上下文已由命令提供,所述命令包括对应于所述分布式数据库系统的被请求的数据库联合的联合名字、包括联合键值的范围、和过滤选项的每一个,所述过滤选项指示:当所述过滤选项是开启时是否将连接范围限制到仅为对应于所述联合键值的所述联合分区中的特定行,或者当所述过滤选项是关闭时是否将连接范围限制到通常为所述联合分区中的所有行;
基于所接收到的上下文,建立到所述分布式数据库系统的范围化连接;
接收与所述上下文(108)相关联的数据库访问操作(113)的动作;
根据所关联的上下文(108)对所述数据库访问操作(113)的语义进行修改以将所述数据库访问操作的应用指引到所述所指定的相关的联合部分的动作;以及
将经修改的数据库访问操作通过所述范围化连接发送到所述分布式数据库系统。
2.如权利要求1所述的方法,其特征在于,所述接收当执行数据库访问操作时要使用的上下文的动作包括接收标识所述联合中的相关数据库分区的上下文的动作。
3.如权利要求2所述的方法,其特征在于,所述根据上下文对所述数据库访问操作的语义进行修改的动作包括修改所述数据库访问操作的语义以将所述数据库访问操作的应用指引到所述相关的数据库分区的动作。
4.如权利要求2所述的方法,其特征在于,所述接收当执行数据库访问操作时要使用的上下文的动作包括接收一上下文的动作,所述上下文包括包含在所述相关的数据库分区中的指定值。
5.如权利要求4所述的方法,其特征在于,所述根据上下文对所述数据库访问操作的语义进行修改的动作包括修改所述数据库访问操作的语义以将所述数据库访问操作的应用指引到具有所述指定值的行的动作。
6.如权利要求1所述的方法,其特征在于,所述接收数据库访问操作的动作包括接收SQL命令的动作。
7.如权利要求1所述的方法,其特征在于,所述接收数据库访问操作的动作包括接收对所述联合中所存储的数据的一个或多个行的查询的动作。
8.如权利要求1所述的方法,其特征在于,进一步包括接收过滤选项的动作。
9.如权利要求8所述的方法,其特征在于,所述过滤选项包括开启过滤,所述修改数据库访问操作的语义的动作包括修改数据库访问操作的语义以仅允许访问所述所指定的相关的联合部分中对应于特定联合键值的行的动作。
10.如权利要求8所述的方法,其特征在于,所述过滤选项包括关闭过滤,所述修改数据库访问操作的语义的动作包括修改数据库访问操作的语义以允许访问整个所述所指定的相关的联合部分的动作,所述整个所指定的相关的联合部分包括所述所指定的相关的联合部分中对应于特定联合键值的行以及所述所指定的相关的联合部分中的其他行。
11.一种包括分布式数据库系统的计算机系统,所述分布式数据库包括联合分区,所述联合分区指联合(102)中的多个数据库分区(103A、103B、103C),所述联合(102)配置为存储多个数据行(115A-115E),每个数据行由联合键值(116A-116E)标识,使得所述联合存储了联合键值集的数据,所述多个数据库分区(103A、103B、103C)中的每一个被配置为物理地存储具有在集中的联合键值的指定部分中的一个联合键值的数据的任意行,在所述计算机系统处实现并执行一种用于对用于访问数据库分区的上下文进行范围化的方法,所述计算机系统包括:
用于接收当在所述分布式数据库系统中执行数据库访问操作时要使用的上下文(108)的装置,所述上下文标识了所指定的相关的联合部分,所述上下文已由命令提供,所述命令包括对应于所述分布式数据库系统的被请求的数据库联合的联合名字、包括联合键值的范围、和过滤选项的每一个,所述过滤选项指示:当所述过滤选项是开启时是否将连接范围限制到仅为对应于所述联合键值的所述联合分区中的特定行,或者当所述过滤选项是关闭时是否将连接范围限制到通常为所述联合分区中的所有行;
用于基于所接收到的上下文,建立到所述分布式数据库系统的范围化连接的装置;
用于接收与所述上下文(108)相关联的数据库访问操作(113)的装置;
用于根据所关联的上下文(108)对所述数据库访问操作(113)的语义进行修改以将所述数据库访问操作的应用指引到所述所指定的相关的联合部分的装置;以及
用于将经修改的数据库访问操作通过所述范围化连接发送到所述分布式数据库系统的装置。
12.如权利要求11所述的计算机系统,其特征在于,所述用于接收当执行数据库访问操作时要使用的上下文的装置包括用于接收标识所述联合中的相关数据库分区的上下文的装置。
13.如权利要求12所述的计算机系统,其特征在于,所述用于根据上下文对所述数据库访问操作的语义进行修改的装置包括用于修改所述数据库访问操作的语义以将所述数据库访问操作的应用指引到所述相关的数据库分区的装置。
14.如权利要求12所述的计算机系统,其特征在于,所述用于接收当执行数据库访问操作时要使用的上下文的装置包括用于接收一上下文的装置,所述上下文包括在所述相关的数据库分区中所包含的指定值。
15.如权利要求14所述的计算机系统,其特征在于,所述用于根据上下文对所述数据库访问操作的语义进行修改的装置包括用于修改所述数据库访问操作的语义以将所述数据库访问操作的应用指引到具有所指定的值的行的装置。
16.如权利要求11所述的计算机系统,其特征在于,所述用于接收数据库访问操作的装置包括用于接收对所述联合中存储的数据的一个或多个行的查询的装置。
17.如权利要求11所述的计算机系统,其特征在于,还包括用于接收过滤选项的装置。
18.如权利要求17所述的计算机系统,其特征在于,所述过滤选项包括开启过滤,所述用于修改所述数据库访问操作的语义的装置包括用于修改所述数据库访问操作的语义以便仅允许访问所述所指定的相关的联合部分中对应于特定联合键值的行的装置。
19.如权利要求17所述的计算机系统,其特征在于,所述过滤选项包括关闭过滤,所述用于修改所述数据库访问操作的语义的装置包括用于修改所述数据库访问操作的语义以允许访问整个所述所指定的相关的联合部分的装置,所述整个所指定的相关的联合部分包括所述所指定的相关的联合部分中对应于特定联合键值的行以及所述所指定的相关的联合部分中的其他行。
20.一种计算机系统,所述计算机系统包括:
一个或多个处理器;
系统存储器;以及
在其上存储有计算机可执行指令的一个或多个计算机存储介质,当由所述一个或多个处理器执行所述计算机可执行指令时,使得所述计算机系统执行对用于访问数据库分区的上下文进行范围化的方法,包括下述步骤:
接收连接到分布式数据库系统的范围化连接请求(108),所述范围化连接请求包括:
当在所述分布式数据库系统中执行数据库访问操作时使用的范围(110),所述范围使用联合键值标识所述分布式数据库系统中的联合分区;以及
过滤选项(111),所述过滤选项指示:当所述过滤选项是开启时,是否将连接范围限制到仅为对应于所述联合键值的所述联合分区中的特定行,或者当所述过滤选项是关闭时,是否将连接范围限制到通常为所述联合分区中的所有行;
接收与所述范围连接请求相关联的数据库访问操作(113);以及
根据所关联的范围(110)和过滤选项(111),将所述数据库访问操作(113)的语义修改为经修改的数据库操作(114),以在所述过滤选项是开启时将所述数据库访问操作的应用指引到所述联合分区中的特定行,或在所述过滤选项(111)是关闭时将所述数据库访问操作的应用指引到通常为所述联合分区中的所有行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US40779610P | 2010-10-28 | 2010-10-28 | |
US61/407,796 | 2010-10-28 | ||
US13/165,511 | 2011-06-21 | ||
US13/165,511 US9081837B2 (en) | 2010-10-28 | 2011-06-21 | Scoped database connections |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102426602A CN102426602A (zh) | 2012-04-25 |
CN102426602B true CN102426602B (zh) | 2017-05-24 |
Family
ID=45997802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110355934.3A Active CN102426602B (zh) | 2010-10-28 | 2011-10-27 | 范围化数据库连接 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9081837B2 (zh) |
CN (1) | CN102426602B (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191922B2 (en) | 1998-11-24 | 2019-01-29 | Oracle International Corporation | Determining live migration speed based on workload and performance characteristics |
US9239763B2 (en) | 2012-09-28 | 2016-01-19 | Oracle International Corporation | Container database |
US8875269B2 (en) * | 2011-02-23 | 2014-10-28 | International Business Machines Corporation | User initiated and controlled identity federation establishment and revocation mechanism |
US10489412B2 (en) * | 2012-03-29 | 2019-11-26 | Hitachi Vantara Corporation | Highly available search index with storage node addition and removal |
US10860605B2 (en) | 2012-09-28 | 2020-12-08 | Oracle International Corporation | Near-zero downtime relocation of a pluggable database across container databases |
US9928147B2 (en) | 2012-09-28 | 2018-03-27 | Oracle International Corporation | Forceful closure and automatic recovery of pluggable databases in a shared-everything cluster multitenant container database |
US9396220B2 (en) | 2014-03-10 | 2016-07-19 | Oracle International Corporation | Instantaneous unplug of pluggable database from one container database and plug into another container database |
US10635674B2 (en) | 2012-09-28 | 2020-04-28 | Oracle International Corporation | Migrating a pluggable database between database server instances with minimal impact to performance |
US9195701B2 (en) * | 2012-10-29 | 2015-11-24 | Futurewei Technologies, Inc. | System and method for flexible distributed massively parallel processing (MPP) database |
US8799284B2 (en) | 2012-11-30 | 2014-08-05 | Futurewei Technologies, Inc. | Method for automated scaling of a massive parallel processing (MPP) database |
US10152500B2 (en) | 2013-03-14 | 2018-12-11 | Oracle International Corporation | Read mostly instances |
US9128990B2 (en) * | 2013-03-15 | 2015-09-08 | Microsoft Technology Licensing, Llc | Executing stored procedures at parallel databases |
US10044799B2 (en) | 2013-05-28 | 2018-08-07 | International Business Machines Corporation | Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner |
US9854035B2 (en) | 2013-05-28 | 2017-12-26 | International Business Machines Corporation | Maintaining state synchronization of an application between computing devices as well as maintaining state synchronization of common information between different applications without requiring periodic synchronization |
US9767178B2 (en) | 2013-10-30 | 2017-09-19 | Oracle International Corporation | Multi-instance redo apply |
CN104714972B (zh) * | 2013-12-17 | 2018-06-22 | 中国银联股份有限公司 | 数据库分表建立及查询方法 |
US9229996B2 (en) | 2013-12-30 | 2016-01-05 | Microsoft Technology Licensing, Llc | Providing consistent tenant experiences for multi-tenant databases |
US9262494B2 (en) | 2013-12-30 | 2016-02-16 | Microsoft Technology Licensing, Llc | Importing data into dynamic distributed databases |
GB2522918A (en) * | 2014-02-11 | 2015-08-12 | Ibm | Adaptive access control in relational database system |
US9607043B2 (en) | 2014-08-28 | 2017-03-28 | Red Hat, Inc. | Peak data federation multizone splitting |
US11157473B2 (en) * | 2014-11-21 | 2021-10-26 | Red Hat, Inc. | Multisource semantic partitioning |
US10409835B2 (en) * | 2014-11-28 | 2019-09-10 | Microsoft Technology Licensing, Llc | Efficient data manipulation support |
US10185730B2 (en) * | 2014-12-31 | 2019-01-22 | Nexenta Systems, Inc. | Methods and systems for key-value-tuple-encoded storage |
US11068437B2 (en) | 2015-10-23 | 2021-07-20 | Oracle Interntional Corporation | Periodic snapshots of a pluggable database in a container database |
WO2017070590A1 (en) | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Proxy databases |
US10803078B2 (en) | 2015-10-23 | 2020-10-13 | Oracle International Corporation | Ability to group multiple container databases as a single container database cluster |
CN108431804B (zh) | 2015-10-23 | 2022-01-14 | 甲骨文国际公司 | 将多个容器数据库分组为单个容器数据库集群的能力 |
US10606578B2 (en) | 2015-10-23 | 2020-03-31 | Oracle International Corporation | Provisioning of pluggable databases using a central repository |
US10789131B2 (en) | 2015-10-23 | 2020-09-29 | Oracle International Corporation | Transportable backups for pluggable database relocation |
US10747752B2 (en) | 2015-10-23 | 2020-08-18 | Oracle International Corporation | Space management for transactional consistency of in-memory objects on a standby database |
US10635658B2 (en) | 2015-10-23 | 2020-04-28 | Oracle International Corporation | Asynchronous shared application upgrade |
US11657037B2 (en) | 2015-10-23 | 2023-05-23 | Oracle International Corporation | Query execution against an in-memory standby database |
US10579478B2 (en) | 2015-10-23 | 2020-03-03 | Oracle International Corporation | Pluggable database archive |
WO2017070572A1 (en) | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Application containers for container databases |
US10387387B2 (en) | 2015-12-17 | 2019-08-20 | Oracle International Corporation | Enabling multi-tenant access to respective isolated data sets organized using different application schemas |
US10289617B2 (en) | 2015-12-17 | 2019-05-14 | Oracle International Corporation | Accessing on-premise and off-premise datastores that are organized using different application schemas |
CN105635465A (zh) * | 2015-12-30 | 2016-06-01 | 中科创达软件股份有限公司 | 数据隔离方法、数据隔离装置及终端 |
US20180039628A1 (en) * | 2016-08-03 | 2018-02-08 | Oracle International Corporation | System and method for providing dynamic relocation of tenants in a multi-tenant database environment |
US10698771B2 (en) | 2016-09-15 | 2020-06-30 | Oracle International Corporation | Zero-data-loss with asynchronous redo shipping to a standby database |
US10891291B2 (en) | 2016-10-31 | 2021-01-12 | Oracle International Corporation | Facilitating operations on pluggable databases using separate logical timestamp services |
US11475006B2 (en) | 2016-12-02 | 2022-10-18 | Oracle International Corporation | Query and change propagation scheduling for heterogeneous database systems |
US10691722B2 (en) | 2017-05-31 | 2020-06-23 | Oracle International Corporation | Consistent query execution for big data analytics in a hybrid database |
CN110825794B (zh) * | 2018-08-14 | 2022-03-29 | 华为云计算技术有限公司 | 分区合并方法和数据库服务器 |
US11030212B2 (en) * | 2018-09-06 | 2021-06-08 | International Business Machines Corporation | Redirecting query to view masked data via federation table |
US11281670B2 (en) | 2019-03-30 | 2022-03-22 | Oracle International Corporation | High-performance implementation of sharing of read-only data in a multi-tenant environment |
CN110851853A (zh) * | 2019-09-18 | 2020-02-28 | 平安科技(深圳)有限公司 | 一种数据隔离方法、装置、计算机设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4853843A (en) * | 1987-12-18 | 1989-08-01 | Tektronix, Inc. | System for merging virtual partitions of a distributed database |
US6789071B1 (en) * | 2001-04-20 | 2004-09-07 | Microsoft Corporation | Method for efficient query execution using dynamic queries in database environments |
US6748393B1 (en) | 2001-04-20 | 2004-06-08 | Microsoft Corporation | Transparent updates to partitioned views in a federated database system |
US7792878B2 (en) | 2004-07-29 | 2010-09-07 | International Business Machines Corporation | Fee-based model based on database federation and query support |
US20060074879A1 (en) * | 2004-09-30 | 2006-04-06 | Microsoft Corporation | Easy-to-use data context filtering |
US7949684B2 (en) * | 2005-09-09 | 2011-05-24 | Salesforce.Com, Inc. | Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment |
US9122719B2 (en) | 2006-04-28 | 2015-09-01 | Bmc Software, Inc. | Database application federation |
US9053162B2 (en) | 2007-04-26 | 2015-06-09 | Microsoft Technology Licensing, Llc | Multi-tenant hosted application system |
CN101499061A (zh) * | 2008-01-30 | 2009-08-05 | 国际商业机器公司 | 面向多租户的数据库引擎及其数据访问方法 |
CN101620609B (zh) * | 2008-06-30 | 2012-03-21 | 国际商业机器公司 | 多租户数据存储和访问方法和装置 |
CN101639835A (zh) * | 2008-07-30 | 2010-02-03 | 国际商业机器公司 | 多租户场景中应用数据库分区的方法和装置 |
-
2011
- 2011-06-21 US US13/165,511 patent/US9081837B2/en active Active
- 2011-10-27 CN CN201110355934.3A patent/CN102426602B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102426602A (zh) | 2012-04-25 |
US20120109926A1 (en) | 2012-05-03 |
US9081837B2 (en) | 2015-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102426602B (zh) | 范围化数据库连接 | |
US11409556B2 (en) | Custom placement policies for virtual machines | |
CN109416643B (zh) | 应用程序迁移系统 | |
CN104160381B (zh) | 多租户环境中租户特定数据集的管理方法及其系统 | |
US8555018B1 (en) | Techniques for storing data | |
US8200705B2 (en) | Method and apparatus for applying database partitioning in a multi-tenancy scenario | |
CN107967316A (zh) | 一种数据同步方法、设备及计算机可读存储介质 | |
WO2016183539A1 (en) | Data partitioning and ordering | |
CN108885582A (zh) | 存储器池结构的多租户存储器服务 | |
CN107851034A (zh) | 用于在高性能计算环境中定义虚拟机的虚拟机构架简档的系统和方法 | |
CN107567696A (zh) | 计算集群内的资源实例群组的自动扩展 | |
CN106529331A (zh) | 一种应用于PaaS平台的多租户数据隔离方案 | |
CN106471471A (zh) | 用于在多租户应用服务器环境中支持分区的系统和方法 | |
CN104781809A (zh) | 容器数据库 | |
CN103827825A (zh) | 虚拟资源对象组件 | |
CN108984639A (zh) | 服务器集群的数据处理方法和装置 | |
CN109416684A (zh) | 分析平台的摄取管理器 | |
CN104156640B (zh) | 一种数据访问权限控制方法 | |
Nashat et al. | A comprehensive taxonomy of fragmentation and allocation techniques in distributed database design | |
US20150261816A1 (en) | Dynamically indentifying and preventing skewed partitions in a shared-nothing database | |
CN110245843B (zh) | 一种基于区块链的信息管理的方法及相关装置 | |
US20090307339A1 (en) | Methods of federating applications providing modular data | |
CN107800781A (zh) | 一种配置数据处理方法和装置 | |
CN106933891A (zh) | 访问分布式数据库的方法和分布式数据服务的装置 | |
CN104714825B (zh) | 统一策略配置的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150722 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150722 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |