2023年11月26日发(作者:)

分布式数据库如何选择,⼏种分布式数据库优缺点⼀览

分布式数据库如何选择?⼏种分布式数据库优缺点⼀览

1.为什么选择分布式数据库?

优点如下:

1)具有灵活的体系结构

2)适应分布式的管理和控制机构

3)经济性能优越

4)系统的可靠性⾼、可⽤性好

5)局部应⽤的响应速度快

6)可扩展性好,易于集成现有系统。

2.相关的技术概念介绍

2.1什么是分布式数据库?

常见的分布式系统分为,

a)⽀持持久化存储的分布式存储系统;

b)着重计算的分布式计算框架;

c)分布式消息队列

根据不同的应⽤的领域,把上述分类细化,常见分布式存储系统分为:

1.分布式协同系统(分布式⽇志复制)

2.分布式任务调度框架

3.流计算框架

4.分布式⽂件/对象系统

5.分布式NoSQL存储

6.分布式关系数据库(OLAPOLTP);

7.各种消息队列mq

⼀般很多⼈⽤ETCD,就是分布式协调系统(⽇志复制系统),其实就是paxos算法及其变体的实现。⼀般来说只存少量的元数据信息,所

以,存储⼤规模⽂件,并且读取⽤ETCD是不合适的。

2.2不同的分布式数据库如何区分?

-value NoSQL

例如Redis Riak等;

4.可选的⽅法及其特点

根据上述的要求,分布式数据库,符合⼤数据存储的,⽀持频繁读写的数据库有如下⼏个,它们的特点会简单说明。

csearch数据库

csearch简介

分布式的实时⽂件存储,每个字段都被索引并可被搜索,分布式的实时分析搜索引擎

可以扩展到上百台服务器,处理PB级结构化或⾮结构化数据

csearch应⽤场景

分布式的搜索引擎和数据分析引擎,全⽂检索,结构化检索,数据分析

对海量数据进⾏近实时的处理,站内搜索(电商,招聘,门户,等等),IT系统搜索(OACRMERP,等等),数据分析

csearch的优缺点

缺点:没有⽤户验证和权限控制,没有事务的概念,不⽀持回滚,误删不能恢复,需要java环境.

优点:将你的⽂档分割到不同容器或者分⽚中,可以存在单个节点或多个节点

复制每个分⽚提供数据备份,防⽌硬件问题导致数据丢失。

对集群中任意节点的相互请求进⾏路由,保证获取的数据是你需要的,集群增加或者重新分配分⽚时,不停机让新节点恢复丢失的节点

分⽚数据

csearch的持久化⽅案

gateway 代表 elasticsearch 索引的持久化存储⽅式,elasticsearch 默认是先把索引存放到内存中去,当内存满了的时候再持久化到硬盘

⾥。当这个 elasticsearch 集群关闭或者再次重新启动时就会从 gateway 中读取索引数据。elasticsearch ⽀持多种类型的 gateway,有本地

⽂件系统(默认),分布式⽂件系统,Hadoop HDFS amazon s3 云存储服务。

ElasticSearch是先把索引的内容保存到内存之中,当内存不够时再把索引持久化到硬盘中,同时它还有⼀个队列,是在系统空闲时⾃动把索

引写到硬盘中。

数据库

简介

redis是开源BSD许可⾼级的key-value存储系统(NoSQL),可以⽤来存储字符串,哈希结构,链表,集合,因此,常⽤来提供数据结构服

务,Redis⽀持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加 载进⾏使⽤。 ⽀持简单的key-value类型的数

据,同时还提供listsetzsethash等数据结构的存储。Redis⽀持数据的备份,即master-slave模式的数据备份。

应⽤场景

A)常规计数:粉丝数,微博数

B)⽤户信息变更

C)缓存处理,作为mysql的缓存

D)队列系统,建有优先级的队列系统,⽇志收集系统

的优缺点

优点:

(1) 速度快,因为数据存在内存中,类似于HashMapHashMap的优势就是查找和操作的时间复杂度都是O(1)

(2) ⽀持丰富数据类型,⽀持stringlistsetsorted sethash

(3) ⽀持事务,操作都是原⼦性,所谓的原⼦性就是对数据的更改要么全部执⾏,要么全部不执⾏

(4) 丰富的特性:可⽤于缓存,消息,按key设置过期时间,过期后将会⾃动删除

缺点:

1)不具备⾃动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者⼿动切换前端的IP才能恢复

2)主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引⼊数据不⼀致的问题,降低了系统的可⽤性

3)的主从复制采⽤全量复制,复制过程中主机会fork出⼀个⼦进程对内存做⼀份快照,并将⼦进程的内存快照保存为⽂件发送给从机,这

⼀过程需要确保主机有⾜够多的空余内存。若快照⽂件较⼤,对集群的服务能⼒会产⽣较⼤的影响,⽽且复制过程是在从机新加⼊集群或者

从机和主机⽹络断开重连时都会进⾏,也就是⽹络波动都会造成主机和从机间的⼀次全量的数据复制,这对实际的系统运营造成了不⼩的⿇

4Redis较难⽀持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这⼀问题,运维⼈员在系统上线时必须确保有⾜够的

空间,这对资源造成了很⼤的浪费。

的持久化⽅案

redis提供两种⽅式进⾏持久化,⼀种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外⼀种

AOFappend only file)持久化(原理是将Reids的操作⽇志以追加的⽅式写⼊⽂件)。

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写⼊磁盘,实际操作过程是fork⼀个⼦进程,先将数据集写⼊临时⽂件,写⼊成

功后,再替换之前的⽂件,⽤⼆进制压缩存储。

b数据库

b简介

MongoDB本⾝是⼀种⾮关系型数据库。它的每⼀条记录是⼀个Document,每个Document有⼀组键值对组成。MongoDB

DocumentJSON对象相似。 Document中字段的值可能包括其他Document,数组等。

b应⽤场景

mongodb的主要⽬标是在键/值存储⽅式(提供了⾼性能和⾼度伸缩性)以及传统的RDBMS系统(丰富的功能)架起⼀座桥梁,集两者的优

势于⼀⾝。mongo适⽤于以下场景:

a.⽹站数据:mongo⾮常适合实时的插⼊,更新与查询,并具备⽹站实时数据存储所需的复制及⾼度伸缩性。

b.缓存:由于性能很⾼,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源

过载。

c.⼤尺⼨、低价值的数据:使⽤传统的关系数据库存储⼀些数据时可能会⽐较贵,在此之前,很多程序员往往会选择传统的⽂件进⾏存储。

d.⾼伸缩性的场景:mongo⾮常适合由数⼗或者数百台服务器组成的数据库。

e.⽤于对象及JSON数据的存储:mongoBSON数据格式⾮常适合⽂档格式化的存储及查询。

b的优缺点

优点:

(1) 弱⼀致性(最终⼀致),更能保证⽤户的访问速度

(2) ⽂档结构的存储⽅式,能够更便捷的获取数据

(3) 内置GridFS,⽀持⼤容量的存储

(4) 在使⽤场合下,千万级别的⽂档对象,近10G的数据,对有索引的ID的查询不会⽐mysql慢,⽽对⾮索引字段的查询,则是全⾯胜出。

缺点:

1)不⽀持事物

2)占⽤空间过⼤,会造成磁盘浪费

3)单机可靠性⽐较差

4)⼤数据量持续插⼊,写⼊性能有较⼤波动

b的持久化⽅案/异常处理

当执⾏写操作时,MongoDB创建⼀个journal来包含确切磁盘位置和改变的字节。因此,如果服务器突然崩溃,启动时,journal会重放崩溃

前并没有刷新到磁盘上的任何写操作。

数据⽂件每隔60s刷新到磁盘上,默认情况下,因此journal只需要持有60s内的写⼊数据。journal预分配了⼏个空⽂件⽤于此⽬的,位

/data/db/journal,命名为_j.0,j.1等等。

MongoDB运⾏很长时间情况下,在journal⽬录下,你会看到类似于_j.6217,_j.6218_j.6219⽂件。这些⽂件是当前的journal⽂件,如

MongoDB⼀直运⾏,这些数字会持续增加。当正常关闭MongoDB时,这些⽂件将被清除,因为正常关机不在需要这些⽇志的。

如果服务器崩溃或kill -9, mongodb再次启动时,会重放journal⽂件,会输出冗长难懂的检验⾏,这表明在正常的恢复。

分布式集群

分布式集群简介

MySQL集群是⼀个⽆共享的(shared-nothing)、分布式节点架构的存储⽅案,其⽬的是提供容错性和⾼性能。

数据更新使⽤读已提交隔离级别(read-committedisolation)来保证所有节点数据的⼀致性,使⽤两阶段提交机制(two-phasedcommit)

证所有节点都有相同的数据(如果任何⼀个写操作失败,则更新失败)。

⽆共享的对等节点使得某台服务器上的更新操作在其他服务器上⽴即可见。传播更新使⽤⼀种复杂的通信机制,这⼀机制专⽤来提供跨⽹

络的⾼吞吐量。

通过多个MySQL服务器分配负载,从⽽最⼤程序地达到⾼性能,通过在不同位置存储数据保证⾼可⽤性和冗余。

分布式集群应⽤场景

解决海量存储问题,⽐如京东B2B就⽤的Mysql分布式集群。

适⽤⼏⼗亿的PVDB的访问。

分布式集群的优缺点

优点:

a) ⾼可⽤性

b)快速的⾃动失效切换

c)灵活的分布式体系结构,没有单点故障

d)⾼吞吐量和低延迟

e)可扩展性强,⽀持在线扩容

缺点:

a)存在很多限制,⽐如:不⽀持外键

b)部署、管理、配置很复杂

c)占⽤磁盘空间⼤,内存⼤

d)备份和恢复不⽅便

e)重启的时候,数据节点将数据load到内存需要很长时间

分布式集群的持久化⽅案

负载均衡。

管理节点备份。