sharding技术

数据库的sharding技术作为一个“新瓶装旧酒”的概念,在新的应用环境中被赋予了新的意义。随着云计算的发 展,sharding在最近几年是越来越火热,越来越多的产品开始声称自己支持sharding功能。那么到底什么是sharding,sharding 到底能为你的数据库应用带来哪些好处。另外最重要的,如何实现一个sharding系统,有哪些sharding算法可供选择。本文将为你解决这些问题。

 

 

一.  简介

 

 

1. 背景

 

 

数据库的扩展是一个永恒的话题。对于传统的关系数据库,采用的是纵向扩展(Scale Up)的方式,即买更好的机器添加更多的资源来取得更好的性能(如硬件升级、更快更多的CPU、更大的内存、更多更大的磁盘等)。而形式上采用的是并行数 据库、分布式数据库的模式,具体细节依赖水平分区或者垂直分区的技术。关系数据库通过ScaleUp方式已在传统的企业应用环境中统治了将近三十多年。

 

 

但是近年来随着数据量的暴增尤其是云计算模式的出现,这种扩展模式对于某些应用已经不太适合,这时便出现了横向扩展(Scale Out)模式。这种方式采用一些Ad-hoc的技术,比如说对数据库进行主从配置(Master-Slave)、采用数据库复制 (Replication)技术以及服务器的缓存(Server Cache)等,来将负载分布到多个物理节点上去。另外sharding技术也逐步发展,并在近年来吸引了众人的眼球。

 

2. 什么是Sharding

 

Sharding 是把数据库Scale Out到多个物理节点上的一种有效的方式。Shard这个词的意思是“碎片”。如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据 库的碎片(DatabaseShard)。将整个数据库打碎的过程就叫做sharding,可以翻译为分片。

 

形式上,Sharding可以简单定义为将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为 一个shard,分区方式可以是任意的,并不局限于传统的水平分区和垂直分区。一个shard可以包含多个表的内容甚至可以包含多个数据库实例中的内容。 每个shard被放置在一个数据库服务器上。一个数据库服务器可以处理一个或多个shard的数据。系统中需要有服务器进行查询路由转发,负责将查询转发 到包含该查询所访问数据的shard或shards节点上去执行。

 

用sharding技术来扩展你的数据库(一)sharding 介绍

 

3. Sharding与分区的比较

 

Sharding与分区有着千丝万缕的联系,它们所采取的技术本质上是类似的,可以说sharding的概念就是由分区而来。在 某些情况下sharding可能指的就是水平分区。另外有些文档中使用了fragment(也是碎片的意思)的术语(在并行数据库中的这些分区称为 partition,在分布式数据库中则称为fragment)。\ref footnote 1

 

Foot note 1:

[[

Daniel C. Zilio. Physical Database Design Decision Algorithms and ConcurrentReorganization for Parallel Database Systems. PhD thesis 1997.

M. Tamer Özsu, Patrick Valduriez. Principles ofDistributed Database Systems, Third Edition. Springer. 2011

]]

 

但是我们所说的sharding和分区还是有很大区别的。下面罗列一下:

 

(1)扩展方式不同。Sharding属于scaleout,而分区则属于scale up方式。

(2)目的不同。分区的目的是为了将一个查询进行并行处理,这样所有的节点能并行处理一个查询;而sharding是让每个节点尽量处理不同的查询。

(3)应用场景:分区适用与传统的企业应用,尤其是OLAP的应用,基本上每个查询都需要访问大部分的数据;而sharding适用于云Web应用,特征是有大量的用户和查询,但是每个查询访问到的元组是非常少的,sharding可以将负载分散到多个物理节点上。

(4)可用性:对于分布式数据库基本上每个查询都需要所有的节点参与,如果某些节点down掉后,系统会大受影响;而 sharding所处理的应用一般只涉及到少数几个节点,所以可用性上sharding要好一些。另外分布式数据库需要有一个主节点来生成执行计划并协调 相关节点执行等,很容易形成单点瓶颈。

(5)分割粒度:分区一般只针对于一个数据库内部进行分割;而sharding可以以数据库为粒度进行分割,因此可用来构建多租房数据库系统(multi-tenantdatabase)。

 

4.Sharding的优点

 

对于Sharding来说,主要有以下主要的优点:

 

(1)提高了数据库的可扩展性,可以随着应用的增长来增加更多的服务器,只需要将新增加的数据以及负载放到新加的服务器上就可以。

(2)提高了数据库的可用性。其中几个shard服务器down掉之后,并不会使整个系统对外停止服务,而只会影响到需要访问这几个shard服务器上的数据的用户。

(3)小的数据库的查询压力比较小,查询更快,性能更好。

(4)系统有更好的可管理性。对系统的升级和配置可以按照shard一个一个来做,并不会对服务产生大的影响。

 

转载 http://qing.blog.sina.com.cn/tj/88ca09aa330004tp.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sharding 5 动态数据源是一种分布式的数据库部署方案,可以将一个大型数据集分散在多个服务器上,实现数据的分布式存储和访问。其中“Sharding 5”指的是一种具体的 sharding 实现方案,而“动态数据源”则表示可以根据实际需求动态地切换数据源。 在使用分布式数据库系统时,数据的分片和负载均衡是重要的考虑因素,这也是 sharding 技术的核心内容。Sharding 5 通过采用水平分片(horizontal sharding)的方式,将大表按照某个字段的值进行分割,每个分片存储在不同的数据库中,每个分片都包含了整个数据集的某个区间。这样可以将数据分散在多个节点上,使得每个节点只需要维护一部分数据,大大提升了系统的扩展性和性能。 另外,Sharding 5 动态数据源的实现方式类似于多个数据源的路由。在不同的时刻,系统需要访问不同的数据库,这时就需要动态地切换数据源。动态数据源可以根据特定的路由规则来选择合适的数据源,以达到访问速度极优的目的。这种方式也提升了系统的可靠性和可扩展性。 总之,Sharding 5 动态数据源是一种非常灵活和高效的分布式数据库部署方案。它可以轻松地处理数据量大、并发度高、可扩展性要求高的应用场景。在当前的互联网时代,这种技术已经成为了众多互联网公司处理大规模数据的首选方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值