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

一、简单概述

SQL:对于SQL来说,也是我们最常说的关系型数据库,比如:MySQL,SQLServer等。那么,它的一个最明显的表示是,它的数据,全部是通过表单进行存储,有行和列之分。

NoSQL:相对于SQL而言,NoSQL则是一种非关系型的数据库。NoSQL(not only SQL),它的数据存储是以文档或者集合的形式进行,没有行列之分。

1.1,从数据存储来看:

1.2,从功能来看:

1.3,从查询语言来看:

个人感觉,关系型和非关系,在本质上并没有什么区别。而在应用层面上,查询语言几乎是相同的,区别比较少,学习的成本也是相对较低。

二、实例说明

需求:希望获取一个用户的完整银行账户信息

2.1,使用关系型

我们通常的做法,是建立一个用户表,是存储用户的基本信息;再建立一个银行账户表,存储银行账户信息。然后通过外键,使这两者之间产生联系。

表一:用户表

表二:用户记录

那么当我们想要获取用户的完整信息时,我们通常通过外键,去获得两张表信息的联合;

我们通过使用关系型数据库,无法一次性获得所有的数据,通常通过联合。那么,如果数据表过多,会发生什么?PS:维护过数据库的应该有所体会。

可是,如果通过非关系型的数据块进行存储呢?比如MongoDB

2.2,使用非关系型

MongoDB允许你查找文档中的任何东西,这也就意味着,不用联合,就可以一次性的获取所有的数据。

三、思考总结

在之前的项目中,使用了MongoDB去存储考生的头像或者说是音频文件。那么事实上,大多数数据库都支持image的存储,对于音频文件,也都是使用大型的二进制存储结构进行存储,或者转换成文件流的形式写入数据库。

如果说使用MongoDB仅是为了存储头像或者说音频,那么我认为这是一件有待商榷的事儿。一个考生在当场考试配置下,只会对应一份考试信息,那么作为头像来说,是完全可以通过关系型,也就是我们一直使用的MySQL去实现的。

PS:一直很费解,为什么仅仅用MongoDB去存了图片?它的出现和要解决的问题,并不是对于流性文件或者图片的存储!

后续,将介绍MongoDB的简单安装和使用,以及使用MongoDB的问题和解决方案。

MongoDB 1: NoSQL 和 SQL的区别的更多相关文章

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

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

  2. 【转】Redis学习---NoSQL和SQL的区别及使用场景

    什么是NoSQL NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称,它具有非关系型.分布式.不提供ACID的数 ...

  3. 关于NoSQL与SQL的区别

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

  4. Mongodb Mysql NoSQL的区别和联系

    MongoDB 什么是MongoDB? MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,皆在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB是一个介于关系数据库和非关系 ...

  5. 关系型数据库管理系统(RDBMS)与非关系型数据库(NoSQL)之间的区别

    简介 关系型数据库管理系统(RDBMS)是建立在关系模型基础上的数据库,主要代表有:Microsoft SQL Server,Oracle,MySQL(开源). 非关系型数据库(NoSQL),主要代表 ...

  6. MySQL、MongoDB、Redis 数据库之间的区别与使用(本章迭代更新)

    MySQL.MongoDB.Redis 数据库之间的区别与使用 MySQL.MongoDB.Redis 数据库之间的区别与使用(本章迭代更新) update:2019年2月20日 15:21:19(本 ...

  7. MySQL与MongoDB的操作对比,以及区别

    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...

  8. 1.MySQL与MongoDB的操作对比,以及区别

    转自:https://www.cnblogs.com/chris-oil/p/4982490.html MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoD ...

  9. 5G时代,为什么NoSQL和SQL存在短板?

    01 介绍 当今的通信服务提供商(CSP)需要能够在处理海量复杂的数据的同时,不会下降或者减慢网路响应速度和可靠性.5G时代,设备和用户数量呈指数级增长,这对业务支持服务(BSS)提出了新需求,也成为 ...

随机推荐

  1. Web上传文件

      客户端      相对于FTP文件上传,Web文件上传速度慢一些,但使用方便,不需要客户端,而且权限比FTP容易控制. Web文件上传采用POST方式,上传文件需要设置FORM的entype属性为 ...

  2. CF 500D New Year Santa Network tree 期望 好题

    New Year is coming in Tree World! In this world, as the name implies, there are n cities connected b ...

  3. curl命令使用小结[转]

    curl命令有不少小技巧,linux下测试确实很方便.转http://blog.csdn.net/zhangliang_571/article/details/26379777 1.开启gzip请求c ...

  4. 基于redis的分布式锁

    <?php /** * 基于redis的分布式锁 * * 参考开源代码: * http://nleach.com/post/31299575840/redis-mutex-in-php * * ...

  5. spring外部化配置

    例如 <bean id="dataSource" class="....." p:username="aa" p:password=& ...

  6. 30天轻松学习javaweb_打包web项目成war

    jar -cvf news.war news 打包成 war 包后复制到webapps下,Tomcat将会解压.

  7. 解决xcode打开时loading假死的问题

    症状如下: 点击打开xcode后,就一直会看到loading,但是CPU消耗很高,基本上就是死了(动弹不得),通过活动监测器看到xcode显示为“未响应” 以为是安装程序的问题,结果选中xcode拉到 ...

  8. linux内核设计与实现--进程调度 系统调用

    进程可以分为I/O消耗型和处理器消耗型. I/O消耗型指,进程的大部分时间用来提交I/O请求或者等待I/O请求. 处理器耗费型进程把时间大多用在执行代码上. linux采用了两种不同的优先级范围: 第 ...

  9. 《一课经济学》书摘笔记III

    基本谬论:世界上可做的工作是有限的.用更有效率的方式去做事,只会消减工作机会.这个信条换句话说就是,采用低效率的方式去做一件事,反而可以创造工作机会. 只要还有人的需要或愿望还没有获得满足,能做的事就 ...

  10. [ActionScript 3.0] as3.0加载as2.0的swf时获取as2.0的实际舞台尺寸

    var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler) ...