Code前端首页关于Code前端联系我们

MongoDB、Hbase、Redis等NoSQL优缺点及应用场景对比

terry 2年前 (2023-09-26) 阅读数 81 #数据库

NoSQL的四种主要类型

NoSQL数据库在整个数据库领域的地位不言而喻。在大数据时代,RDBMS虽然优秀,但由于数据规模的快速增长和数据模型的日益复杂,RDBMS逐渐无法应对很多数据库处理任务。 NoSQL目前凭借易扩展、大数据量、高性能、灵活的数据模型在数据库领域成功立足。

如今,大家基本一致认为NoSQL数据库分为四大类:键值数据库、文档数据库、列数据库、图数据库。每种类型的数据库都可以解决关系数据无法解决的问题。在实际应用中,NoSQL数据库分类的界限并不是那么明显,往往是几种类型的组合。

MongoDB、Hbase、Redis等NoSQL优劣势、应用场景对比

主流nosql详解:MongoDB、Hbase、Redis

MongoDB、Hbase、Redis等NoSQL优劣势、应用场景对比

MongoDB

MongoDB是一个高性能、无模式的开源文档数据库,开发语言为C++。它可以在许多场景中用来替代传统的关系数据库或键/值存储。

1。 MongoDB 的特点

  • 使用的语言:C++
  • 特点:保留了一些友好的 SQL 功能(查询、索引)。
  • 许可证:AGPL(发起方:Apache)
  • 协议:自定义、二进制(BSON)
  • 主从复制(支持自动错误恢复,采用集合复制)
  • 内置分片机制支持javascript表达式查询
  • 可以执行任意服务器端javascript函数
  • 就地更新支持比CouchDB更好
  • 存储数据时使用内存进行文件映射
  • 性能相关比功能需求更关注
  • 建议启用日志功能(参数--journal)
  • 在 32 位操作系统上,数据库的大小限制为约 2.5 Gb
  • 空数据库占用约 192 Mb
  • 使用 GridFS 存储大数据或元数据(不是真正的文件系统)

2。 MongoDB 的优点:

1)更高的写入负载,MongoDB 具有更高的插入速度。

2)操作大型简单表格。当数据表太大时,可以方便地进行表拆分。

3)高可用性,M-S设置不仅方便,而且快捷。 MongoDB还可以快速、安全、自动地实现节点(数据中心)故障转移。

4)快速查询,MongoDB支持像管道一样的二维空间索引,因此可以快速准确地从指定位置检索数据。当MongoDB启动时,数据库中的数据以文件映射的形式加载到内存中。如果内存资源足够丰富,将会显着提高数据库的查询速度。

5) 随着非结构化数据的快速增长,添加列在某些情况下可能会阻塞整个数据库或增加负载,从而导致性能下降。由于MongoDB的数据结构模式较弱,添加新字段不会影响旧表。没有影响,整个过程会很快。

3。 MongoDB 的缺点:

1)不支持事务。

2) MongoDB 占用空间太大。

3) MongoDB 没有高级维护工具。

4。 MongoDB应用场景

1.)适合实时插入、更新和查询,具有实时应用数据存储所需的复制和高扩展性;

2)非常适合以标准化格式存储和搜索文档;

3.) 高扩展性场景:MongoDB非常适合由数十或数百台服务器组成的数据库。

4.) 关注性能而非功能。

HBase

HBase 是 Apache Hadoop 中的一个子项目。它是bigtable 的开源版本。实现的语言是Java(因此依赖于Java SDK)。 HBase依赖于Hadoop的HDFS(分布式文件系统)作为最基本的存储单元。

1.HBase 特点:

  • 语言:Java
  • 特点:支持数十亿行 编者注 4)
  • 根据 BigTable 建模
  • 采用真正的分布式 Map/Reduce 架构O
  • 高-性能 Thrift 网关
  • 在服务器端通过扫描和过滤实现查询
  • 流量预测
  • 支持 XML、Protobuf 和二进制 HTTP
  • Cascade、Hive 和 Pig 源和接收器模块
  • 基于 Jruby 的 shell (JIRB)
  • 配置更改和小升级将回滚
  • 不会出现单点故障率
  • 与随机访问的 MySQL 的性能相当

3。 HBase的优点

1)存储容量大,一张表可以容纳数亿行、数百万列;

2。 )可以通过版本获取,可以找到需要的历史版本数据;

3.)负载较高时,只需添加机器即可实现水平分段的扩展,与Hadoop无缝集成保证数据可靠性(HDFS)和海量数据分析(MapReduce)的高性能;

4.)基于第3点,可以有效防止个别故障点的发生。 ?如何配置,比如持久化配置),缺乏文档;

3。占用大量内存,而且由于是基于针对批量解析优化的HDFS构建的,因此读取性能不高;

4。 API 比较 其他 NoSql 相当笨重。

5。 HBasic可用场景

1)bigtable数据存储;

2)请求数据版本的要求;

3)应对海量数据的简单扩展需求。

Redis

Redis是一个用ANSI C编写的开源日志型键值数据库,支持网络,可以基于内存和持久化,并提供多种语言的API。目前开发工​​作由 VMware 提供。 ?

  • 不过从2.0版本开始可以将数据交换到硬盘上(注意,2.4之后的版本不支持此功能!)
  • 主从复制(见编者注3)
  • 虽然简单的数据或key value均采用索引哈希表,同时也支持ZREVRANGEBYSCORE等复杂操作。
  • INCR & co(适合计算限制或统计)
  • 支持集合(还支持 union/diff/inter)
  • 支持列表(也支持队列;阻止出栈操作)
  • 支持哈希表(具有多个字段的对象)
  • 支持排序集(高分表,适合范围查询)
  • Redis 事务支持 数据到过期数据(类似于快速缓存设计)
  • Pub/Sub 允许用户实现消息机制
  • 2。 Redis的优点

    1)非常丰富的数据结构;

    2.)Redis提供了事务功能,可以保证一系列命令的原子性,不会被任何操作打断;

    3.)数据存储在内存中,读写速度非常快,可以达到10w/s的频率。 ?如果是这样,整个数据库数据需要定期写入磁盘,这是非常昂贵的;而aof方法只跟踪变化的数据,类似于mysql的binlog方法,但是添加的日志可能太大,所有操作都要重复。这样做一次,恢复速度会很慢;

    3)由于是内存数据库,一台机器存储的数据量取决于机器本身的内存大小。即使redis本身有key过期策略,但仍然需要提前猜测并存储。如果内存增长过快,则需要定期删除数据。

    4.Redis应用场景:

    最佳应用场景:适合数据变化快、数据库大小可以保持的应用(适合内存容量)。

    例如:微博、数据分析、实时数据采集、实时沟通等。

    版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    热门