分布式数据库比较

简介: 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等分布式存储差不多,都是主从架构,并实现了原数据的分片和副本。

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

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


相关文章
|
10天前
|
存储 安全 数据管理
新型数据库技术:基于区块链的分布式数据存储系统
传统数据库系统面临着中心化管理、数据安全性和可信度等方面的挑战。本文介绍了一种基于区块链技术的新型数据库系统,通过分布式存储和去中心化的特性,提高了数据的安全性和可信度,同时实现了高效的数据管理和共享。该系统在多个领域如金融、医疗和物联网等具有广阔的应用前景。
|
13天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
48 2
|
20天前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
34 3
|
2月前
|
Oracle 关系型数据库 分布式数据库
分布式数据库集成解决方案
分布式数据库集成解决方案
205 0
|
2天前
|
存储 负载均衡 Go
【Go 语言专栏】使用 Go 语言实现分布式数据库操作
【4月更文挑战第30天】本文探讨了使用Go语言实现分布式数据库操作,强调其在并发性能、网络编程、语法简洁和跨平台性上的优势。关键技术和步骤包括数据分片、数据同步、负载均衡及故障转移。通过实例分析和挑战解决,展示了Go语言在大规模数据处理中的高效与可靠性,为开发者提供指导。
|
3天前
|
SQL 监控 关系型数据库
TiDB 分布式数据库快速入门详解
这些示例展示了TiDB的一些基本操作。实际使用时,你可能需要根据具体的业务需求和环境进行调整和优化。
|
3天前
|
存储 运维 物联网
【专栏】OceanBase 是一种分布式数据库系统
【4月更文挑战第29天】OceanBase 是一款先进的分布式数据库系统,以其分布式架构、高扩展性、高可用性和强一致性特点,应对大规模数据处理挑战。它支持混合负载,适用于金融、电商和物联网等领域,提供高性能、低成本的解决方案。尽管面临技术复杂性、数据迁移和性能优化等问题,通过合理策略可克服挑战。随着技术发展,OceanBase 在数字化时代将持续发挥关键作用。
|
3天前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用合集之在选择分布式数据库时,主要考虑是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6天前
|
存储 安全 数据管理
新一代数据库技术:融合区块链的分布式数据存储系统
传统数据库系统面临着数据安全性、可信度和去中心化等挑战,而区块链技术的兴起为解决这些问题提供了新的思路。本文介绍了一种新一代数据库技术,将区块链技术与传统的分布式数据存储系统相融合,实现了更高水平的数据安全性和可信度,以及去中心化的优势。通过结合区块链的不可篡改性和分布式存储系统的高性能,这一新型数据库技术将在未来的数据管理领域发挥重要作用。
|
8天前
|
存储 分布式计算 Hadoop
基于Hadoop分布式数据库HBase1.0部署及使用
基于Hadoop分布式数据库HBase1.0部署及使用