NoSql课堂学习总结

一、关系型数据库和非关系型数据库

1、关系型数据库

在这里插入图片描述
关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB等。
实体关系模型(Entity-Relationship Model),简称E-R Model是陈品山(Peter P.S Chen)博士于1976年提出的一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图(Entity-Relationship Diagram))来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

2、非关系型数据库

非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言),据维基百科介绍,NoSQL最早出现于1998 年,是由Carlo Storzzi最早开发的个轻量、开源、不兼容SQL 功能的关系型数据库,2009 年,在一次分布式开源数据库的讨论会上,再次提出了NoSQL 的概念,此时NoSQL主要是指非关系型、分布式、不提供ACID (数据库事务处理的四个基本要素)的数据库设计模式。同年,在亚特兰大举行的“NoSQL(east)”讨论会上,对NoSQL 最普遍的定义是“非关联型的”,强调Key-Value 存储和文档数据库的优点,而不是单纯地反对RDBMS,至此,NoSQL 开始正式出现在世人面前。NoSQL描述的是大量结构化数据存储方法的集合,根据结构化方法以及应用场合的不同,主要可以将NoSQL分为以下几类。
(1)Column-Oriented
面向检索的列式存储,其存储结构为列式结构,同于关系型数据库的行式结构,这种结构会让很多统计聚合操作更简单方便,使系统具有较高的可扩展性。这类数据库还可以适应海量数据的增加以及数据结构的变化,这个特点与云计算所需的相关需求是相符合的,比如GoogleAppengine的BigTable以及相同设计理念的Hadoop子系统HaBase就是这类的典型代表。需要特别指出的是,Big Table特别适用于MapReduce处理,这对于云计算的发展有很高的适应性。
(2)Key-Value。
面向高性能并发读/写的缓存存储,其结构类似于数据结构中的Hash表,每个Key分别对应一个Value,能够提供非常快的查询速度、大数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作。Key-Value数据库的主要特点是具有极高的并发读/写性能,非常适合作为缓存系统使用。MemcacheDB、BerkeleyDB、Redis、Flare就是Key-Value数据库的代表。
(3)Document-Oriented。
面向海量数据访问的文档存储,这类存储的结构与Key-Value非常相似,也是每个Key分别对应一个Value,但是这个Value主要以JSON(JavaScriptObjectNotations)或者XML等格式的文档来进行存储。这种存储方式可以很方便地被面向对象的语言所使用。这类数据库可在海量的数据中快速查询数据,典型代表为MongoDB、CouchDB等。
在这里插入图片描述

二、非关系型数据库的优势

1、 优点

1.处理高并发、大批量数据的能力强
2.支持分布式集群,负载均衡,性能高
3.解决“阻抗失谐”问题
4.内存级数据库,查询速度快
5.存储格式多,支持key-value形式、文档形式、图片形式
6.没有多表连接查询机制的限制,扩展性高

2、典型的NoSQL数据库

临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase)

三、Redis和MongoDB常用命令

1、Redis命令

keys 命令
? 匹配一个字符
* 匹配任意个(包括0个)字符
[] 匹配括号间的任一个字符,可以使用 “-” 符号表示一个范围,如 a[b-d] 可以匹配 “ab”,“ac”,“ad”
\x 匹配字符x,用于转义符号,如果要匹配 “?” 就需要使用 ?

判断一个键值是否存在
exists key
如果存在,返回整数类型 1 ,否则返回 0

删除键
del key [key…]
可以删除一个或多个键,返回值是删除的键的个数
注意:不支持通配符删除

获得键值的数据类型
type key
返回值可能是 string(字符串类型) hash(散列类型) list(列表类型) set(集合类型) zset(有序集合类型)

赋值与取值
set key value 赋值
get key 取值

递增数字
incr key
当存储的字符串是整数形式时,redis提供了一个使用的命令 incr 作用是让当前的键值递增,并返回递增后的值
incr num
当要操作的键不存在时会默认键值为 0 ,所以第一次递增后的结果是 1 ,当键值不是整数时 redis会提示错误

增加指定的整数
incrby key increment
incrby 命令与 incr 命令基本一样,只不过前者可以通过 increment 参数指定一次增加的数值如:
incrby num 2
incrby num 3

减少指定的整数
decr key
decrby key increment
desc 命令与incr 命令用法相同,只不过是让键值递减
decrby 命令与 incrby命令用法相同

增加指定浮点数
incrbyfloat key increment
incrbyfloat 命令类似 incrby 命令,差别是前者可以递增一个双精度浮点数,如:
incrbyfloat num 2.7
注意: ( 受reids 版本限制,版本需要大于 2.6 版本)

向尾部追加值
append key value
作用是向键值的末尾追加 value ,如果键不存在则将改键的值设置为 value,即相当于 set key value。返回值是追加后字符串的长度
如:append foo " hello word!"

获取字符串长度
strlen key
返回键值的长度,如果键不存在则返回0

同时 获得/设置 多个键值
mget key [key…]
mset key value [key value …]

位操作
getbit key offset
setbit key offset val

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值