分布式数据库(一):简介

1. 分布式数据库简介

2. 分布式数据库需要解决哪些问题


1. 分布式数据库简介

    简单来说,分布式数据库就是用分布式架构实现的关系型数据库。那为什么要用分布式架构呢?原因很简单,就是性能和可靠性。由于各种原因,IBM 大型机这样的专用设备已经不再是多数企业的可选项,而采用 x86 架构的通用设备在单机性能和可靠性上都不能满足要求,因此分布式架构就成为了一个必然的选择。

    近几年,阿里巴巴、腾讯、百度、字节跳动、美团、滴滴、快手、知乎、58 等互联网公司,都已经开始使用分布式数据库;而传统的金融、电信行业,也在快速跟进,像交通银行、中信银行、光大银行、北京银行和一些城市商业银行,也都已经上线了分布式数据库。可以说,在各种因素的推动下,分布式数据库已经成为一种技术潮流,甚至是新基建的一部分。常见的分布式数据库包括:

  • Google的Spanner
  • AWS 的Auraro
  • PingCAP公司的TiDB
  • 阿里巴巴的OceanBase和PolarDB
  • 腾讯的TBase和TDSQL
  • 华为的GaussDB

2. 分布式数据库需要解决哪些问题

  • 存储的设计:数据库其实就做了两个操作,读和写。但就这两件事,有时也会冲突,写入快、读取可能就会慢,另外还得考虑存储空间的成本。有个 RUM 猜想就是说这个事情,读放大、写放大、存储空间放大,最多只能避免两个,三选二。这是第一个部分,存储的设计
  • 事务模型:系统总是要多人使用吧,这就带来并发的问题,出现写写冲突和读写冲突时采用什么策略,这是第二部分事务模型。
  • 查询引擎:数据库的操作接口是 SQL,基于关系模型来定义数据结构和操作原语,而且还有各种索引、优化措施,让 SQL 执行得更快,这是第三个部分查询引擎
  • 复制:任何架构都要避免单点故障,所以数据库会有一个复制机制,多个节点形成主备关系,主备之间同步数据,这样可靠性就有了保障,这是第四部分复制
  • 辅助工作:最后,还有一些必备的辅助工作,客户端接入、权限控制、元数据存储。这样一个基本的数据库就可以运行了。

    归纳一下,数据库就是要做好五件事,存储、事务、查询、复制和其他。对分布式数据库来说,不仅要继续做这五件事,还要多出一件事,分片。在这六件事中,存储和其他这两件事与单体数据库差不多,难点就在事务、查询、复制和分片这四件。

        

    我们来具体说说这四件事。

    (1)第一件,也就是多出的那一件事,叫分片元数据存储和分片调度。既然已经是多个节点,那一张表的数据还放在一个节点上吗,是不是该分散一下提高性能? 这样,表就不再是数据的最小存储单元了,换成了分片,也就是表的水平切分下来的一部分,这和分区的概念很像。但是,这一分散,使用数据时总得知道去哪找吧? 这就是分片元数据。另外,这分片也不是静止的,有很多因素会导致分片在节点间移动,比如分片存储的数据太多或者访问压力太大,这就需要对分片进行拆分、合并以及调度。

    (2)第二件是事务,准确地说是分布式事务。它和单机事务完全不一样,虽然数据库早就有了 XA 协议作为标准,理论上支持跨库事务,可是那性能实在太差啊。使用 XA 协议的 MySQL 集群,操作延时是单机的 10 倍。这是什么概念?根本没法在生产环境用。所以,还得研究更加高效的分布式事务模型。

    (3)第三件是查询,查到数据很容易,难的还是高性能。而且数据都分片了,一个查询任务如何分配,是在某个节点上集中数据还是把逻辑推给各个节点,这都是要设计权衡的。

    (4)第四件是复制,也就是高可靠设计,原来的单机复制机制也可以延用,但是在这种复制机制下,只有主节点工作,备节点闲着。现在,新的设计是在分片基础上用 Paxos 协议建立复制组,这样就有了更小的高可靠单元,让每个复制组的主副本交叉部署在多个节点上,就可以充分利用机器资源。

猜你喜欢

转载自blog.csdn.net/MOU_IT/article/details/115339063
今日推荐