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)提出了新需求,也成为 ...
随机推荐
- (C#) 多线程修改布尔值, volatile
参考: https://msdn.microsoft.com/en-us/library/x13ttww7(VS.80).aspx http://stackoverflow.com/questions ...
- 值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- CE_现金账户转账汇入汇出交易(案例)(未完成)
2014-07-15 BaoXinjian 一.摘要 二.案例 通过 Oracle Payments 结算事务处理 通过付款模板 事物处理子类型 已验证 -> 正在结算中 ->
- poj 2104 K-th Number(主席树 视频)
K-th Number 题意: 给你一些数,让你求一个区间内,第k大的数是多少. 题解: 主席树第一题,看的qsc视频写的,戳戳戳 学到了unique函数,他的作用是:把相邻的重复的放到后面,返回值是 ...
- NeHe OpenGL教程 第十八课:二次几何体
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- bug_ _图片_android.view.InflateException: Binary XML file line #1: Error inflating class <unknown>
=========== 1 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zgan.communit ...
- html_
============= 博客大全: 脚本之家:http://www.jb51.net/list/list_233_104.htm 红黑联盟: http://www.2cto.com/kf/yid ...
- myBatis获取批量插入数据的主键id
在myBatis中获取刚刚插入的数据的主键id是比较容易的 , 一般来说下面的一句话就可以搞定了 , 网上也有很多相关资料去查. @Options(useGeneratedKeys = true, k ...
- Mac下java编译乱码(适用于maven , ant)
将~/.bash_profile中添加如下即可 export LC_ALL=en
- ylbtech-Unitity-CS:Generics
ylbtech-Unitity-CS:Generics 1.A,效果图返回顶部 Unsorted List: Raul:35 Alessandro:30 Maria:72 Hiroyuki:108 A ...