Redis-NoSQL入门和概述(一)
NoSQL简史及定义
NoSQL 这个术语最早是在 1998 年被Carlo Strozzi命名在他的轻量的,开源的关系型数据库上的,但是该数据库没有提供标准的SQL接口;
在2009 年再次被Eric Evans提起,讨论分布式开源数据库的问题,这是的NoSQL主要指的非关系型,分布式的,不提供关系型的atomicity(A),consistency(C),isolation(I),durability(D) 即ACID的特性;
紧接着2009年在亚特兰大举行的no:sql讨论会是一个里程碑,当时的口号是select fun, profit from real_world where relational=false,因此之后对于NoSQL最普遍的解释为非关系型的,强调Key-Value和Document(文档)数据库的优点,并非单纯的反对关系型数据库;
下面给NoSQL下一个定义,如果你在网上查阅资料会得到很多种定义,大家的理解不尽相同,我这里引用 http://nosql-database.org/ 网站上的定义:下一代,主要解决以下几点:非关系数据库、分布式数据库、开源数据库和水平扩展数据库
原文信息:Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable
对于 NoSQL这个词语,现在最普遍的理解就是:Not Only SQL
常见的NoSQl数据库以及分类
NoSQL 仅仅是一个概念,还可以根据数据库存储数据的模型和特点分为以下种类
Key-Value存储,代表数据库为Redis,可以通过Key快速的查找到对应的Value值,非常适合存储不涉及过多数据关系的业务数据,一般保存在内存中,可以有效的减少读写磁盘的IO次数,提高了读写性能Documnet文档型 存储,代表数据库为MongoDB, 文档的内容一般使用类似JSON的格式,存储的内容就是文档型的,由于文档数据库的no-schema的特性,可以存储和读取任意的数据,很好的解决的数据结构字段不确定的问题。对于文档型的数据库,一般是可以在某个字段上建立索引的等,文档之间可以进行关联,也就是说可以实现一些关系型数据库的功能特性XML存储,代表数据库为Berkeley DB XMl(BDB XML),是一个嵌入式数据库,专门用于存储和检索XML格式的文档,支持XQuery这种查询语言对XML文档进行高效的查询Graph图存储 代表数据库为Neo4J为最流行的图数据库,应用图形理论(这里可以学习一下有关图的数据结构)存储实体之间的关系信息,最常见的应用就是保存社交网络中人与人之间的关系比如微信好友之间的关系,还可以使用在推荐系统,如果我们将数据以图的形式表现,那么将会非常有益于推荐规则的制定,这类数据库可以很方便了解决了关系型数据库存储这类数据的缺点,查询慢,设计复杂的问题Column列存储 代表数据库为HBase,传统的关系型数据库是按照行来存储数据的,因此可以称为“行数据库”,而列数据库是按照列来进行存储数据的,使用列存储可以的根据某一列数据类型特征选择不同的算法来压缩数据,提高存储空间的利用率;当读取多条数据的同一列的时候,读取效率非常高,因为这些列的数据都放在一起存储的;该类型的数据库适合大量的数据存储的应用场景不适合小量的数据存储的应用场景,多用于大数据处理方面Object对象存储 代表数据库db4o该类型的数据库用的不多,主要特点是:通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据
对于现在我们听说的Elasticsearch和NoSQL的关系可以查这篇文章 https://www.elastic.co/cn/blog/found-elasticsearch-as-nosql ,可以把它归类为文档数据库的一种
对于非常详细的NoSQL数据库分类和NoSQL列表的详细信息(现已经超过255个了)可以查看这个网站 http://nosql-database.org/
关系型数据库与NoSQL数据库的区别
关系型数据库特点
- 高度组织化,结构化数据
- 结构化查询语言(SQL)
- 数据操作语言(DML),数据定义语言(DDL)
- 多表之间进行关联查询(
join) - 严格的一致性(事务处理)
- ACID模型
对于关系型数据库的事务ACID特性,这里做一下解释:
A(Atomicity): 原子性,原子的概念就是不可分隔,也就是说事务中的操作要么全部完成,要么都不做,事务成功的条件是事务中的所有操作都成功,只要事务中有一个操作失败,真个事务就失败,就行回滚C(Consistency): 一致性,指进行事务操作后,由原来的一致性状态变成另一种一致性的状态,也就是事务提交后,或者事务回滚后,数据库的完整性一致性约束不能被破坏。任何数据写入数据库必须是有效的根据已定义的规则,包括约束,触发器,任何组合,引用完整性保证主键,外键关系I(Isolation): 隔离性,事务之间不会相互影响,每个事务是彼此独立的,也就是在一个事务提交之前对其他事务是不可见的D(Durability): 持久性,指一旦事务提交后,它所做的修改将会永久的保存在数据库中,即使出现服务宕机也不会丢失
NoSQL数据库特点
- 没有固定的数据结构,键-值对存储,列存储,文档存储,图形数据库,可以灵活的进行扩展
- 没有标准的查询话语言,几乎每一种
NoSQL数据库都会有自己独特的查询语言 - 最终一致性,非ACID
- CAP模型
- 高性能,可扩展,非常容易进行水平扩展
说明:这里CAP只是简单提了一下,在下一篇会有文章专门来解释CAP定理
NoSQL和SQL的区别
- 关系型数据库基于
ACID模型,NoSQL非关系型基于CAP模型 - 数据存储结构:关系型数据库一般都是固定的表结构,通过
DDL语句来进行修改,不是很容易进行扩展;而NoSQL非关系型存储的机制就比较多了,就如上面所说的基于文档的,基于键-指的等等,对数据的格式十分灵活没有固定的表结构,方便进行扩展 - 数据的一致性:
NoSQL非关系型数据库强调最终一致性,没有像关系型数据库ACID强调强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,因此如果你的业务对于数据的一致性要求很高,那么非关系型数据库并不一个很好的选择
思考:对于关系型数据库与NoSQL非关系型数据库 你有什么样不同的理解,欢迎留言讨论。
Redis-NoSQL入门和概述(一)的更多相关文章
- Redis(一):NoSQL入门和概述
NoSQL入门和概述目录导航: NoSQL入门概述 3V+3高 当下的NoSQL经典应用 NoSQL数据模型简介 NoSQL数据库的四大分类 在分布式数据库中CAP原理CAP+BASE NoSQL 入 ...
- Redis学习一:Nosql入门和概述
现在Redis越来越火,为了适应技术的发展,开始学习一下Redis,在学习Redis之前先学习一下Nosql. 第一部分:入门概述 1.1 互联网时代背景下大机遇,为什么用nosql 1.1.1 单机 ...
- Redis之NoSql入门和概述(二)
2. 什么是NoSQL? 2.1 NoSQL 概述 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.随着互联网web2.0网站的兴起, ...
- Redis之NoSql入门和概述(一)
1. 为什么用 NoSQL? NoSQL指的是非关系型的数据库,NoSQL也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.NoSQL用于超大规模数据的存储.这 ...
- 1.NoSQL入门和概述
入门概述: 1.为什么要用到NoSQL a) 单机MySQL的美好年代,在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付.在那个时候,更多的都是静态网页,动态交互类型的网站不多. ...
- 一篇文章带你了解NoSql数据库——Redis简单入门
一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...
- Redis - NoSQL数据库技术(一)
NoSQL入门概述(一) 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 什么是NoSQL NoSQL(NoSQL - Not Only SQL),意“不仅仅是SQL”: 泛指非关系 ...
- 【Redis3.0.x】NoSql 入门
Redis3.0.x NoSql 入门 概述 NoSQL(Not Only SQL ),即不仅仅是 SQL,泛指非关系型的数据库.NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑 ...
- .NET分布式缓存Redis从入门到实战
一.课程介绍 今天阿笨给大家带来一堂NOSQL的课程,本期的主角是Redis.希望大家学完本次分享课程后对redis有一个基本的了解和认识,并且熟悉和掌握 Redis在.NET中的使用. 本次分享课程 ...
- NoSQL入门)(详细)
NoSQL入门 (原创:黑小子-余) 1.NoSQL是什么 NoSql(NoSQL=Not Only SQL),意即“不仅仅是SQL”,泛指菲关系型数据库.传统的关系数据库在应付web2.0网站,特别 ...
随机推荐
- php中 array_filter函数 的总结
1.用此函数来过滤数组中的空元素 $arr1 = array('a'=>1,'b'=>0,'c'=>'','d'=>null,'e'=>5,'f'=>false); ...
- HTML的基本结构和标签分类
HTML:超文本标记语言 HTML基本结构 <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...
- 弹性FLEX布局
页面布局一直都是web应用样式设计的重点 我们传统的布局方式都是基于盒模型的 利用display.position.float来布局有一定局限性 比如说实现自适应垂直居中 随着响应式布局的流行,CSS ...
- 使用国内阿里maven私服方法
方法1,在maven的config下setings.xml文件中加入以下代码 <mirrors> <mirror> <id>mirrorId</id> ...
- js数组冒泡排序
文章地址 https://www.cnblogs.com/sandraryan/ js数组的冒泡排序是最经典的一种排序方式(我以为). 冒泡排序是吧一组数组的元素两两比较,交换位置,通过多轮比较,实现 ...
- NLP --- 条件随机场CRF详解 重点 特征函数 转移矩阵
上一节我们介绍了CRF的背景,本节开始进入CRF的正式的定义,简单来说条件随机场就是定义在隐马尔科夫过程的无向图模型,外加可观测符号X,这个X是整个可观测向量.而我们前面学习的HMM算法,默认可观测符 ...
- 2016.1.22 扩充临时表空间解决ora-01652错误
今天运行一个复杂查询时报错ora-01652 无法通过128 扩展temp段, 网上说是临时表空间大小不够,运行了脚本调整临时表空间,问题解决 alter database tempfile '/ap ...
- thinkphp3.2如何自动生成后台模块并且怎么访问
https://blog.csdn.net/whulovely/article/details/72773729 步骤一:在入口文件index.php下绑定Admin模块(这时候别再Home同级手动创 ...
- H3C RIP基本配置
- H3C Hosts文件