[置顶] 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)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来 ...
随机推荐
- POI导出Excel文档通用工具方法
import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; imp ...
- Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要
Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要 作者:Eric.Zhang(花名:穿越者7号) 日期:2015年1 ...
- HTML静态分页(形如:首页,上一页,下一页,尾页)
在HTML中有时候我们会用到静态分页,一次拿回一定量的数据结果条目,我们会以形如:第2页,共12页 首页 上一页 下一页 尾页 的方式进行静态分页,以下是该种静态分页的代码,供兄弟姐妹们参考. &l ...
- js页码生成库,一个适合前后端分离的页码生成器
原文:js页码生成库,一个适合前后端分离的页码生成器 前言 上星期写的任务里面有需要进行分页的处理,git搜索了一番,没有觉得合适的,于是自己临时写了个分页的算法. 然后等闲下来的时候,决定把分页进行 ...
- 手机web下拉加载
//需要 zepto.js支持 var page=0;//当前页 var pages=1;//总页数 var ajax=!1;//是否加载中 Zepto(function($){ $(window). ...
- bundle install 出现 'gem install mysql2 -v '0.3.15' succeeds before bunding '
bundle install 出现 'gem install mysql2 -v '0.3.15' succeeds before bunding ' 解决:sudo apt-get install ...
- QualityCenter的备份
1.停止QC Server:2.备份Domain repository,它囊括每个项目的大量数据(包括自动化测试数据.附件.设置和格式表单等).要想知道某个项目所使用的数据库的名字,可以在Site A ...
- Visual Studio 自定义项目或工程模板
如何利用 Visual Studio 自定义项目或工程模板 在开发项目的时候,由其是商业性质的大型项目时,往往需要在每个代码文件上都加上一段关于版权.开发人员的信息,并且名称空间上都需要带有公司的标志 ...
- 简化MonoTouch.Dialog的使用
读了一位园友写的使用MonoTouch.Dialog简化iOS界面开发,我来做个补充: 相信使用过DialogViewController(以下简称DVC)的同学都知道它的强大,但是缺点也是明显的,应 ...
- 大数据工具篇之Hive与MySQL整合完整教程
大数据工具篇之Hive与MySQL整合完整教程 一.引言 Hive元数据存储可以放到RDBMS数据库中,本文以Hive与MySQL数据库的整合为目标,详细说明Hive与MySQL的整合方法. 二.安装 ...