分布式数据库比较

简介: hbase,elasticsearch,mongodb

数据库是数据持久化存储方案。

关系型数据库mysql已经在我们的项目中广泛应用,并很好的支持了项目的正常运行,那为什么还发展出了分库分表和分布式数据库呢?

1. 关系型数据库mysql的局限性

当表中的数据达到200万行(也有说500万行)后,即使优化后,整体数据库的查询还是明显变慢。原因呢?

先说说mysql数据库正常情况下查询慢的原因:

1)没有加索引或者没有使用到索引;

2)索引么有优化;

3)一次查询的数据量过大;

4)内存不足;

5)出现死锁;

参考:https://www.fengnayun.com/news/content/339357.html

那么数据库的量大了以后的原因:

1)上述问题会dubbo;

2)相同的查询条件下,500万行与10万行需要扫描的数据量是不同的,肯定变慢;

3)如果是二级索引,那么回表的次数会大大增加,磁盘寻道的时间也会加长;

4)当单表达到500万行和原来的10万行数据相比,整体数据库查询到这张表的概率会增大,也就是说对这张大表的数据库IO会增多,那么也会影响整体数据库的性能;也就是会影响到其他表的查询;


那么怎么办:


    答案是 分库分表

2.分库分表

apache  shardingSphere 中间件

把一张大表中的数据分片,实现分式 分库分表,有client和proxy模式,本质  分片。在此不多论述。但是当数据库继续增加,达到亿量甚至更大的时候,这种模式就不合适了。比如原来一张500万行的表分成了3张表,但是当3张表都又达到 500万行,怎么办?好,继续分表。再大呢?继续分。累不累。这时候就需要分布式数据库进行统一管理分片。

3.分布式数据库

那么分布式数据库是咋回事呢?

1)为了解决关系型数据库的数据量增大后查询慢的问题,hbase来了。

hbase是计算和存储分离的架构,存储使用的是hadoop的HDFS(分布式文件系统),计算采用hadoop的mapReduce。他采用了ROOT表和META表来存放region。那么他的查询怎么就快了呢?

看它的查询步骤:ROOT表--》META表--》RegionServer--》查询。

内存中会有MemStore文件,查询的时候先去MemStore中查询,如果没有才去磁盘中进行扫描查找。

一个RegionServer大约管理1000个region,region由各个StoreFile组成,StoreFile与HFile对应,最后刷盘。存储在HDFS上面,而HDFS默认一个文件的大小是128M。也就是说天然分表。

2)那么elasticsearch是这样的吗?

大同小异。

elasticsearch是计算和存储一体的架构,底层搜索引擎是lucene。

lucene不是分布式的,ES就是分布式的lucene而已。

ES的分片其实和hbase等分布式存储差不多,都是主从架构,并实现了原数据的分片和副本。

至此,数据库存储功能演化分析结束。(不包括查询分式的不同,下一篇分析)

分布式数据库的本质-----------》    分片


相关文章
|
3月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
1月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
324 0
|
15天前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
49 15
|
1月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
88 4
|
1月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
46 0
|
3月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
92 5
|
3月前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,阿里云双料冠军!
中国金融分布式数据库,阿里云双料冠军!
76 7
|
3月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
110 1

热门文章

最新文章

下一篇
无影云桌面