新闻资讯
看你所看,想你所想

Sharding

Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏(MMORPG)中。。"Sharding" 姑且称之为"分片"。一般分为:MySQL Proxy + HSCALE、Hibernate Shards 、Spock Proxy、Hi来自veDB、PL/Proxy、Pyshards

  • 中文名称 Sharding
  • 释义 碎片
  • 隶属 数据库相关的技术用语
  • 一般分为: MySQL Proxy + HSCALE

简介

  事关数据库扩展性 说同化断计抓起数据库扩展性,这是个非常大的话题。目前的商业数据都有自己的扩展性解决方案,在过去相对来说比较成熟,但是随着互联网的高速狼寻拒发展,不可避免的会带来一些计算模式上的演变,这样很多主流商业系统也难免暴露出一来自些不足之处。比如 Oracl360百科e 的晚乎谅堡 RAC 是采用共享存储机制,对于I/O 密集型的应用,瓶颈很容易落在存储上,这样的机制决定后续扩容只能是 Scale Up(向上扩展) 类型,对于硬件成本、开发人员的要求、维护成啊站界写药况少本都相对比较高。

用途

  Sharding 基本上是针对开源数据库的扩展性解决方案,很少有听说商业数据库进行 Sharding 的。目前业界的趋势基本上是拥抱Scale Out,逐渐从 Scale Up 中解放出来。

解释

  分片(sharding)的核心理念基于一个想法:数据库大小以及数据库上每单元时间内的交易数呈线型增长,查询数据库的响应时间(response ti失极率育原县育劳me)以指数方式增长。

岩修飞  另外,在一个地方创建和维护么林都事题首刻拿危一个大型数据库的成本位总势触娘满翻径于会成指数增长,因为数据库将需要高端的计算机。相反地,数据碎片可以分布到大量便宜肯嘱誉笑得多的商用服务器上。就硬件和软件要求而言,数据碎片相对来说没什问同么限制。

  在某些情况中,数据库分片(sharding)可以很简单地完成。按地理位置拆分用户数据库就是一个常见的例子。位于东海岸的用户被分到一引官原妈为神台服务器上,在西海岸的用户被分在另一台服务器上。假设没有用户有多个地理位置,这种分区很易于维护和创建规则。

  但是数据分片(sharding)在某些情况下会是易老针自感必价更为复杂的过程。例如,一个愉设精数据库持有很少结许句凯赵齐急成且样验构化数据,分片它就可能非常复杂,并且结果碎片可能会很难维护。

应用场

概述

  任何技术都是在合适的场合下能发挥应有的作用。 Sharding 也一样。联机游戏、IM、BSP 都是比较适合 Sharding 的应用场景。其共性是抽象出来的数据对象之间的关联数据很小。比电整毫吃文矛措我那对们如IM ,每个用户颈浆如果抽象成一个数据对象,完全可以独立存储审零吃领消延极活失虽湖在任何一个地方,数据对象是 Share Nothing 的;再比如 Blog 服务提供商的站点内容,基本为用户生成内为半针掉专杂角察容(UGC),完全可以把不同再温设讨的用户隔离到不同的存储集合,周系著审光烈接关而对用户来说是透明的。

简介

  这个"Share Noth度密受身末客证市历等含ing" 是从数据库集群中借用的概念,举例来说,在兰知刻九欢有些类型的数据粒度之间就不是 "Share Nothing" 的跳态何等,比如类似交易记录的历史表信息,如果一条记录中既包含卖家信息与买家信息,如果随着时间推移,买、卖家会分别与其它用户继续进行交易,这样不可避免的两个买卖家的信息会分布到不同的 Sharding DB 上,而这时如果炒蒸兰针对买卖家查询,就会跨越更多的 Sharding ,开销就会比较大。

  Sharding 并不是数据库扩展方案的银弹,也有其不适合的场景,比如处理事务型的应用就会非常复杂。对于跨不同DB的事务,很难保证完整性,得不偿失。所以,采用什么样的 Sharding 形式,不是生搬硬套的。

  Sharding与数据库分区(Partition)的区别

  有的时候,Sharding 也被近似等同于水平分区(Horizontal Partitioning),网上很多地方也用水平分区来指代 Sharding,但我个人认为二者之间实际上还是有区别的。的确,Sharding 的思想是从分区的思想而来,但数据库分区基本上是数据对象级别的处理,比如表和索引的分区,每个子数据集上能够有不同的物理存储属性,还是单个数据库范围内的操作,而旋嫌删 Sharding 是能够跨数据库,甚至跨越物理机器的。

转载请注明出处安可林文章网 » Sharding

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com