《破解分布式数据库使用难点:数据分片策略.docx》由会员分享,可在线阅读,更多相关《破解分布式数据库使用难点:数据分片策略.docx(4页珍藏版)》请在优知文库上搜索。
1、1.数据分片策略是什么分布式数据库的核心能力之一,就是通过数据分片存储,来承载更大的数据规模和计算负载.数据分片,是把数据库横向扩展到多个物理节点上的一种分布式技术.可以理解为将表数据按照特定的分片规则水平切分成若干片段(Shard),使这些数据片段分布在不同物理节点上.数据分片从大类可分为垂直分片和水平分片,前者是按业务类别进行拆分,常见为业务拆库;后者则是以字段为依据,按照一定策略拆分到若干表中.本文后面所谈的数据分片,是针对后者.那么如何将数据从单体更换为分布式,这就需要考虑数据分片策略,数据分片策略包括分片算法、数据分布、分布关系等,简单描述参见下表.含义示例分片法依褶按其种算法拆分到
2、多个数津表中RANGE:水平分片1.IST:列表分片HASH:吟焉分片自定义:用户指定分片算法数据分布分布关系只他说明核据分布朝野些分片上故据词是否存在关系中片表:分布在中分片(指定或随机)麦制表:分布在多分片(指定)广播表:分布在所有分片ERS:存在普考引用关系各级分片:支持多层次分片,即分片下再分片不均荷分片支持根据数据密度,支持部分多级分片、部分单吸分片2 .分布式数据库分片策略业内分布式数据库产品,针对数据分片策略通常有三种做法。一种是基于主键/唯一索弓1/隐含主键等做统一数据分片,即用户无需人为设餐分片策略;一种是开放若干数据分片免法,用户可自行创建数据对象时人为指定;还有一些数据库
3、中间件产品,支持更为灵活的分片方式,可以让用户自行扩展.上面三种,我们可命名为内在、开放、自定义.下面从开发者角度,简单对比下这几种方式.这里解拜一下:内用方式产品,通常对开发者来说更容易上手,使用体验与单机数据库基本一致.但由于无法干预分片策略,其灵活性较差且与业务无关。在大部分业务场景下,是需要牺牲性能体验、消耗更多硬件资源来弥补上述不足.开放方式产品,需要开发者从内置策略中选择一种相对最优解,其具备一定灵活性也兼具了性能表现,可满足绝大多数场景的需要,只有个别业务因其特殊性很难找到合适分片策略,需要业务定制改造.自定义方式产品,为开发者提供最大的灵活自由度,但也赧味着易用性较差及需要开发
4、运维方面做更多工作,很难做到标准产品化.3 .分片实施难点与解法除了第一种方式外,其余两种都涉及一个问题就是现有数据对象如何拆分?好的拆分策略,一定是兼顾业务模型、性能最佳、隐定可靠、研发改造、运维难点等多种因素下,结合分布式数据库的特点而做的最优解,这是在多种因素下平衡的结果。在具体实施上,需要收集大量信息后才能做出决定,下面将主要部分整理为一个表格.从上表可见,数据分片设计过程中,制考虑的问题很多,是一个多维立体的模型分析过程.包括对企业的业务流、数据流、数据模型、业务特征、琪础环境等诸多方面的考虑。上述还需要结合分布式架构数据库的能力理解才能得出一个相对“适合”的设计方案。这对于企业来说
5、是非常痛苦的,也是阻碍企业上到分布式数据库的难点之一,不能将上述包袱完全推给用户去完成,而是尽量在数据库产品侧给出答案,即产品需具备数据分片优化推荐功能如果分片设计不合理,可能造成影响到业务系统的稳定可靠、限务体脸,往往服务体脸是忽快忽微Il最可怕是某一些时刻或者业务场景是嫌假的,从而导致排错分析的困难复杂增加。当然,开始设计很难做到卜全卜美,但系统在运行中经过不断摸索后还需数据库具备一定的在线分片调整能力,例如针对分片类型或分片字段的谓整.在这一过程中要做到不中断现有业芬服务的正常运行,其次要做到尽M少地影响现有业务版务的性能体脸(也即控制资源占用对生产环境的业务服务影阴).战后要做到展量快地完成分片信息的调整,4 .业内产品现状及展星目前国内很多分布式数据库厂商都加强了迁移能力的支持,一般是通过外舌工具的方式提供收集、评估、辅助迁移、睑证等一系列流程的支持.下图是以OceanBase的OMA工具举例,说明其提供的支持能力。通过上图可见,产品针对数据分片策略部分做的不多,主要是对兼容类的评估工具;即根据数据库自身能力,评估原有对象、SQ1.语句需要做哪些改造等。尚没有实现数据分片策略的推荐工作,处于空白.