什么是NoSQL

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称,它具有非关系型、分布式、不提供ACID的数据库设计模式等特征。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

SQL 和 NoSQL 的区别

SQL数据库适合那些需求确定和对数据完整性要去严格的项目。NoSQL数据库适用于那些对速度和可扩展性比较看重的那些不相关的,不确定和不断发展的需求。简单来说就是:

  • SQL是精确的。它最适合于具有精确标准的定义明确的项目。典型的使用场景是在线商店和银行系统。
  • NoSQL是多变的。它最适合于具有不确定需求的数据。典型的使用场景是社交网络,客户管理和网络分析系统。

SQL和Nosql的选型和比较

1.关系型数据库和非关系型数据库

SQL (Structured Query Language) 数据库,指关系型数据库。主要代表:SQL Server,Oracle,MySQL等。

NoSQL(Not Only SQL)泛指非关系型数据库,主要代表:MongoDB,Redis等。

2.关系型数据库适合存储结构化数据

如用户的帐号、地址等:

1)这些数据通常需要做结构化查询,比如join,这时候,关系型数据库就要胜出一筹

2)这些数据的规模、增长的速度通常是可以预期的

3)保证数据的事务性、一致性要求。

3.NoSQL适合存储非结构化数据

如发微博、文章、评论:

1)这些数据通常用于模糊处理,如全文搜索、机器学习

2)这些数据是海量的,而且增长的速度是难以预期的,

3)根据数据的特点,NoSQL数据库通常具有无限(至少接近)伸缩性

4)按key获取数据效率很高,但是对join或其他结构化查询的支持就比较差

目前许多大型互联网项目都会选用MySQL(或任何关系型数据库) + NoSQL的组合方案。

NoSQL的常见类型和比较

有四种常见的 NoSQL 数据库类型:列式、文档、图形和内存键值。

1.列式数据

顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

1)对应的nosql: HBase,BigTable等。

2)典型应用场景:按列存储,针对某一列或者某几列的查询有非常大的IO优势。

3)优点:查找速度快,可扩展性强,更容易进行分布式扩展。

4)缺点:功能相对局限。

2.文档数据库

旨在将半结构化数据存储为文档,通常采用 JSON 或 XML 格式。与传统关系数据库不同的是,每个 NoSQL 文档的架构是不同的,可让您更加灵活地整理和存储应用程序数据并减少可选值所需的存储。

1)对应的nosql:CouchDB, MongoDb

2)典型应用场景:存储类似JSON格式的内容,可对某些字段建立索引功能,是最像关系型的数据库。

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

4)缺点:查询性能不高,而且缺乏统一的查询语法。

3.图形数据库

可存储顶点以及称为边缘的直接链路。图形数据库可以在 SQL 和 NoSQL 数据库上构建。顶点和边缘可以拥有各自的相关属性。

1)数据模型:图结构

2)典型应用场景:社交网络,推荐系统等。专注于构建关系图谱,善于处理大量复杂、互连接、低结构化的数据,数据往往变化迅速,且查询频繁。

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

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

4.内存键值存储

可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收,是针对读取密集型应用程序工作负载(例如社交网络、游戏、媒体共享和 Q&A 门户)。内存缓存可将重要数据存储在内存中以实现低延迟访问,从而提高应用程序性能。

1)对应的nosql:Redis,Memcached等

2)典型应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

3)优点:查找速度快。

4)缺点:数据无结构化,通常只被当作字符串或者二进制数据。

【原文】

https://www.toutiao.com/i6594016739183297038/

【转】Redis学习---NoSQL和SQL的区别及使用场景的更多相关文章

  1. MongoDB 1: NoSQL 和 SQL的区别

    导读:本篇博客,主要是结合自己在项目中的使用,简单的阐述一下NoSQL和SQL的区别.那么,根据自己的应用,NoSQL这边,选择的是MongoDB(Redis虽然也是,但属于内存存储,这里不予说明). ...

  2. 为什么使用Nosql:Nosql和SQL的区别

    1.概念: SQL(Structured Query Language)数据库,指关系型数据库.主要代表:SQL Server.Oracle.MySQL.PostgreSQL. NoSQL(Not O ...

  3. 关于NoSQL与SQL的区别

    简单说来:sql是关系型数据库的结构化查询语言,而nosql,一般代指菲关系型数据库,sql语句就不能用来,不过有些有leisql的查询语言,且nosql数据库没有统一的查询语言. 相关参考文章阅读: ...

  4. Redis学习---基础学习[all]

    什么是NoSQL型数据库 NoSQL数据库---NoSQL数据库的分类 Redis学习---NoSQL和SQL的区别及使用场景 Redis学习---负载均衡的原理.分类.实现架构,以及使用场景 什么是 ...

  5. 转载 NoSQL | Redis、Memcache、MongoDB特点、区别以及应用场景

    NoSQL | Redis.Memcache.MongoDB特点.区别以及应用场景 2017-12-12 康哥 码神联盟 本篇文章主要介绍Nosql的一些东西,以及Nosql中比较火的三个数据库Red ...

  6. NoSQL之Redis学习小结

    大数据时代要求: 三V:Volume海量.Velocity实时.Variety多样: 三高:高并发.高可扩.高性能 高并发操作不建议使用关联查询,而使用冗余数据,分布式系统支持不了太多的并发. 横向 ...

  7. 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  8. Redis、Memcache和MongoDB的区别

    >>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...

  9. 分布式缓存技术redis学习(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

随机推荐

  1. Hibernate关联关系映射之一对多双向映射

    一对多映射有两种,一种是单向的,另一种的多向.我们一般是使用双向的,所以我就写写一对多的双向映射. 还是想昨天一样举个例子来说明:作者<===>作品,还是对数据进行增删改查. 我们一般是把 ...

  2. Java subList、toArray、asList 注意点

    1. ArrayList的subList 结果不可以强转成ArrayList,否则抛出ClassCastException异常,原因是subList返回的是ArrayList的内部类SubList,并 ...

  3. ADO.NET 【增】【删】【改】【查】

    数据访问  Using System.Data.SqlClient;   对应命名空间                                       -- SqlConnection   ...

  4. (六)彻底理解synchronized

    1.sychronized简介 在学习知识之前,我们先来看一个现象 public class SynchronizedDemo implements Runnable { private static ...

  5. Vue:v-on自定义事件

    Vue中父组件使用prop向子组件传递数据,那么子组件向父组件使用什么方式传递信息:自定义事件. 1.先来看官网上面教程 每个 Vue 实例都实现了事件接口,即: 使用 $on(eventName)  ...

  6. HDU2444(KB10-B 二分图判定+最大匹配)

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  7. 水平方向margin:auto

    先上图   由图可看到,块级元素的水平方向上又"7大属性":margin-left.border-left.padding-left.margin-left.width.paddi ...

  8. 活字格Web应用平台学习笔记5 - 编辑和删除记录

    了几天,今天上活字格网站一看,他们获奖了,好厉害 荣膺盘古奖!活字格引领企业信息化建设新潮流 好吧,我继续学习,希望早点拿到认证证书. 今天要学的是编辑删除记录.目标: 还是接续之前的工程.做好后是这 ...

  9. Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven)

    Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven) 本篇和 Spring 没有什么关系,只是学习 Spring,必备一些知识,所以放在这里了. 本篇内容: (1)M ...

  10. react native进阶

    一.前沿||潜心修心,学无止尽.生活如此,coding亦然.本人鸟窝,一只正在求职的鸟.联系我可以直接微信:jkxx123321 二.项目总结 **||**文章参考资料:1.  http://blog ...