search 2013 adfgs
作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明
链接:http://isky000.com/database/oracle-12-2-sharding-1 | del.icio.us | Twitter it

这是关于 Oracle Sharding 方面系列文章的第一篇,从 Oracle 12.2 开始,不仅有多租户场景,多数据中心架构,还有云部署模型。下面就是关于 Oracle Sharding介绍系列第一篇,大部分内容来自 Oracle 文档。

这篇文站首先介绍下什么是 Oracle Sharding。

Oracle Sharding是Oracle数据库为在线交易类型的应用程序定制设计的一种可扩展、支持高可用功能的架构,可以在不具有共享硬件或软件的数据库池中分发和复制数据。 数据库池作为单个逻辑数据库展现给应用程序,应用程序通过在池中添加额外的数据库(分片),可以在任何平台上弹性扩展(数据,事务和用户)到任何级别, 使用Oracle数据库12.2.0.1的第一个版本支持扩展到1000个分片。

1、Oracle Sharding 的优点

与使用类似的可伸缩性方法的本地部署相比,Oracle Sharding提供了卓越的运行时性能和更简单的生命周期管理;还提供了企业DBMS的优势,包括:关系模式,SQL和其他编程接口,支持复杂数据类型,在线模式更改,多核可扩展性,高级安全性,压缩,高可用性,ACID属性,一致性 阅读,使用JSON的开发人员敏捷性等等。

Oracle分片使用水平分区在分片之间分布数据,通过分片分割数据库表,以便每个分片包含具有相同列但行的不同子集的表。

  • 从数据库管理员的角度来看,SDB由可以集中或单独管理的多个数据库组成。
  • 从应用程序开发人员的角度来看,SDB看起来像一个单一的数据库:分片的数量和跨越它们的数据的分布对数据库应用程序是完全透明的。 应用程序发出的SQL语句不引用分片,也不取决于分片数及其配置。

2、Oracle Sharding 的架构设计

OLTP应用程序必须从最初就设计好使用Sharding的架构方案,才能体现扩展性和可用性的优势。 因为者完全不同于基于Oracle RAC的高可用架构,RAC的实现对于应用程序来说是完全透明的。 但分片数据库的应用程序必须具有明确定义的数据模型和数据分发策略(一致的哈希,范围,列表或组合),主要通过分片键访问数据。 分片键的示例包括customer_id,account_no,country_id等。Oracle Sharding还支持数据放置策略(机架和地理位置感知)以及所有部署模型:内部部署模式和公共云或混合云。

有极高性能要求的事务必须是通常访问10行或100行的单分片事务。例如,查找和更新客户的记帐记录,查找和更新订户的文档等。在用于高性能事务的分片之间没有通信或协调。

当然还支持多分片操作和非分片键访问,但可能会对性能产生影响。这种交易包括简单的聚合,报告等 – 通常小于总工作量的10%。

3、Oracle Sharding 在高可用、可扩展性方面的实现

在上述的设计考虑的基础上,在分片数据库架构上运行的应用程序可以实现更高级别的可伸缩性和可用性。Sharding 数据库的性能会随着池中分片的增加而线性增长,因为每个分片之间是彼此独立的。每个分片通常使用本地存储、闪存和内存,为客户进行性能优化提供了相对低的成本。第一个版本的Oracle Sharding旨在扩展到1,000个分片。分片之间彼此独立意味着一个分片的中断或性能较差不会影响在其他分片上执行的事务的可用性或性能。

单个分片的高可用性(HA)由数据库复制的自动部署提供。默认配置是具有自动数据库故障转移的单向Data Guard物理复制,其实现起来非常简单。还可以自动部署Active Data Guard(复制打开只读)或Oracle GoldenGate(双向复制,所有副本均为打开读写)。碎片可以在数据中心内和跨数据中心进行复制,复制是使用Oracle Sharding支持的数据放置策略的数据中心和机架感知实现的,当然也可以手动配置Oracle RAC以提供Shard HA。

碎片是由一组称为Shard Director的复制侦听器作为路由器的前端。 Oracle客户端(JDBC,OCI和ODP.net)和Oracle通用连接池(UCP)已得到增强,可识别连接字符串中指定的分片键,并通过控制每个分片允许的最大连接数确保可用性。连接层中的分片路由缓存(由分片的初始请求填充)用于将请求直接路由到数据所在的分片,以实现最佳运行时性能。如果对分片数据库进行任何更改(例如自动重新平衡或添加/删除分片),则会自动刷新分片路由缓存。

已经有2个回复

Trackbacks & Pingbacks

看完了要说点啥么?