Oracle Sharding:开启Oracle数据分布时代

Posted 蒙马软件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle Sharding:开启Oracle数据分布时代相关的知识,希望对你有一定的参考价值。


关于作者
王太微  上海蒙马软件技术有限公司Oracle 数据库认证专家,Oracle Weblogic认证专家,Oracle技术培训讲师。具有多年数据库开发、支持、管理经验。实施和配置多个Oracle 应用系统,擅长于Oracle数据库系统管理、服务支持工作,精通Oracle管理(ORACLE安装,配置和体系结构),PL/SQL开发相关知识;同时具有多年的Oracle应用服务器Weblogic实施和维护技能,多年的Oracle数据库技术培训经验。


一、关于sharding


sharding是一种将数据水平分区跨越多个独立数据库的数据架构。

每一个数据库放置在拥有自己本地资源(CPU、内存、闪存和磁盘)的专用服务器上。这种配置方式的每个数据库被称为一个shard。所有的shard一起构成一个逻辑数据库,称为sharded database(SDB)


水平分区涉及将数据库表分离到各个shard,使得每个shard都含有表的相同列,区别只在于表内行数据的不同子集。用这种方式进行数据分离的表称为sharded table


下图展示了跨越三个shard的数据表的水平分区

Oracle Sharding:开启Oracle数据分布时代

Sharding是一种基于shard-nothing的硬件基础架构,同时消除了单点故障,因为每个shards并不共享诸如CPU、内存或者存储设备等等的物理资源。就软件而言shards也是低耦合,非集群运行。


一般情况下shard存在于专用服务器上,这些服务器可以是普通硬件配置的机器也可以是专业服务器。Shards可以运行在单实例数据库也可以是RAC数据库。

从DBA的观点看,一个SDB包含多个可以被集成管理或者单独管理的数据库。然而从应用程序的角度看,一个SDB看上去就像一个单独的数据库:shard的数量和数据的具体分布对于应用程序是完全透明的。

Sharding技术更倾向于传统的OLTP应用架构。使用Sharding的应用程序必须有良好的数据定义模型和数据分布策略。



二、sharding的优势


对于很多环境要求苛刻的OLTP应用程序来说,sharding提供了线性扩展和完整的失败隔离功能。

Sharding的关键优势包括:

线性扩展。Sharding消除了性能瓶颈并且通过添加shard来线性扩展性能和容量。

失败隔离。Sharding是一种shard-nothing硬件技术,它消除了单点失败(比如共享盘、SAN和集群软件)并且提供了强有力的失败隔离---失败的或者低效的shard不会影响其它shard的性能和可用性。

按地理位置分布数据。可以选择根据不同地理位置,把数据存储在不同的shard里。

滚动升级。同一时间在一个shard上应用配置修改不会影响其它shard,允许管理员先测试一小部分数据。

简化云部署。Sharding很好地适合在云端部署。Shard可以按需求定制大小以提供服务而不管云基础架构是否可用。


三、Oracle Sharding架构组件


Oracle Sharding可以在横跨不共享硬件和软件的Oracle数据库池里分布和复制数据。应用程序把数据库池视作单个逻辑数据库,应用程序可以通过添加数据库(shard)到池中,从而实现在任意平台上弹性地扩展数据、事务和用户至任意级别。Oracle Database 12c Release 2(12.2.0.1)支持扩展到1000个shard。


下图展示了Oracle Sharding的主要架构组件:

Oracle Sharding:开启Oracle数据分布时代

Sharded Database(SDB) --- 一个跨越物理Oracle数据库(shard)池的水平分区的逻辑数据库。

Shards --- 一个部署有共享数据库子集的单独的物理Oracle数据库。

Global service --- 在一个SDB中提供访问数据的数据库服务。

Shard catalog --- 一个提供自动共享部署、集中管理的Oracle数据库。

Shard directors --- 基于共享密钥的网络监听,允许高性能网络连接和路由。

Connection pools --- 运行时通过连接池路由数据库连接请求。

Management interfaces --- GDSCTL(命令行工具)和Oracle企业管理器(GUI)


四、Oracle Sharding方法


支持3种不同的分区方法:

System-Managed Sharding --- 不需要用户定义数据如何映射到shard,数据通过分区的“一致性哈希”算法自动分布到各个shard。分区算法均匀地、随机地分布数据到shard。

Composite Sharding --- 允许用户对使用“一致性哈希”算法进行分区的表的不同数据子集创建多个共享空间。一个共享空间是一组存储数据的shard,存放一定范围和列表的数据。

Subpartitions with Sharding --- 由于Oracle Sharding是基于表分区的,所以所有Oracle数据库提供的子分区方法都支持sharding。



Oracle Sharding:开启Oracle数据分布时代

关于我们


蒙马软件(微信号:MEMAnews)是新一代的信息技术专业服务机构,以关键业务信息系统运行的稳定、安全、高效为目标,专注于数据管理服务。

我们是甲骨文,微软等国际厂商的合作伙伴,提供卓越的数据库运维服务,数据同步与复制服务,数据容灾与应急服务,数据安全保障服务,以及与此相关的的主机、网络、存储、视频等产品、解决方案和技术服务。







微信号:蒙马软件
长按识别二维码
关注我们



以上是关于Oracle Sharding:开启Oracle数据分布时代的主要内容,如果未能解决你的问题,请参考以下文章

2015 OOW:Oracle的Sharding技术

oracle 分库分表(sharding)

我的第一篇,献给Oracle sharding

2016年将发布的Oracle 12cR2 Sharding分片特性的痛点在哪里?

惊喜不断,Oracle也有了自己Sharding

12.2新特性首发:Oracle Sharding是这么做的