SQL和NoSQL


目前的数据库系统非常多,有传统的关系型的数据库系统(又被称为SQL数据库系统),有最近几年流行起来的NoSQL数据库系统。其中NoSQL数据库系统又分为很多种不同的类型,根据各个系统所支持的数据模型的不同,可以分为很多类,下面做一个简单的分类,更多的分类请参见dbengines的排名。

1、SQL数据库系统

==================

SQL数据库系统目前主流的产品有开源的MySQL、PostgreSQL、MariaDB等,它是基于关系模型设计的数据库系统。

关系型数据库系统目前主要使用在OLTP场景下,一般在构建业务系统的时候,后台数据的存储主要存在关系型数据库系统中。

2、NoSQL数据库系统

==================

NoSQL的含义是Not Only SQL,指的是它不仅仅包括传统的关系型数据库系统,还有其他类型的数据库系统。

当前NoSQL的概念主要指的是No SQL,即非SQL数据库系统。从这里可以看出NoSQL数据库系统中的NoSQL的含义是Not Only SQL的子集。

NoSQL数据库系统产品比较多,可以按照支持的数据模型不同而分类为四类。

2.1 键值数据库系统(Key-Value)
----------------------------------------------
这一类数据库使用了一个哈希表,这个表存储的是key-Value对。Key-Value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key-Value就显得效率低下了。
目前主流的Key-Value数据库系统有:Redis, Memcached,Tokyo Cabinet/Tyrant, Voldemort, Oracle Berkeley DB等。
 
2.2 列存储数据库(Wide column stores)
---------------------------------------------------------
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来管理的。
目前主流的列式数据库系统有:Cassandra, HBase, Riak等。
 
2.3 文档数据库系统(document stores)
-----------------------------------------------------------
文档型数据库系统的灵感是来源于Lotus Notes办公软件的,而且它同第一种键值数据库系统相类似。该类型的数据模型是版本化的文档,或者以特定格式存储的半结构化的文档,比如Json格式的文档。
文档型数据库可以看作是键值数据库的升级版,允许嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
目前主流的产品有:CouchDB, MongoDb。国内也有文档型数据库SequoiaDB,目前已经开源。
 
2.4 图数据库系统(graph dbms)
-------------------------------------------------
图数据库系统是基于图这种数据模型而设计的数据库系统。
目前主流的产品有:Neo4J, InfoGrid, Infinite Graph,JanusGraph等。
 
目前,NoSQL数据库在以下的这几种情况下比较适用:
1、数据模型比较简单。
2、需要灵活性更强的IT系统。
3、对数据库性能要求较高。
4、不需要高度的数据一致性。
5、对于给定key,比较容易映射复杂值的环境。
 
 
参考资料
1、https://blog.csdn.net/chenleixing/article/details/43192639
2、https://zhuanlan.zhihu.com/p/32826557
 
 
 

SQL和NoSQL的更多相关文章

  1. SQL vs NoSQL 没有硝烟的战争!

    声明:本文译自SQL vs NoSQL The Differences,如需转载请注明出处. SQL(结构化查询语言)数据库作为一个主要的数据存储机制已经超过40个年头了.随着web应用和像MySQL ...

  2. SQL与NoSQL(关系型与非关系型)数据库的区别

    永远正确的经典答案依然是:具体问题具体分析. 数据表VS.数据集 关系型和非关系型数据库的主要差异是数据存储的方式.关系型数据天然就是表格式的,因此存储在数据表的行和列中.数据表可以彼此关联协作存储, ...

  3. SQL和NOSQL有区别吗?

    在大数据高速发展的今天,数据量在不断的增加,传统的数据库可能不能满足人们的需求了,这个时候新霸哥注意到了NOSQL出现了可以解决这个问题.我们知道sql数据库可以存储数据和处理数据,但是NOSQL最大 ...

  4. SQL VS NoSQL 如何选择数据库

    在前一篇文章中我们主要的讨论了SQL与NoSQL数据库之间的主要的差别.接下来,我们将会利用上一篇中的知识来确定在特定的场景中如何确定比较好的选择. 首先我们先来总结一下: SQL数据库: ​使用表存 ...

  5. MySQL与NoSQL——SQL与NoSQL的融合

    来源:http://www.cnblogs.com/sunli/archive/2011/05/11/mysql-nosql.html 写这一篇内容的原因是MySQL5.6.2突然推出了memcach ...

  6. SQL VS NoSQL

    (关系型与非关系型)数据库的区别: 关系型和非关系型数据库的主要差异是数据存储的方式 1.1 数据表 VS 数据集 关系型数据天然就是表格式的,因此存储在数据表的行和列中.数据表可以彼此关联协作存储, ...

  7. 数据库 --> SQL 和 NoSQL 的区别

    SQL 和 NoSQL 的区别   一.概念 SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源), ...

  8. 大数据学习资料之SQL与NOSQL数据库

    这几年的大数据热潮带动了一激活了一大批hadoop学习爱好者.有自学hadoop的,有报名培训班学习的.所有接触过hadoop的人都知道,单独搭建hadoop里每个组建都需要运行环境.修改配置文件测试 ...

  9. SQL与NoSQL的CRUD对照

    SQL与NoSQL的CRUD对照 flyfish 2015-7-21 Create, Read, Update and Delete (CRUD) SQL方式 查 SELECT 列名称 FROM 表名 ...

  10. HandlerSocket ---MySQL与NoSQL ---SQL与NoSQL的融合(转)

    项目地址:https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL 写这一篇内容的原因是MySQL5.6.2突然推出了memcached的功能 ...

随机推荐

  1. react style: 二级菜单

    1.样式 @import "../../styles/varibles"; .app-sidebar { overflow: hidden; width: 180px; > ...

  2. Java加载jar文件并调用jar文件当中有参数和返回值的方法

    在工作当中经常遇到反编译后的jar文件,并要传入参数了解其中的某些方法的输出,想到Java里面的反射可以实现加载jar文件并调用其中的方法来达到自己的目的.就写了个Demo代码. 以下的类可以编译生成 ...

  3. (三十七)js改变this指向的方法

    最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧. 1.改变函数内部的this指向的三种方法 ...

  4. MFC多语言程序版本,在不同的windows系统上的使用 FP_SetThreadUILanguage

    from: http://www.cnblogs.com/qijicxl/p/3840157.html 如何使MFC程序界面支持多国语言?这次使用后给自己做一个总结. 我们使用vc6.0的版本来试验 ...

  5. 21天学通C++_Day2

    继续学习,今天满课,相对学习内容较少,下面罗列内容: 0.常量 ▪字面常量: ▪使用关键字const声明的常量,const double Pi = 22.0/7; //后面有分号,跟定义变量一样 ▪使 ...

  6. Dreamweaver_CS6安装与破解

    Adobe Dreamweaver是一款非常好用的web前端设计工具,这里详细讲解CS6版本的安装及破解步骤.经过测试,CS5版本也可以使用本经验中共享的破解补丁进行破解. 工具/原料 Dreamwe ...

  7. Swift-ScrollView轮播图的简易封装和使用

    不多说,轮播图是开发中必要一项技能,直接上代码: 先说我的思路:首次继承于UIScrollView类自定义MyScrollView,在MyScrollView里自定制方法,func creatMySc ...

  8. vuejs angularjs 框架的一些比较(vue项目重构四)

    使用Angularjs和Vue.js对比 首先需要说明的是:现在默认angularjs指angular1.0+版本,angular默认指2.0以上版本.本文的名词也默认指定angular的1.0+版本 ...

  9. java中String和char的区别

    首先来看一下Java的数据类型.Java 包括两种数据类型: 1.原始数据类型(primitive data type):byte,short, char, int, long,float,doubl ...

  10. sql server中类似oracle中decode功能的函数

    sqlserver 2008 写法 select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL ' THEN '国家重点' ' THE ...