贝尔链

小工具:帮你上手分布式数据库 原创

交易教程 2022-11-21 10:59140www.yebogroup.cn未知

​分布式数据库,无疑是近些年来数据库范围的重大技术进步。愈加多的用户考虑将传统集中式或单机数据库,迁移到分布式数据库。然而,正好似其他新技术一样,用分布式数据库同样面临肯定的用法门槛。怎么样平滑地迁移到这一新构造,享受新构造带来的优势的同时,还需避免潜在的劣势。尽管不少分布式数据库商品,正努力减少用门槛,让用户近似传统数据库的体验去用它,但这一过程仍面临很多问题。除此之外,要想更好地用分布式数据库,是需要其达成细节有着更多的认知。本文,尝试从研发角度谈谈,怎么样上手分布式数据库,针对容易见到的怎么样做表分片、怎么样选择分片键等问题加以描述。为了减少过程困难程度,结合之前在项目推行中的一点经验,自己也尝试撰写工具来便捷迁移剖析。

1. 分布式数据库设计要素

1).选择分片对象

分布式数据库设计的第一个要素,就是选择需分片的对象。这其中需考虑几个问题:

数据规模

通常来讲,选择分布式数据库的容易见到缘由之一就是原有数据库容量不足,通过分布式构造存储更多的数据。因此,云数据量的表是优先使用分片设计的最重要理由。当然,也存在些特例状况,如表虽然规模非常大,但没办法明确用到部分数据或数据不常常用等,也可考虑用数据剖析或云数据平台。

热门表

还有一种容易见到的的状况是表虽然不大,但很热,在单机或集中式构造下成为热门,存在性能扩展的瓶颈。这样的情况下,也合适使用分片方法将其分而治之。

管理需要

第三种状况是有的表有着管理需要,如归档、清理、备份等,也可以通过分片设计更精准地满足此类需要。

误区:所有表都需要分片

在分布式数据库下,是不是是所有对象都需要分片呢?答案是相反的。当表使用分片化设计后,在享遭到分片带来的收益的同时,必然也会有损失。如数据库约束会遭到限制、数据表访问存在约束、数据库结构变更更为复杂等。因此,在分布式数据库下仍可考虑使用“单表”设计。此时,就需要考虑如存储地方(单片或广播)等。

2).选择分片键

当确定了什么表使用分片设计后,后面的问题就是确定每一个表的分片键怎么样选择?这总是也是分布式改造中最难取舍的地方。由于,分布式数据库下,数据只能根据一种方法分布。数据分布的方法主要就是由分片键字段和选择的分片算法来确定。因此,选择一个最具备代表意义的字段最为分片键非常重要。而选择依据主如果看表是怎么样被访问的及字段的数据特点,依据多种原因综合考虑。当表根据某种分片逻辑拆分后,其他没办法用该拆分逻辑进行的访问又该怎么样处置呢?这是可考虑如异构二级索引、冗余对象等方法来解决了。下文介绍的小工具,就是从SQL语句的角度剖析潜在的划分依据,供设计者参考。后面将详细展开说明。

3).关联对象设计

当表确定了分片方法后,其关联对象需同步进行设计。这里面设计包含:

约束

在分布式构造下,传统的约束会遭到非常大限制,这其中包含主键、外键、非空、唯1、检查五类。不少分布式数据库不再支持上面这类约束中的部分。这个时候就需在设计时有所考虑,将约束能力上移到应用侧去解决。

索引

索引,是优化数据库访问最常见的方法之一。在分布式构造下,索引能力同样有所限制。通常来讲,若索引字段前缀包括分片字段,还可以支持;不然,只能通过异构索引方法来达成。可容易理解为,分布式构造下的索引就是根据另一种方法存储的分片表。当然,过多的索引在分布式构造下,开销也是非常大的。因此,因分布式构造下分片内的数据已经有限,某些索引是可以考虑不再创建。

序列

序列,主如果为了满足唯一性或自增类需要的。这一能力在单机或集中式构造下比较容易,在分布式构造下一般可考虑用“分布式ID”的方法达成。功能上较之前还是有所限制,尤其是自增需要。有的分布式数据库虽然支持,但性能也会较差。

视图

通常来讲,分布式数据库支持容易视图,对于复杂视图来讲则各有差异。除此之外,应该注意的是优化器的差异。针对视图类的优化,是比较考验优化器能力的,这点各家商品差异较大。

库内计算(存储过程、函数、触发器等)

针对库内计算,是单机或集中式数据库的一大优势。离数据越近的运算,其效率总是也越高,但对于分布式数据库,存在较大技术难题。现在行业内,能较完美地支持分布式构造下的库内计算,尚有不小的差距。建议还是在应用侧去解决。

4).关联语句验证

在做好上述分片设计后,非常重要的一步就是要验证上面设计是不是满足需要。验证的方法就是将对象关联的语句提取出来,剖析在分布式条件下的运行状况。这里包含语法是不是支持、语义是不是等价、效率是不是有保障?若上述验证不满足预期,就需要考虑做出调整。有的可通过改写方法解决,有的更为复杂状况可能需考虑在应用侧甚至构造层面来解决。这一过程也是不少分布式改造的痛点,存在很多验证过程。

5).其他需考虑原因

除去上述要素外,还有其他原因值得关注:

分区表状况

在传统数据库中,应付大量数据规模的有效方法之一就是分区。是不是在分片条件下仍然用分区,是需要综合考虑的。原则上来讲,数据经过分片设计,已经降低处置规模,分区必要性有所减少,要综合考虑。

复杂计算状况

分布式构造下,有的计算是没办法下推到分片内完成的,这就需要提取分片数据,汇聚后计算。这对于上面的计算层的重压较大,也会导致非常大的资源开销。这点要关注到分布式数据库的处置逻辑,验证其这方面能力怎么样。

数据剖析需要

针对数据剖析类需要,不少分布式数据库考虑到这点,引入诸如HTAP方向的技术能力来解决。有此类需要的场景,需重点验证。

2. 工具实践:分片设计辅助剖析

如上面讲解,在分布式数据库改造中,选择需分片的表、确定分片字段及方法是尤为重要的环节。之前在不少顾客推行过程中,这一过程较为繁琐。虽然通过用户培训,可以知道原理上手设计,但在实操中怎么样从纷繁复杂的运行环境中找到要素,在海量可能选择中选出相对较优仍比较困难。为解决上述问题,自己尝试通过工具解决上述痛点,减少迁移困难程度、降低工作量。其原理是以运行环境中SQL为输入,通过分析SQL语句,找到业务核心对象及用方法;再关联数据字典提取数据特点,便捷设计者迅速做出选择且不遗漏要紧信息。下面依据工具输出,容易介绍下,有兴趣者可与我私信。

1).输出解析

概览信息

此部分主要为概览性信息,主要包含数据库及剖析语句。

此部分为采集数据库信息。现在支持MySQL,其他数据库可扩展支持。

此部分为剖析SQL文本。依据输入,可能为多条。

设计参考

此部分是依据输入的SQL语句,提取出表。依据数据字典信息提取表的统计信息。这里需重点关注表大小。如上面所说,表大小分片设计的考虑原因之一。小规模的表,是可以考虑设计为单表或广播表。

此部分是依据数据表,提取索引信息。这类原有些索引设计,可作为后续分片设计的参考之一。除此之外,分片状况下索引代价过大,也可依据此信息做取舍设计。

此部分依据SQL语句分析结果,提取关联或过滤谓词;并进一步将谓词左右的字段及字段数据特点显示出来。这类提取出的字段,可作为分片键字段选择的要紧参考依据。其对应的数据种类、是不是为空、基数及用它的谓词,可便捷设计者迅速决策。

2).用建议

工具用上,可依据如下步骤:

提取业务SQL。可通过系统日志、数据库日志等,提取业务SQL,作为工具输入。提取的SQL需真实反应线上状况,不遗漏要紧的业务SQL。

剖析业务SQL。通过工具剖析提取SQL,获得输出报告。

辅助设计。得到报告后,可依据数据量定位待分片表;依据表字段及谓词字段,确定分片键的范围;依据前面信息和索引,做出初步的设计决策。

验证设计。依据初步的设计结果,在分布式环境下验证上述设计,判断是不是满足之首要条件到的语法、语义及性能。

3).增强改进

这一工具,现在仅考虑到SQL文本,将来可增加对runtime信息的捕获能力,可更为准确描述业务负载。从上述信息中增加对不同语句网站权重,为后续设计判断提供更为丰富的依据。​

责任编辑:武晓燕 出处:韩锋频道

贝尔链-Baer Chain (BRC)最新价格,行情走势图,币值分析 Copyright © 2002-2021 贝尔链 (http://www.yebogroup.cn/) 网站地图 TAG标签 备案号