NoSQL 概述

NoSQL = Not Only SQL,泛指非关系型数据库

关系型数据库:由表格组成,通过行和列记录数据

但是很多数据,如社交网络,地理位置等的存储并不需要一个固定的格式

NoSQL 的特点:

  1. 方便扩展(数据之间没有关系,很好扩展)
  2. 大数据高性能(Redis 一秒写8万次,读取11万次;NoSQL 的缓存记录级,是一种细粒度的缓存,性能会比较高)
  3. 数据类型是多类型的(不需要事先设计数据库!随取随用!)
  4. 传统的 RDBMSNoSQL 传统的 RDBMS:
  • 结构化组织
  • SQL
  • 数据和关系都存在单独的表中
  • 数据操作语言、数据定义语言
  • 严格的一致性
  • 基础的事务

NoSQL:

  • 不仅仅是数据
  • 没有固定的查询语言
  • 键值对存储、列存储、文档存储、图形数据库(社交关系)
  • 最终一致性
  • CAP 定理 和 BASE (异地多活)
  • 高性能、高可用、高扩展

大数据的 3V 和 3高:

3V 描述问题:

  • 海量 Volumn
  • 多样 Variety
  • 实时 Velocity

3高 对程序的要求:

  • 高并发
  • 高可扩
  • 高性能

NoSQL 的四大分类:

KV 键值对

文档型数据库(bson 格式和 json 一样)

MongoDB :

  • MongoDB 是一个基于分布式文件存储的数据库,C++ 编写,主要用来处理大量的文档
  • MongoDB 是一个介于关系型数据库和非关系型数据库中间的产品
  • MongoDB 是非关系型数据库中功能最丰富,最像关系型数据库的

列存储数据库

  • HBase
  • 分布式文件系统

图关系型数据库

存放关系,比如:朋友圈社交网络,广告推荐

NoSQLBooster汉化知乎 nosql怎么用_数据库

分类

examples

应用场景

数据模型

优点

缺点

键值对(Key-Value)

Redis、Oracle BDB

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等

Key 指向 Value 的键值对,通常用 hash table 来实现

查找速度快

数据无结构化,通常只被当做字符串或者二进制数据

列存储数据库

HBase、Riak

分布式的文件系统

以列簇式存储,将同一列数据存放在一起

查找速度快,可扩展性强,更容易进行分布式扩展

功能相对局限

文档型数据库

CouchDB、MongoDB

Web 应用(与 Key-Value 类似,Value 是结构化的,不同的是数据库能够了解 Value 的内容)

Key-Value 对应的键值对,Value 为结构化数据

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

查询性能不高,而且缺乏统一的查询语句

图形数据库

Neo4J、InfoGrid、Infinite Graph

社交网络,推荐系统等,专注于构建关系图谱

图结构

利用图结构相关算法,比如最短路径寻址,N 度关系查找等

很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案

Redis 入门

Redis = Remote Dictionary Server,即远程字典服务;
是一个开源的使用 ANSI C语言编写、支持网络可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API

是热门的 NoSQL 技术之一,也被称为结构化数据库

memcached一样,为了保证效率,数据都是缓存在内存中
区别是 Redis周期性地 把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave (主从) 同步

Redis 应用

  1. 内存存储、持久化,内存中是断电即失,所以说持久化很重要(rdbaof
  2. 效率高,可以用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器、计数器(浏览器)

rdb
在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot);
实际操作过程是 fork() 一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储

aof
以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录
具体分析,可以参考 RDB 与 AOF 使用分析

Redis 特性

  1. 多样的数据类型
  2. 持久化
  3. 集群
  4. 事务

Windows 下安装 Redis

  1. Windows 版本 Redis 安装包连接
    https://pan.baidu.com/s/1kgvccrEYZaEJTLixWp3L_w 提取码:mj9a
    复制这段内容后打开百度网盘手机App,操作更方便哦
  2. 下载完成,在安装目录下解压缩,可以看到
  3. 开启 Redis,双击 redis-server.exe 即可
    在这里可以看到 Redis 的版本号:3.2.100 64 bit;也可以看到 Redis 的默认端口号:6379
  4. 使用 Redis 客户端连接服务器,双击 redis-cli.exe 即可
    ping 后出现了 PONG,表示已经连接成功

Linux 安装 Redis

  1. 安装 CentOS 链接:CentOS 7 的下载链接 提取码:5ep6
    复制这段内容后打开百度网盘手机App,操作更方便哦
  2. 安装 CentOS 教程可以看以下链接 安装 CentOS
  3. 下载安装包 Redis(linux版) 下载链接 ;然后通过 WSCP 移动到 CentOS 的 opt 目录下
  4. 解压缩,tar -zxvf redis-5.0.7.tar.gz;解压缩之后,可以在相应的目录下看到文件的存在 redis-5.0.7
  5. cd redis-5.0.7 进入解压后的文件,可以看到对应的配置文件;
  6. 安装基本的配置环境 yum install gcc-c++
    中间可能需要输入 y,表示同意继续安装;

    之后可以通过 ggc -v ,查看是否安装成功
  7. 之后可以输入 make 命令,等待它自己加载所需要的东西;可以看到如下结果

    之后,再 make 一下

NoSQLBooster汉化知乎 nosql怎么用_redis_02

  1. 最后,make install;可以看到所有的环境都可以了
  2. redis 的默认安装路径是 /usr/local/bin
  3. 将 Redis 配置文件复制到我们当前目录
  4. Redis 默认不是后台启动的,需要修改配置文件;daemonize no 改为 daemonize yes
  5. 通过我们之前设置好的配置文件启动
  6. 检查是否连接成功,并测试
  7. 新开启一个虚拟机的连接,然后查看 Redis 的进程是否开启
  8. 关闭 Redis
  9. 再次查看进程是否存在