nosql

来源:互联网 发布:16总决赛骑士数据 编辑:程序博客网 时间:2024/06/06 02:33
nosql:下一代通用数据库(非关系型数据库),其特性有:
非关系、分布式、开源、支持横向扩展
nosql大多是分布式的,因其支持水平扩展,作为分布式系统,要理解CAP和base逻辑
官方非关系型数据库分类:
1.列式存储(Wide Column Store / Column Familie):Hadoop、Hbase、Cassandra
2.文档存储(Document Store):MongoDB、Elastic、CouchDB
文档的概念:为每一行关系型数据库中的数据自动的自带表头、描述信息并组织成jesion格式
3.键值存储/元组存储(key value/tuple store;特点是数据模型极其简单,性能好):
DynamoDB、Riak、Redis、LevelDB
4.图式存储(Graph Databases):Neo4j、Infinite Graph、TITAN
5.多模型数据库:CortexDB、gunDB
6.对象数据库(Object Databases):VelocityDB
7.云数据库:GridGain、Crate Data
8.XML Databases:专门存储xml格式的数据
9.多维数据库:Globals
10.多值数据库(Multivalue Databases)
11.事件源
12.时序数据库(Time Series / Streaming Databases;生成数据后极少改变,但会随着时间不断生成新的数据,像监控系统):
以上主要的nosql数据库有横向扩展的功能,有简洁的API接口,满足base规范;
介绍base之前首先介绍ACID:
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
一致性解释:存储一段数据需要涉及到多个进程时,当多个进程都有可能更改数据,则要确保进程得到的修改完的数据是一模一样的。
CAP理论:任何分布式系统,最多只能满足三个特性中的两个:一致性、可用性、分区容错性。
C:多个数据节点上的数据一致;
A:用户发出请求后的有限时间范围内返回结果;
Pnetwork partition,网络发生分区后,服务是否依然可用;
可用性:主从复制,主系统故障,从系统可用;
分区容错性:允许分区之间的数据短时间内不一致;一旦因为各种故障导致主机之间无法通信,这种状况被称为网络产生了分区
所以系统满足AP特性的同时满足C(弱一致性:允许一段时间内数据不一致),需要遵循base逻辑(基于CAP演化而来,适用于nosql存储系统的标准):
BASEBASE,基于CAP演化而来
BABasically Available,基本可用;
SSoft state,软状态/柔性事务,即状态可以在一个时间窗口内是不同步的;
EEventually consistency,最终一致性;


redis属于nosql的k/v家族,是基于内存的数据结构存储,即所有数据的读写都在内存中,可被用作数据库、缓存和消息队列(中间件),特点:开源、内存存储、数据结构存储。
由于数据存在内存中,为防止断电丢失,Redis会每隔一段时间将数据快照到磁盘,逻辑是内存是数据集存储的地方,磁盘是辅助。支持的数据结构有字符的线性组合、哈希(关联数组)、列表、集合(无序)、有序的集合、位图、地理位置的空间索引、辐射查询。
Redis支持内建的复制、Lua 脚本配置LRU最近最少使用算法完成存储项的淘汰、事务、基于磁盘的持久存储(分为快照式持久和追加日志式持久)、高可用(SentinelRedis Cluster)。
Redis主从复制中,主节点能读能写,从节点只读。
Redis Cluster作用:Redis不使用主从复制,在每个节点都保存部分数据,用户访问A节点时,Redis Cluster会分析请求,将请求转发到有相应数据的B节点,完成响应,过程中不会进行同步。
Redis的全称:REmote DIctionary Server(远程字典服务器)字典指数据结构
Redis是单进程(单核即可),对CPU要求不高,但对I/O要求很高


redis的安装配置:
1.redis的官方站点下载安装

2.epel源中有redis


redis是c/s架构的应用程序,使用的协议是redis,因此需要调用它的API才可以交互,所以redis有专用的客户端,还有第三方工具,能安装在桌面上的图形客户端,linux版需要编译安装,rpm包安装要进行捐助才可以使用
3.主机同步时间

4.安装redis

redis自带sentinel工具,有相应程序,用来配置主从复制后完成高可用。

5.启动服务,不更改监听地址,默认为本机,默认端口为6379

6.redis的命令行客户端工具:

7.使用命令行客户端工具

8.连接本机的redis服务器的命令:

redis一个进程可以创建多个数据库,库是用数字来表示的,比如0号库、1号库等,不更改配置,默认库有16个(0~15),默认在0号库中操作,切换库使用命令:select+序号

在数据库中进行增删改查,没有表的概念,都是键值对,reids支持的数据结构很多,对应的命令也各不相同,常用的命令有:
1.help--------> help+Tab键,会出现命令组,列出通用命令(不同数据结构都可以使用的命令)








help之后依次敲击Tab键,会进行数据结构的变换:

1.首先针对字符串的命令:



2.针对列表的命令(即数组),一个数组中可以有多个元素,数组元素的索引方式是从0开始计数,涉及到先进先出(队列)、后进先出(栈),所以数组可以看作是栈。



L表示left,R表示right,PUSH表示入栈,POP表示出栈

3.针对哈希的命令,以H来表示
哈希即关联数组,数组索引不再是0,1,2,3,而是自定义的字符串;是子key,即value中包含key


4.针对集合的命令,用S表示



5.针对有序集合的命令,用Z表示;
有序集合可以给集合的元素加上索引,还可以加上评分
只有交集并集计算



6.针对发布订阅队列的命令:
一个频道即一个存储信息的队列,可以多人向其中写入数据,也可以多人读取数据,订阅了相关频道,一旦有新数据产生,就会收到通知




原创粉丝点击