Oracle 12.2新特性掌上手册 - 第三卷 Sharding 的增强

编辑手记:Sharding技术我们谈了好久,想必大家并不陌生,该功能12.2最新版本中,也将变得越来越完善,今天我们一起来学习。

注:文章内容来自官方文档翻译。若需要了解更多,请查阅官方文档

1、about Sharding

简单来说,Oracle的Sharding技术就是通过分区(Partioning)技术的扩展来实现的。以前一个表的分区可以存在于不同的表空间,现在可以存在于不同的数据库。不同分区存在于不同数据库,这就将数据隔离了开来,Sharding就此实现。

Sharding是一种数据层架构,其中数据在独立数据库之间进行水平分区。每个数据库托管在专用服务器上,具有自己的本地资源 - CPU,内存,闪存或磁盘。 这种配置中的每个数据库称为分片。 所有的分片一起组成一个逻辑数据库,称为分片数据库(SDB)。水平分区涉及跨分片分割数据库表,以便每个分片包含具有相同列但行的不同子集的表。以这种方式分割的表也称为分片表。

2、Benefits of Sharding

Sharding为最高要求的OLTP应用提供线性可扩展性和完整的故障隔离。其主要优点包括:

  • 线性可扩展性。 Sharding消除了性能瓶颈,并且可以通过添加分片来线性扩展性能和容量。
  • 故障遏制。分片是一种无共享硬件基础架构,可消除单点故障,例如共享磁盘,SAN和群集,并提供强大的故障隔离 - 一个分片的故障或减慢不会影响其他分片的性能和可用性。
  • 数据的地理分布。分片使得可以尽量接近消费者进行存储特定数据,并且当数据必须位于特定管辖区时满足监管要求。
  • 滚动升级。一次在一个分片上应用配置更改不会影响其他分片,并允许管理员首先测试对小数据子集的更改。
  • 云部署的简单性。分片非常适合在云中部署,可以根据需要调整大小以适应任何可用的云基础设施,并且仍然实现所需的服务水平。 Oracle Sharding支持内部部署,云和混合部署模型。

与实现分片的NoSQL数据存储不同,Oracle Sharding提供了分片的优点,而不会牺牲企业RDBMS的功能。 例如,Oracle Sharding支持:

关系模式 数据库分区 ACID属性和读取一致性 SQL和其他编程接口 复杂数据类型 在线模式更改 多核可扩展性 高级安全 压缩 高可用性功能 企业级备份和恢复

3、Oracle Sharding体系结构的组件

Oracle Sharding是适用于OLTP应用程序的可扩展性和可用性功能。它可以在不共享硬件或软件的Oracle数据库池中分发和复制数据。应用程序将数据库池视为单个逻辑数据库。应用程序可以通过向池中添加数据库(分片),在任何平台上将数据、事务和用户弹性扩展到任何级别。 Oracle 12.2支持扩展到1000个分片。

下图说明了Oracle Sharding的主要架构组件:

  • 分段数据库(SDB) - 单个逻辑Oracle数据库,横跨在没有共享硬件或软件的物理Oracle数据库(分片)池中进行水平分区
  • 分片 - 承载分片数据库子集的独立物理Oracle数据库
  • 全局服务 - 提供对SDB中数据的访问的数据库服务
  • Shard目录 - 支持自动分片部署,集中管理分片数据库和多分片查询的Oracle数据库
  • 分片导向 - 网络侦听器,可根据分片键实现高性能连接路由
  • 连接池 - 在运行时,通过跨池连接路由数据库请求,充当分片导向
  • 管理接口 - GDSCTL(命令行实用程序)和Oracle企业管理器(GUI)

4、关于分片

Shards是托管在具有自己的本地资源(CPU,内存和磁盘)的数据库服务器上的独立Oracle数据库。在分片之间不需要共享存储。分片数据库是分片的集合分片可以放置在一个区域或不同的区域中。 在Oracle Sharding的环境中,一个区域代表一个数据中心或处于紧密网络邻近的多个数据中心。

可以使用Oracle复制技术(如Data Guard)为HA和DR复制碎片。 对于HA,备用分片可以放置在放置主分片的相同区域。 对于DR,备用分片位于另一个区域。

5、Global Service(全球服务)

全局服务是对传统数据库服务概念的扩展。传统数据库服务的所有属性都支持全局服务。 对于分片数据库,为全局服务设置了其他属性( 例如数据库角色、复制滞后限制、客户端和分片之间的区域关联性等), 对于读写事务工作负载,创建单个全局服务以从SDB中的任何主分片访问数据。 对于使用ADG的高可用性分片,可以创建单独的只读全局服务。

6、Shard Catalog

Shard Catalog是一个专用的Oracle数据库,它是SDB配置数据的持久存储,并在分片数据库的集中管理中发挥关键作用。所有配置更改(例如添加和删除碎片和全局服务)都在Shard Catalog上启动。 SDB中的所有DDL都通过连接到Shard Catalog来执行。

Shard Catalog还包含SDB中所有重复表的副本,使用实例化视图可以自动将的表更改复制到所有分片中。Shard Catalog数据库还用于处理不指定分片关键字的分片查询,充当查询协调器。

使用Oracle DG实现Shard Catalog高可用性是建议的最佳做法。Shard Catalog对SDB的可用性没有影响。Shard Catalog的中断仅影响在完成自动故障转移到备用 Shard Catalog所需的短暂时间内,执行维护操作或多分片查询的功能。 OLTP事务继续由SDB路由和执行,并且不受Catalog中断的影响。

7、Shard Director(分片导向)

Oracle Database 12c引入了全局服务管理器,以根据数据库角色、负载、复制滞后和位置进行路由连接。为了支持Oracle Sharding,全球服务管理器支持基于数据位置的连接路由。在Oracle Sharding的环境中,全局服务管理器被称为分片导向。

分片导向是全局服务管理器的特定实现,它充当连接到SDB的客户端的区域侦听器,维护SDB的当前拓扑图,基于在连接请求期间传递的分片键,将连接请求路由到适当的分片。

对于典型的SDB,每个区域的专用低端商用服务器上安装一组碎片导向,若要实现高可用性,可以部署多个分片导向。在Oracle 12.2中,可以在给定区域中部署最多5个分片导向.

以下是分片导向的主要功能:

  • 维护有关SDB配置和分片可用性的运行时数据
  • 测量其自身和其他区域之间的网络延迟
  • 作为客户端连接到SDB的区域侦听器
  • 管理全球服务
  • 执行连接负载平衡

今天我们一起来看Sharding技术在Oracle 12.2最新版本有什么变化?

Oracle Database 12c版本2(12.2)的分片是一种适用的在线事务处理(OLTP)应用程序的架构,其中数据被水平分区到多个分立的Oracle数据库(称为分片),这些数据库不共享硬件或软件。分片集合作为单个逻辑数据库呈现给应用程序。

  • Oracle分片支持自动部署,高性能路由和完整的生命周期管理.

通过Oracle Data Guard或Oracle GoldenGate replication进行自动部署,可实现单个分片的高可用性。每个分片是一个Oracle数据库,它们具有相同的功能,只有极少数的情况下会作为非分片部署中的Oracle数据库。

  • Oracle分片用于为分片式数据库架构显式设计的自定义OLTP应用程序。 与基于Oracle Real Application Clusters(Oracle RAC)的架构不同,使用分片的应用程序必须具有明确定义的数据模型和数据分布策略(一致的哈希,范围,列表或组合),主要使用分片键访问数据。密钥的示例包括customer_id,account_no,country_id等。 Oracle分片还支持数据放置策略和所有部署模型(例如,本地和公共或混合云)。
  • Oracle 12.2对数据库分片做了许多增强:

1、具有完全故障隔离的线性可扩展性。专为Oracle分片而设计的OLTP应用程序可以在任何平台上弹性扩展(数据、事务和用户)到任何级别,只需在其他独立服务器上部署新的分片即可。由于计划外中断或计划维护而导致的碎片的不可用性仅影响该碎片的用户;它不会影响其他分片用户的应用程序的可用性或性能。每个分片都可以运行不同版本的Oracle数据库,只要应用程序与最早运行的版本向后兼容,即可在执行数据库维护时轻松维护应用程序的可用性。 2、使用许多生命周期管理任务的自动化简单化,包括系统管理分区,单命令部署和细粒度再平衡。 3、使用智能、数据相关的路由提供卓越的运行性能。 4、企业质量(Enterprise quality)良好。每个分片是一个Oracle数据库,呈现出严格的一致性、SQL的全部功能、开发人员与JSON的敏捷性、以及用于安全性、可用性、备份和恢复以及生命周期管理的久经验证的企业质量(Enterprise quality)。

Oracle Sharding的使用场景

  • Extreme scaling of web-scale OLTP databases 规模较大的web-scale 联机事务处理数据库 主要执行单片操作
  • fault isolation 故障隔离 单个分片出现故障不会导致真个服务器挂掉
  • Geo-data distribution 地理数据分布 使数据更接近消费者以减少延迟 需要满足在公民国家存储用户数据的监管要求

Oracle Sharded 数据库的完整平台包括:

1、水平分割10,100或1000个不共享硬件或sorware的离散Oracle数据库的数据和工作负载

2、自动端到端生命周期管理

对于单片查询和分片间查询,允许自动分区/复制、弹性扩展、自动平衡、数据相关路由

3、对以下开发商提供企业级数据库平台

明确地设计APP与容错线性缩放; 假定使用JSON的模式灵活性; 从关系型SQL和ACID的强大力量中产生效益。

快速了解12.2新特性:

Oracle 12.2新特性掌上手册 - 第一卷 Availability

Oracle 12.2新特性掌上手册 - 第二卷 In-Memory

Oracle 12.2新特性掌上手册 - 第三卷 Core Improvements

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏令仔很忙

Spring从入门到精通(一)----IoC(控制反转)

在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过相互合作,最终实现系统的业务逻辑。

682
来自专栏腾讯架构师的专栏

多核处理器下数据库系统日志管理器优化技术探讨

传统数据库的设计假设磁盘为主要存储设备,其性能取决于基于I/O代价模型的优化。然而,当前数据库运行的平台已逐渐转移到由多核处理器、大内存和以闪存为代表的低延迟存...

1631
来自专栏ImportSource

必须要讨论的四种分布式事务方案

分布式事务伴随着微服务被人们一再提起。服务与服务之间的事务怎么处理比较好?到底使用哪种选择方案比较好。相信有人觉得分布式事务实现起来比较困难甚至不可能。也有人觉...

33411
来自专栏ImportSource

设计模式-搞个接口,留有余地,让你我不再尴尬

设计模式,Design Patterns,Pattern,翻译为“模式”总感觉不够接地气,用今天的话来说可以叫“套路”。设计模式就是写代码的过程中一些常规打法和...

33611
来自专栏美团技术团队

服务容错模式

背景 随着美团点评服务框架和服务治理体系的逐步成熟,服务化已成为公司内部系统设计的趋势。本着大系统小做、职责单一的原则,我们度假技术团队对业务系统进行了不少服务...

3474
来自专栏微服务生态

由学习《软件设计重构》所想到的代码review(一)

对于一个程序员来讲如何来最直接的来衡量他的技术能力和产出呢?我想最直观的作法是看他的代码编写能力,就拿我经常接触的一些程序员来看,他们买了很多技术重构类书籍,但...

553
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结1——以flamigo服务器代码为例

这篇文章算是对这个系列的一个系统性地总结。我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。

822
来自专栏H2Cloud

C++ 后台程序实时性能监控

面对的问题: 做后台程序经常会被问一句话,你的程序能撑多少人。一般官方一点的回答是这个得根据实际情况而定。实际上后台程序的性能是可以被量化的。我们开发的每一个服...

3408
来自专栏Golang语言社区

大型服务端开发的反模式技巧

1. 用线程池执行异步任务 ? 为了减少阻塞时间,加快响应速度,把无需返回结果的操作变成异步任务,用线程池来执行,这是提高性能的一种手段。 你可能要惊讶了,这么...

3295
来自专栏数据和云

表分区“拖出”的性能Error

作者介绍: 曾令军,云和恩墨技术专家,2009年开始接触ORACLE数据库,8年数据库运维经验。思维敏捷,擅长于数据库开发、解决棘手的数据库故障和性能问题。服务...

3087

扫描关注云+社区