?
什么是分片技术(Sharding)?
Sharding 中文名叫数据分片(是指数据层的水平分区),是对数据进行横向扩展的一种方式。数据量增加,我可以通过加一台机器,来扩展其容纳能力和处理能力。
?
Sharding它解决三个关键问题:
1.数据的路由
是数据库告诉应用程序,你让我查的数据目前在哪个分片上,这条路怎么走过去。
2.数据的分片
是实际数据的存放地点,往往每个分片就是一台单独的服务器(含存储)。
3.分片的元数据信息保存
是被切割放在不同的机器上,那么需要有个集中的地点存放数据分片的信息,即分片元数据的信息。
总结一下就是:应用问路由怎么走,路由去查询元数据得知需要的数据在哪个分片上,最终应用访问到该分片上。
?
Oracle分片- 数据库架构模式
??racle Sharding在提供Sharding的同时,并没有牺牲掉关系型数据库所带来的优秀特性,比如说关系型数据建模,SQL编程接口,丰富的数据类型,在线的表结构变更,充分利用CPU多核的扩展性,高级安全,压缩,高可用,ACID特征,一致读,所有的Oracle数据库的优势仍然还在那里,但是,额外,提供了Sharding的优势。
?⒍杂?racle Sharding的上层来说,使用的是Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制。GDS还同时提供了对于整个SDB访问的负载均衡和基于位置的路由功能。在GDS框架中,global service manager负责将应用过来的请求转发到合适的shard上,另外还有一个shard catalog数据库,支持跨shard的查询功能,同时SDB的配置数据也都存在这个catalog数据库中。
?⒍杂?racle Sharding的底层来说,使用的是Oracle长久以来一直存在的分区(partitioning)技术。Oracle Sharding就其本质上来说,实际上就是分布式分区,将以前的分区扩展支持到跨不同的物理数据库上。

?
Oracle分片的优点?
?⑹?葑远?制?蕉懒⒌姆制??菘猓ǚ制?┲校?庑┛庾槌梢桓鍪?菘獬亍?/p>
?⒄飧鍪?菘獬匾砸桓龅ヒ坏穆呒?獾姆绞匠氏指?τ贸绦?/p>
?⒅С衷谙咛砑臃制?栽黾诱?逋掏铝?/p>
?⑹?萘浚?突Я亢徒灰琢靠上咝岳┱?/p>
?⒁桓龇制?獾墓收匣蚣跛俨挥跋炱渌?制?目捎眯?/p>
?⒆远?渴鹗?菘飧粗剖迪址制?兜母呖捎眯裕?AC 可选)
?⒚扛龇制?啥懒⒉苟『蜕?叮?挥跋炱渌?制?/p>
?⒘榛畹姆制?橹? 一致性哈希,区域,列表或复合分片(range-hash, list-hash)
?⑹?莘植伎苫?诳捎眯裕?帜鸦指矗?阅埽?蚍ü嬉?缶龆??

?
Sharding适合所有的数据库应用吗?
既然Sharding听上去很厉害,那么是不是现在只要遇到有性能问题的数据库,一律都可以使用Sharding技术来解决呢?当然不,Sharding不会也不可能是FAST=TRUE这样的参数。一个适合Sharding技术的应用,必须有非常好的数据模型,和清晰的数据分布策略(比如是一致性哈希,范围或者列表分区),并且访问这些数据也是总要通过shard key来过滤的,只有这样,才能在整个Sharded数据库架构中很好地将请求路由到合适的数据库上。这样的shard key可能会是客户编号,国家编号,身份证号码等。
?
Sharding适合的业务场景:
专用OLTP应用Custom OLTP Applications,海量扩展和高可用性 MassiveScalability and HA
?⒋蠊婺<品严低 Large billing systems
?⒑娇掌蔽裣低 Airline ticketing systems
?⒃谙呓鹑诜??nline financial services
?⒚教宸?窆??edia companies
?⒃谙咝畔⒎??nline information services
?⑸缃幻教骞??ocial media companies
?
分片数据库物理架构?
Sharding分片数据库的物理架构如下所示:

?
分片数据库组件
?⒎制?柯伎 Shard Catalog
存储SDB元数据 metadata
跨片查询的协调数据库 coordinator
包含应用的元数据定义和复制表 Contains application gold schema & duplicated tables
?⒎制?枷蚱 Shard Director(Global Service Manager)?ㄌ峁┐佑τ貌愕椒制??忧肭蟮穆酚傻枷 。?ㄍü?NS FAN发布运行时SDB拓扑图,均衡负载的建议跨数据库服务故障切换和管理。
连接时负载均衡 Connect-time loadbalancing。
?⑷?址? ?Global Service
通过服务属性(service attributes)建立工作负载管理策略 workloadmanagement
本地服务优先 + {本地性, 复制时延, 角色, 数据库可选择性, 负载均衡目标}
Local service + {Locality, replication lag, role, database cardinality,load balancing goals}
??DSCTL?
管理SDB及其组件的命令行界面
??DS区域 GDS Region?
网络上邻近的一组分片和客户端
?
Sharding的部署方式
Sharding的部署方式非常的灵活,不仅可以在不同的主机(不同的操作系统)上部署;也可以部署在不同的地方,同时支持云上的部署。如下图:

?
Oracle分片方式
对于Oracle Sharding的底层来说,使用的是Oracle长久以来一直存在的分区(partitioning)技术。Oracle Sharding就其本质上来说,实际上就是分布式分区,将以前的分区扩展支持到跨不同的物理数据库上。使用的是Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制。

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