NoSQL(MongoDB,Hbase,Redis)介绍

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: NoSQL,泛指非关系型的数据库,随着互联网的发展传统的关系型数据库面对持续增长的数据处理起来显得越来越力不从心,此时非关系型数据库应运而生。


 NoSQL,泛指非关系型的数据库,随着互联网的发展传统的关系型数据库面对持续增长的数据处理起来显得越来越力不从心,此时非关系型数据库应运而生。

NoSQL数据库

四种类型

 目前大家基本认同将NoSQL数据库分为四大类:键值存储数据库,文档型数据库,列存储数据库和图形数据库,其中每一种类型的数据库都能够解决关系型数据不能解决的问题。在实际应用中,NoSQL数据库的分类界限其实没有那么明显,往往会是多种类型的组合体。

image.png

MongoDB

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

1.MongoDB特点

   所用语言:C++

   特点:保留了SQL一些友好的特性(查询,索引)。

   使用许可: AGPL(发起者: Apache)

   协议: Custom, binary( BSON)

   Master/slave复制(支持自动错误恢复,使用 sets 复制)

   内建分片机制

   支持 javascript表达式查询

   可在服务器端执行任意的 javascript函数

   update-in-place支持比CouchDB更好

   在数据存储时采用内存到文件映射

   对性能的关注超过对功能的要求

   建议最好打开日志功能(参数 --journal)

   在32位操作系统上,数据库大小限制在约2.5Gb

   空数据库大约占 192Mb

   采用 GridFS存储大数据或元数据(不是真正的文件系统)

2.MongoDB优点

   更高的写负载,MongoDB拥有更高的插入速度。

   处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。

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

   快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置 获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内 存资源相当丰富的话,这将极大地提高数据库的查询速度。

   非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而 导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响, 整个过程会非常快速。

3.MongoDB缺点:

   不支持事务。

   MongoDB占用空间过大 。

   MongoDB没有成熟的维护工具。

4.MongoDB应用场景

   适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性;

   非常适合文档化格式的存储及查询;

   高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。

   对性能的关注超过对功能的要求。

HBase

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

1.HBase 特点:

   所用语言: Java

   特点:支持数十亿行X上百万列

   使用许可: Apache

   协议:HTTP/REST (支持 Thrift,见编注4)

   在 BigTable之后建模

   采用分布式架构 Map/reduce

   对实时查询进行优化

   高性能 Thrift网关

   通过在server端扫描及过滤实现对查询操作预判

   支持 XML, Protobuf, 和binary的HTTP

   Cascading, hive, and pig source and sink modules

   基于 Jruby( JIRB)的shell

   对配置改变和较小的升级都会重新回滚

   不会出现单点故障

   堪比MySQL的随机访问性能

2. HBase 优点

   存储容量大,一个表可以容纳上亿行,上百万列;

   可通过版本进行检索,能搜到所需的历史版本数据;

   负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce);

   在第3点的基础上可有效避免单点故障的发生。

3.HBase 缺点

   基于Java语言实现及Hadoop架构意味着其API更适用于Java项目;

   node开发环境下所需依赖项较多、配置麻烦(或不知如何配置,如持久化配置),缺乏文档;

   占用内存很大,且鉴于建立在为批量分析而优化的HDFS上,导致读取性能不高;

   API相比其它 NoSql 的相对笨拙。

4.HBase 适用场景

   bigtable类型的数据存储;

   对数据有版本查询需求;

   应对超大数据量要求扩展简单的需求。

Redis

 Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。

1.Redis 特点:

   所用语言:C/C++

   特点:运行异常快

   使用许可: BSD

   协议:类 Telnet

   有硬盘存储支持的内存数据库,

   但自2.0版本以后可以将数据交换到硬盘(注意, 2.4以后版本不支持该特性!)

   Master-slave复制(见编注3)

   虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如 ZREVRANGEBYSCORE。

   INCR & co (适合计算极限值或统计数据)

   支持 sets(同时也支持 union/diff/inter)

   支持列表(同时也支持队列;阻塞式 pop操作)

   支持哈希表(带有多个域的对象)

   支持排序 sets(高得分表,适用于范围查询)

   Redis支持事务

   支持将数据设置成过期数据(类似快速缓冲区设计)

   Pub/Sub允许用户实现消息机制

2. Redis 优势

   非常丰富的数据结构;

   Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断;

   数据存在内存中,读写非常的高速,可以达到10w/s的频率。

3.Redis 缺点

   Redis3.0后才出来官方的集群方案,但仍存在一些架构上的问题;

   持久化功能体验不佳——通过快照方法实现的话,需要每隔一段时间将整个数据库的数据写到磁盘上,代价非常高;而aof方法只追踪变化的数据,类似于mysql的binlog方法,但追加log可能过大,同时所有操作均要重新执行一遍,恢复速度慢;

   由于是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然redis本身有key过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。

4.Redis 应用场景:

 最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。

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


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
20 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
1月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
25 1
|
3月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
3月前
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
75 0
|
3月前
|
存储 SQL NoSQL
探索数据存储的多样性:深入比较Entity Framework Core与NoSQL数据库MongoDB的特性与应用
【8月更文挑战第31天】在现代软件开发中,选择合适的数据存储方案对应用性能至关重要。本文通过对比Entity Framework Core(EF Core)和MongoDB,探讨两者的特点及适用场景。EF Core作为.NET生态中的ORM,简化了SQL数据库的交互;MongoDB则是一种灵活的NoSQL文档数据库,适合处理大量非结构化数据。两者在数据模型、查询方式及性能上各有优势,选择时需根据具体应用需求决定。理解这些差异有助于做出更合理的技术选型。
77 0
|
3月前
|
存储 NoSQL 关系型数据库
MongoDB保姆级指南(上):七万字从零到进阶,助你掌握又一款强大的NoSQL!
MongoDB是数据库家族中的一员,是一款专为扩展性、高性能和高可用而设计的数据库,它可以从单节点部署扩展到大型、复杂的多数据中心架构,也能提供高性能的数据读写操作;而且提供了数据复制、无感知的故障自动选主等功能,从而实现数据节点高可用。
192 5
|
4月前
|
存储 NoSQL Java
使用Spring Boot和MongoDB构建NoSQL应用
使用Spring Boot和MongoDB构建NoSQL应用
|
4月前
|
存储 NoSQL Java
使用MongoDB实现NoSQL数据库的最佳实践
使用MongoDB实现NoSQL数据库的最佳实践
|
4月前
|
负载均衡 NoSQL 中间件
|
5月前
|
存储 NoSQL 关系型数据库
MongoDB:开启你的NoSQL之旅(一)
MongoDB:开启你的NoSQL之旅(一)