[置顶] Nosql笔记(一)——关系型数据库回顾
Nosql笔记(一)——关系型数据库回顾
在平常的商业应用中,我们所使用的大多都是关系型数据库,诸如SQL Server、 MY SQL、 Oracle等。
关于关系型数据库中的关键技术:
- 存储引擎
根据存储类型可以把关系型数据库分为行式数据库、列式数据库、内存数据库。
行式数据库就如现在比较常用的Oracle数据库、MySQL数据库等。他们的存储按行存储的,顾被称为行式数据库,亦被称为对象-关系型数据库。列式数据库是在最近发展比较迅速的一类数据库,譬如MongoDB、Cassandra。它们在以列来存储数据,其索引和数据存放在一起,可以压缩数据,能直接读取到某一列的数据,便于做分布式存储。如果我们把数据放到内存中直接操作的数据库叫做内存数据库。
- 索引设计
所谓索引,就是一种结构,它存在的目的就是为了提升数据库的查询速度,现在市场上比较流行的数据库中的索引都是使用的B+数索引(如下图),或者是它的变种来实现。如果要查询某一行记录,在没有索引的情况下,则需要对全变进行扫描,当数据量较大的时候,则需要耗费很大的内存资源,而且还需要很长的时间,严重影响执行效率,在建立索引后,则可以通过关键字(索引)实现快速的定位和查询,大大的提升了效率。
- SQL优化器
SQL优化器是数据库厂商的核心竞争力。它的出现就是为了提升SQL的执行效率。例如我在做级联查询时,内联查询时,我们可以写出很多种SQL,但是你不能保证每次写的SQL都是最高效率的,这时,SQL优化器会优化你的SQL,然后在执行。
- 事务管理与并发控制
对于关系型数据库,为了保证数据的一致性,我们需要对其进行事务控制。举个简单的例子,张三在对李四进行转账操作,金额为100元,在数据库中,首先我们会从张三的账户上扣掉100元,然后再往李四的账户上加上100元,这两步操作必须保证一致,即要么都成功,要么都失败——这就是事务控制。
那么什么是并发控制呢?如果两个人同时操作一个数据,这时就涉及到并发的问题,到底是谁先操作呢?在大部分数据库中都就有“加锁”的功能,譬如Oracle中的“表级锁”、“行级锁”,即在对数据进行修改时将整个表加锁或者是整行加锁,等修改完后再释放锁,以实现对数据的并发控制,避免脏读和误操作。
- 容灾与恢复技术
例如,通过数据的备份进行数据校验、恢复数据等。(不是很了解,欢迎补充)
那么关系型数据库有哪些弱点呢?
- 很难进行分布式部署,I/O瓶颈显著。依赖于强大的服务器,需要花更大代价才可以突
破性能极限。
假设现有一个很大的数据库,A表的部分数据存储在一台服务器上,B表的部分数据存储在另一台服务器上,现在要对两张表做内联查询,其效率可想而知……
- 难以处理非结构化数据。
譬如说,我想做一个做在线调查的网站,不同的调查表有不同的结构,所以在预先设计时无法确认列,这样不便于做索引,当调查表多了,则其效率会明显降低。
以上还有很多漏掉的地方,譬如ACDI等其他原理性的东西,欢迎补充。下期内容:NoSQL简介。
[置顶] Nosql笔记(一)——关系型数据库回顾的更多相关文章
- 非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解
前言: 在我们的日常开发中,关系型数据库和非关系型数据库的使用已经是一个成熟的软件产品开发过程中必不可却的存储数据的工具了.那么用了这么久的关系数据库和非关系型数据库你们都知道他们之间的区别了吗?下面 ...
- NoSQL:从关系型数据库到非关系型数据库
关系型数据库 所谓关系型数据库,,就是指采用了关系模型来组织数据的数据库. 什么是关系模型,简单说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模 ...
- [置顶] Android异步加载数据库和多线程编程
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名称,中国大陆地区较多人使用“安卓” ...
- 一文读懂非关系型数据库(NoSQL)
为了更好的理解非关系型数据库,我又深入的度娘了下 原文地址:https://baijiahao.baidu.com/po/feed/share?wfr=spider&for=pc&co ...
- 关系型数据库管理系统(RDBMS)与非关系型数据库(NoSQL)之间的区别
简介 关系型数据库管理系统(RDBMS)是建立在关系模型基础上的数据库,主要代表有:Microsoft SQL Server,Oracle,MySQL(开源). 非关系型数据库(NoSQL),主要代表 ...
- 关系型数据库和nosql非关系型数据库
快下班了.突然和同事聊起了node+mongdb,因为我们这里的项目没有mongdb,就问后端的同事,我们'爱装逼'的后端的同事让我们先自己学习一下什么关系型数据库和非关系型数据库.一顿百度查询了解下 ...
- 大数据时代的数据存储,非关系型数据库MongoDB
在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来解释数据库中抽象的数据架构. ...
- 大数据时代的数据存储,非关系型数据库MongoDB(一)
原文地址:http://www.cnblogs.com/mokafamily/p/4076954.html 爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Da ...
- 非关系型数据库MongoDB
爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来 ...
随机推荐
- uptime命令具体解释——linux性能分析
基本使用: uptime [-V] 实际分析: 这里因为命令比較简单,所以我们不进行具体地介绍.但越是简单的命令,就越是好用方便.像之前百度面试运维的时候,面试管问我哪个命令能够看得到系统负载.我立即 ...
- javascript5
调用对象call object: 声明上下文对象declarative environment record; 作用域链scopechain: 变量解析:variable resolution: 引用 ...
- PHP调用Webservice实例
原文 PHP调用Webservice实例 NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService.它是一个开源软件,是完全采用PHP语言编写的.通过HTTP收发S ...
- nginx 查看并发连接数
这里仅仅说一下用命令查看(也可配置页面) 通过查tcp连接数 1.netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]} ...
- AutoCAD 2012安装错误,与.net framework (1603错误)以及ms2005vc++的问题。
首先,这是AutoCAD2012的问题.因为,如果一台计算机已经安装了这些软件,AutoCAD是无法识别出来,因此AutoCAD就只能报错.正确的做法是:如果检测到这些软件已经被安装,则需要忽略这些问 ...
- SSH简介
一.什么是SSH? Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定:SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上 ...
- javascript模仿块级作用域(第一篇)
作用域有词法作用域和块级作用域之分,javascript属于词法作用域,而在java.C++中却是块级作用域.在javascript中,只有函数能够创建作用域,作用域是以function作为边界的. ...
- OpenGL绘制棱锥,剔除
/** * 缓冲区工具类 */public class BufferUtil { /** * 将浮点数组转换成字节缓冲区 */ public static ByteBuffer arr2ByteB ...
- GridView中两个DropDownList联动
GridView中两个DropDownList联动 http://www.cnblogs.com/qfb620/archive/2011/05/25/2057163.html Html: <as ...
- Apache指南:CGI动态页面
概要 相关模块 相关指令 mod_alias mod_cgi AddHandler Options ScriptAlias CGI(公共网关接口[Common Gateway Interface])定 ...