数据库分库分片
墨初 知识笔记 103阅读
如何将数据分发到分片表或数据库?
答:在运行查询或将传入的数据分发到分片表或数据库时,关键是要将其分配到正确的分片。 否则,它可能导致数据丢失或查询速度缓慢。 在本节中,我们将介绍一些常见的分片架构,每个架构使用稍微不同的流程来跨分片分发数据。
数据库中需要进行分片的表是什么?
答:总而言之就是需要进行分片的表。 一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的,非分片是相对分片表来说的,就是那些不需要进行数据切分的表。 数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是分片节点(dataNode)。 数据切分后,每个分片节点(dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机并发数限制,尽量将读写压力高的分片节点(dataNode)均衡的放在不同的节点主机(dataHost)。
为什么选择分片数据库架构?
答:选择分片数据库架构的另一个原因,是为了加速查询响应的时间。 当您对尚未分片的数据库提交查询时,必须先搜索您查询的表中的每一行,然后才能找到您要查找的结果集。 对于具有大型单片数据库的应用程序,查询可能变得极其缓慢。
数据库分片的吸引力是什么?
答:数据库分片的主要吸引力在于,它可以帮助促进水平扩展(horizontal scaling),也称为向外扩展(scaling out)。 水平扩展是将更多的机器添加到现有堆栈中,以分散负载,允许更多的流量和更快的处理。 这通常与垂直扩展(vertical scaling)形成对比,垂直扩展也称为向上扩展(scaling up),是指升级现有服务器的硬件,通常是添加更多内存或CPU。