MongoDB 1: NoSQL 和 SQL的区别
导读:本篇博客,主要是结合自己在项目中的使用,简单的阐述一下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的区别的更多相关文章
- 为什么使用Nosql:Nosql和SQL的区别
1.概念: SQL(Structured Query Language)数据库,指关系型数据库.主要代表:SQL Server.Oracle.MySQL.PostgreSQL. NoSQL(Not O ...
- 【转】Redis学习---NoSQL和SQL的区别及使用场景
什么是NoSQL NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称,它具有非关系型.分布式.不提供ACID的数 ...
- 关于NoSQL与SQL的区别
简单说来:sql是关系型数据库的结构化查询语言,而nosql,一般代指菲关系型数据库,sql语句就不能用来,不过有些有leisql的查询语言,且nosql数据库没有统一的查询语言. 相关参考文章阅读: ...
- Mongodb Mysql NoSQL的区别和联系
MongoDB 什么是MongoDB? MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,皆在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB是一个介于关系数据库和非关系 ...
- 关系型数据库管理系统(RDBMS)与非关系型数据库(NoSQL)之间的区别
简介 关系型数据库管理系统(RDBMS)是建立在关系模型基础上的数据库,主要代表有:Microsoft SQL Server,Oracle,MySQL(开源). 非关系型数据库(NoSQL),主要代表 ...
- MySQL、MongoDB、Redis 数据库之间的区别与使用(本章迭代更新)
MySQL.MongoDB.Redis 数据库之间的区别与使用 MySQL.MongoDB.Redis 数据库之间的区别与使用(本章迭代更新) update:2019年2月20日 15:21:19(本 ...
- MySQL与MongoDB的操作对比,以及区别
MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...
- 1.MySQL与MongoDB的操作对比,以及区别
转自:https://www.cnblogs.com/chris-oil/p/4982490.html MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoD ...
- 5G时代,为什么NoSQL和SQL存在短板?
01 介绍 当今的通信服务提供商(CSP)需要能够在处理海量复杂的数据的同时,不会下降或者减慢网路响应速度和可靠性.5G时代,设备和用户数量呈指数级增长,这对业务支持服务(BSS)提出了新需求,也成为 ...
随机推荐
- Web上传文件
客户端 相对于FTP文件上传,Web文件上传速度慢一些,但使用方便,不需要客户端,而且权限比FTP容易控制. Web文件上传采用POST方式,上传文件需要设置FORM的entype属性为 ...
- 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 ...
- curl命令使用小结[转]
curl命令有不少小技巧,linux下测试确实很方便.转http://blog.csdn.net/zhangliang_571/article/details/26379777 1.开启gzip请求c ...
- 基于redis的分布式锁
<?php /** * 基于redis的分布式锁 * * 参考开源代码: * http://nleach.com/post/31299575840/redis-mutex-in-php * * ...
- spring外部化配置
例如 <bean id="dataSource" class="....." p:username="aa" p:password=& ...
- 30天轻松学习javaweb_打包web项目成war
jar -cvf news.war news 打包成 war 包后复制到webapps下,Tomcat将会解压.
- 解决xcode打开时loading假死的问题
症状如下: 点击打开xcode后,就一直会看到loading,但是CPU消耗很高,基本上就是死了(动弹不得),通过活动监测器看到xcode显示为“未响应” 以为是安装程序的问题,结果选中xcode拉到 ...
- linux内核设计与实现--进程调度 系统调用
进程可以分为I/O消耗型和处理器消耗型. I/O消耗型指,进程的大部分时间用来提交I/O请求或者等待I/O请求. 处理器耗费型进程把时间大多用在执行代码上. linux采用了两种不同的优先级范围: 第 ...
- 《一课经济学》书摘笔记III
基本谬论:世界上可做的工作是有限的.用更有效率的方式去做事,只会消减工作机会.这个信条换句话说就是,采用低效率的方式去做一件事,反而可以创造工作机会. 只要还有人的需要或愿望还没有获得满足,能做的事就 ...
- [ActionScript 3.0] as3.0加载as2.0的swf时获取as2.0的实际舞台尺寸
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler) ...