NoSQL概述:

1、什么是NoSQL

NoSQL 是 Not Only SQL 的缩写,意即"不仅仅是SQL"的意思,泛指非关系型的数据库。强调Key-Value Stores和文档数据库的优点。

NoSQL产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能

2、NoSQL起源

过去,关系型数据库(SQL Server、Oracle、MySQL)是数据持久化的唯一选择,但随着发展,关系型数据库存在以下问题。

问题1:不能满足高性能查询需求
我们使用:Java、.Net等语言编写程序,是面向对象的。
 但用数据库都是关系型数据库。存储结构是面向对象的,
 但是数据库却是关系的,所以在每次存储或者查询数据时,我们都需要做转换。
类似Hibernate、Mybatis这样的ORM框架确实可以简化这个过程,但是在对高性能查询需求时,这些ORM框架就捉襟见肘了。 问题2:应用程序规模的变大
网络应用程序的规模变大,需要储存更多的数据、服务更多的用户以及需求更多的计算能力。
 为了应对这种情形,我们需要不停的扩展。 扩展分为两类:
一种是纵向扩展,即购买更好的机器,更多的磁盘、更多的内存等等。 另一种是横向扩展,即购买更多的机器组成集群。
在巨大的规模下,纵向扩展发挥的作用并不是很大。 首先单机器性能提升需要巨额的开销并且有着性能的上限,在Google和Facebook这种规模下,永远不可能使用一台机器支撑所有的负载。
鉴于这种情况,我们需要新的数据库,因为关系数据库并不能很好的运行在集群上

3、NoSQL数据库类型

①键值(Key-Value)数据库[Redis/Memcached]
适用场景: 储存用户信息,比如会话、配置文件、参数、购物车等等。这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择。 不适用场景: 1.取代通过键查询,而是通过值来查询。Key-Value数据库中根本没有通过值查询的途径 2.需要储存数据之间的关系。在Key-Value数据库中不能通过两个或以上的键来关联数据。 3.事务的支持。在Key-Value数据库中故障产生时不可以进行回滚。

②面向文档(Document-Oriented)数据库[MongoDB]
数据可以使用XML、JSON或者JSONB等多种形式存储。 适用场景:1.日志 2.分析 不适用场景:不支持事务 ③列存储(Wide Column Store/Column-Family)数据库[HBASE]
列存储数据库将数据储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。 适用场景:1.日志 2.博客平台,我们储存每个信息到不同的列族中。举个例子,标签可以储存在一个,类别可以在一个,而文章则在另一个。 不适用场景:1.ACID事务 2.原型设计。在模型设计之初,我们根本不可能去预测它的查询方式,而一旦查询方式改变,我们就必须重新设计列族。 ④图(Graph-Oriented)数据库[Neo4J]
适用范围很小,主要用用网络拓扑分析 如脉脉的人员关系图等

4、传统RDBMS VS NOSQL

RDBMS

- 高度组织化结构化数据

- 结构化查询语言(SQL)

- 数据和关系都存储在单独的表中。

- 数据操纵语言,数据定义语言

- 严格的一致性

- 基础事务

NoSQL

- 代表着不仅仅是SQL

- 没有声明性查询语言

- 没有预定义的模式

- 键 - 值对存储,列存储,文档存储,图形数据库

- 最终一致性,而非ACID【原子,一致,隔离,持久】属性

- 非结构化和不可预知的数据

- CAP定理【一致性,可用性,容错性】

- 高性能,高可用性和可伸缩性

5、常见的NoSQL

1、Memcached

挥发性(临时性)的键值存储

一般作为关系型数据库的缓存来使用

具有非常快的处理速度

由于存在数据丢失的可能,所以一般用来处理不需要持久保存的数据

用于需要使用expires时(需要定期清除数据)

使用一致性散列(Consistent Hashing)算法来分散数据

2、Tokyo Tyrant

持久性的键值存储

用来处理需要持久保存,高速处理的数据

具有非常快的处理速度

用于不需要定期清除的数据

使用一致性散列(Consistent Hashing)算法来分散数据

3、Redis

兼具Memcached和Tokyo Tyrant优势的键值存储

擅长处理数组类型的数据

具有非常快的处理速度

可以高速处理时间序列的数据,易于处理集合运算

拥有很多可以进行原子操作的方法

使用一致性散列(Consistent Hashing)算法来分散数据

4、MongoDB

面向无需定义表结构的文档数据

具有非常快的处理速度

通过BSON的形式可以保存和查询任何类型的数据

无法进行JOIN处理,但是可以通过嵌入(embed)来实现同样的功能

使用sharding(范围分割)算法来分散数据

Redis简介

1、Redis简介

Redis:Remote Dictionary Server(远程字典服务器)

Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。)。

和Memcache类似,但很大程度补偿了Memcache的不足。

和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,

这就表示,一断电或重启,内存清空,数据丢失。

所以Memcache的应用场景适用于缓存无需持久化的数据。

而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化

2、Redis的特点

Redis读取的速度是110000次/s,写的速度是81000次/s

原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

支持多种数据结构:
string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合) 持久化,主从复制(集群) 支持过期时间,支持事务,消息订阅。 官方不支持window,但是又第三方版本。

3、Redis的应用场景

1、数据缓存(提高访问性能)
将一些数据在短时间之内不会发生变化,而且它们还要被频繁访问,为了提高用户的请求速度和降低网站的负载,降低数据库的读写次数,就把这些数据放到缓存中。 2、会话缓存
(session cache,保存web会话信息)

3、排行榜/计数器
(NGINX+lua+redis计数器进行IP自动封禁) 4、消息队列
(构建实时消息系统,聊天,群聊)

【Redis】01 NoSQL概述 & Redis的更多相关文章

  1. Redis之NoSql入门和概述(二)

    2. 什么是NoSQL?    2.1 NoSQL 概述   NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.随着互联网web2.0网站的兴起, ...

  2. 三十九.NoSQL概述 部署Redis服务 、 部署LNMP+Redis

    1. 搭建Redis服务器 在主机 192.168.4.50 上安装并启用 redis 服务 设置变量test,值为123 查看变量test的值   1.1 搭建redis服务器 1.1.1 安装re ...

  3. Redis 01 概述

    参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 简介 NoSQ ...

  4. Spring Data Redis 让 NoSQL 快如闪电(2)

    [编者按]本文作者为 Xinyu Liu,文章的第一部分重点概述了 Redis 方方面面的特性.在第二部分,将介绍详细的用例.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 把 Redis ...

  5. Spring Data Redis 让 NoSQL 快如闪电 (1)

    [编者按]本文作者为 Xinyu Liu,详细介绍了 Redis 的特性,并辅之以丰富的用例.在本文的第一部分,将重点概述 Redis 的方方面面.文章系国内 ITOM 管理平台 OneAPM 编译呈 ...

  6. NoSQL 之Redis的5大数据类型

    NoSQL 之Redis的5大数据类型 Redis的五大数据类型也称五大数据对象:了解过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisO ...

  7. NoSQL 之 Redis配置与优化

    NoSQL 之 Redis配置与优化 1.关系数据库与非关系型数据库概述 2.关系数据库与非关系型数据库区别 3.非关系型数据库产生背景 4.Redis简介 5.Redis安装部署 6.Redis 命 ...

  8. Redis -- 01 入门

    1. Redis是什么 与memcached 和 couchbase类似,redis是非常快速的基于内存的键值数据库,使用标准c编写,是使用最广泛的缓存中间件.利用Redis提供的五种基本数据类型(S ...

  9. 【NoSql】Redis

    [NoSql]Redis 一. 文档 1. 官网 2. Windows 安装包 3. C# Driver a. ServiceStack.Redis 最新版本是收费的 b. StackExchange ...

  10. NoSQL和Redis简介及Redis在Windows下的安装和使用教程

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/103.html?1455869099 NoSQL简介 介绍redis前,我 ...

随机推荐

  1. 使用Wesky.Net.Opentools库,一行代码实现自动解析实体类summary注释信息(可用于数据实体文档的快速实现)

    使用前,需要对你的项目勾选输出api文档文件. 引用Wesky.Net.OpenTools包,保持1.0.11版本或以上.   为了方便,我直接在昨天的演示基础上,继续给实体类添加注释. 昨天的演示文 ...

  2. P7959 [COCI2014-2015#6] WTF 题解

    P7959 [COCI2014-2015#6] WTF 题解 呃,是一道 DP 题 说实话,原题实际上是不要输出一种方法的--但是似乎放这道题的人想增加一点难度? 这里有两种做法,但都是 DP. 预备 ...

  3. Semantic Kernel入门系列:通过依赖注入管理对象和插件

    前言 本章讲一下在Semantic Kernel中使用DependencyInject(依赖注入),在之前的章节我们都是通过手动创建Kernel对象来完成框架的初始化工作,今天我们用依赖注入的方式来实 ...

  4. bili-emoji自定义表情包设置

    使用图床上传图片.推荐使用聚合图床,简单免费 把图片的图床链接复制到一个txt文件中,如abc.txt 将abc.txt放到koishi目录的非node_modules\koishi-plugin-e ...

  5. ColorEasyDuino上手指南

    介绍 ColorEasyDuino是嘉立创推出的一块Aduino开发板(类似物),具有丰富的外设接口:uart.i2c.spi.adc.pwm等:开发板设计参考原型是Arduino Uno,采用的芯片 ...

  6. 各种语言的OEP大全

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 各种语言的OEP大全 日期:2017-5-19 阿珏 教程 ...

  7. MinIO 图片转文件的分界线RELEASE.2022-05-26T05-48-41Z

    前言:本人想用MinIO存储文件,但是不想最新版本Mete文件,于是各种寻找于是终于找到办法了,原来是官方版本更新导致的.需要我们去寻找相应的版本. 1.官网下载网站 https://dl.min.i ...

  8. 牛客小白月赛96(待F)

    比赛链接:牛客小白月赛96 赛时感受 赛时在前面卡的时间有点长,C题没开longlong wa了n发,D题没考虑负数又wa了n发,然后来写E的时候时间就不长了,匆忙写一次交一发. A 思路 当其中一个 ...

  9. 如何搭建私有的ChatGPT服务

    背景 是这样的,我们几个朋友众筹共享一个chatGPT4 Plus账号,且不想多人公用一个账号登录使用web版,想大家各自搞个本地的ChatGPT客户端,共用一个api-key. 我找了一圈,决定使用 ...

  10. Bloom Filter布隆过滤器

    简介 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 "某样东西一定不存在或者可 ...