暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库分片技术

Oracle云数据库技术 2021-04-26
1986

关于分片技术(Sharding)

Sharding是一种数据层架构,就是对数据进行横向切割,并分布存储到不同的数据库。每个数据库部署在专门的服务器,即有单独的本地资源,例如CPU、内存、闪存或者磁盘。每个数据库就是一个分片。所有的数据库组成一个逻辑数据库,统称分片数据库(SDB)。

通过水平分区将一个数据库表拆分到不同分片,每个分片都包含相同的字段,只是数据集不一样。以这种方式被拆分的数据表叫做分片表。

我们来看一下以下这张图,水平将一个表数据拆分到不同分片。

 

通过上图,我们可以看出:

1、数据表是分布在三台服务器上,它们是无共享硬件基础设施,这样可以避免出现单点故障。同时分片在软件上也弱耦合的,它们不运行集群组件。

2、分片部署在专用的服务器,分片运行在单实例或者集群上。

3、分片是用于OLTP系统,因此分片片键规则的设计非常关键。

 

Oracle分片的优点

分片为OLTP系统提供了线性扩展及故障隔离的需要。


分片的主要优点有:

1、线性扩展:通过增加分片,可以线性扩展性能和处理能力,消除性能瓶颈。

2、故障隔离:分片是无共享硬件基础设施,可以避免单点故障,例如磁盘损坏。

3、跨地域分布部署:分片可以将特定的数据存储到特定的区域。

 

分片数据库组件

 

分片目录库 Shard Catalog

Shard Catalogr 主要用途是存储SDB元数据,跨片查询的协调数据库,同时包含应用的元数据定义和复制表。

分片导向器 ShardDirector

Shard Director提供从应用层到分片连接请求的路由导向。通过ONS FAN发布运行时SDB拓扑图,均衡负载的建议跨数据库服务故障切换和管理。同时也提供连接时负载均衡。

全局服务GlobalService

通过服务属性(serviceattributes)建立工作负载管理策略,本地服务优先 + {本地性, 复制时延, 角色, 数据库可选择性, 负载均衡目标}

 

Sharding它解决三个关键问题

1、数据的路由:是数据库告诉应用程序,你让我查的数据目前在哪个分片上,这条路怎么走过去。

2、数据的分片:是实际数据的存放地点,往往每个分片就是一台单独的服务器(含存储)。

3、分片的元数据信息保存:是被切割放在不同的机器上,那么需要有个集中的地点存放数据分片的信息,即分片元数据的信息。 

总结一下就是:应用问路由怎么走,路由去查询元数据得知需要的数据在哪个分片上,最终应用访问到该分片上。

 

Sharding适合所有的数据库应用吗?

既然Sharding听上去很厉害,那么是不是现在只要遇到有性能问题的数据库,一律都可以使用Sharding技术来解决呢?当然不,Sharding不会也不可能是FAST=TRUE这样的参数。一个适合Sharding技术的应用,必须有非常好的数据模型,和清晰的数据分布策略(比如是一致性哈希,范围或者列表分区),并且访问这些数据也是总要通过shard key来过滤的,只有这样,才能在整个Sharded数据库架构中很好地将请求路由到合适的数据库上。这样的shard key可能会是客户编号,国家编号,身份证号码等。

 

Sharding适合的业务场景

专用OLTP应用Custom OLTPApplications,海量扩展和高可用性MassiveScalability and HA

•      大规模计费系统 Largebillingsystems

•      航空票务系统Airline ticketingsystems

•      在线金融服务Onlinefinancialservices

•      媒体服务公司Mediacompanies

•      在线信息服务Onlineinformationservices

•      社交媒体公司Socialmediacompanies

 

总结

OracleSharding是分片数据层架构,数据是横向分区在独立的数据库。每个数据库的配置被称为分片单元。所有的分片单元在一起组成一个逻辑数据库,称为数据库分片。

它为企业提供了完整数据平台,对于业务系统需要分库分表,要线性水平扩展,没问题用Sharding最合适,它能做到自动化端到端的生命周期管理,为新一代开发者提供一个企业级的数据库平台。

文章转载自Oracle云数据库技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论