什么是分片手艺(Sharding)?
Sharding 中文名叫数据分片(是指数据层的水中分区),是对数据举行横向扩展的一种方式。数据量zeng加,我可以通过加一台机械,来扩展其容纳能力和处置赏罚能力。
Sharding它解决三个关jian问题:
1.数据的路由
是数据库告诉应用法式,你让我查的数据现在在哪个分片上,这条路怎么走已往。
2.数据的分片
是现实数据的存放所在,wangwang每个分片就是一台单独的服务器(含存储)。
3.分片的元数据信息生涯
是被切割放在差异的机械上,那么需要有个集中的所在存放数据分片的信息,即分片元数据的信息。
总结一下就是:应用问路由怎么走,路由去查询元数据得知需要的数据在哪个分片上,最终应用会见到gai分片上。
Oracle分片- 数据库架构模式
•Oracle Sharding在提供Sharding的同时,并没有牺牲掉关系型数据库所带来的优异特征,好比说关系型数据建模,SQL编程接口,富厚的数据类型,在线的表结构变换,充实使用CPU多核的扩展性,高级清静,压缩,高可用,ACID特征,一致读,所有的Oracle数据库的优势仍然还在那里,可是,特殊,提供了Sharding的优势。
•对于Oracle Sharding的上层来说,使用的是Oracle GDS(Global Data Services)框架来实现自动部署和shading的治理以及拓扑复制。GDS还同时提供了对于整个SDB会见的负载平衡和基于位置的路由功效。在GDS框架中,global service manager认真将应用过来的请求转发到合适的shard上,另外尚有一个shard catalog数据库,支持跨shard的查询功效,同时SDB的设置数据也都存在这个catalog数据库中。
•对于Oracle Sharding的底层来说,使用的是Oracle恒久以来一直存在的分区(partitioning)手艺。Oracle Sharding就其本质上来说,现实上就是漫衍式分区,将以前的分区扩展支持到跨差异的物理数据库上。

Oracle分片的优点
•数据自动分片到自力的分片数据库(分片)中,这些库组成一个数据库池。
•这个数据库池以一个单一的逻辑库的方式泛起给应用法式
•支持在线添加分片以zeng加整体吞吐量
•数据量,客户量和生意营业量可线性扩展
•一个分片库的故障或减速不影响其他分片的可用性
•自动部署数据库复制实现分片级的高可用性(RAC 可选)
•每个分片可自力补丁和升级,不影响其他分片
•无邪的分片组织- 一致性哈希,区域,列表或复合分片(range-hash, list-hash)
•数据漫衍可基于可用性,灾难恢复,性能,或规则要求决议

Sharding适合所有的数据库应用吗?
既然Sharding听上去很厉害,那么是不是现在只要遇到有性能问题的数据库,一律都可以使用Sharding手艺来解决呢?虽然不,Sharding不会也不行能是FAST=TRUE这样的参数。一个适合Sharding手艺的应用,必须有很是好的数据模子,和清晰的数据漫衍战略(好比是一致性哈希,规模或者列表分区),而且会见这些数据也是总要通过shard key来过滤的,只有这样,才气在整个Sharded数据库架构中很好地将请求路由到合适的数据库上。这样的shard key可能会是客户编号,国家编号,shen份证号码等。
Sharding适合的营业chang景:
专用OLTP应用Custom OLTP Applications,海量扩展和高可用性 MassiveScalability and HA
•大规模计费系统 Large billing systems
•航空票务系统 Airline ticketing systems
•在线金融服务Online financial services
•媒体服务公司Media companies
•在线信息服务Online information services
•社交媒体公司Social media companies
分片数据库物理架构
Sharding分片数据库的物理架构如下所示:

分片数据库组件
•分片目录库 Shard Catalog
存储SDB元数据 metadata
跨片查询的协调数据库 coordinator
包罗应用的元数据界说和复制表 Contains application gold schema & duplicated tables
•分片导向器 Shard Director(Global Service Manager)
提供从应用层到分片毗连请求的路由导向 。
通过ONS FAN宣布运行时SDB拓扑图,平衡负载的建议跨数据库服务故障切换和治理。
毗连时负载平衡 Connect-time loadbalancing。
•全局服务 Global Service
通过服务属性(service attributes)建设事情负载治理战略 workloadmanagement
当地服务优先 + {当地性, 复制时延, 角色, 数据库可选择性, 负载平衡目的}
Local service + {Locality, replication lag, role, database cardinality,load balancing goals}
•GDSCTL
治理SDB及其组件的下令行界面
•GDS区域 GDS Region
网络上相近的一组分片和客户端
Sharding的部署方式
Sharding的部署方式很是的无邪,不仅可以在差异的主机(差异的操作系统)上部署;也可以部署在差异的地方,同时支持云上的部署。如下图:

Oracle分片方式
对于Oracle Sharding的底层来说,使用的是Oracle恒久以来一直存在的分区(partitioning)手艺。Oracle Sharding就其本质上来说,现实上就是漫衍式分区,将以前的分区扩展支持到跨差异的物理数据库上。使用的是Oracle GDS(Global Data Services)框架来实现自动部署和shading的治理以及拓扑复制。

总结
OracleSharding是分片数据层架构,数据是横向分区在自力的数据库。每个数据库的设置被称为分片单元。所有的分片单元在一起组成一个逻辑数据库,称为数据库分片。
它为企业提供了完整数据平台,对于营业系统需要分库分表,要线性水平扩展,没问题用Sharding最合适,它能做到自动化端到端的生命周期治理,为新一代开发者提供一个企业级的数据库平台。
【文章泉源:Oracle官网】