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笔记(一)——关系型数据库回顾的更多相关文章

  1. 非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解

    前言: 在我们的日常开发中,关系型数据库和非关系型数据库的使用已经是一个成熟的软件产品开发过程中必不可却的存储数据的工具了.那么用了这么久的关系数据库和非关系型数据库你们都知道他们之间的区别了吗?下面 ...

  2. NoSQL:从关系型数据库到非关系型数据库

    关系型数据库 所谓关系型数据库,,就是指采用了关系模型来组织数据的数据库. 什么是关系模型,简单说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模 ...

  3. [置顶] Android异步加载数据库和多线程编程

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名称,中国大陆地区较多人使用“安卓” ...

  4. 一文读懂非关系型数据库(NoSQL)

    为了更好的理解非关系型数据库,我又深入的度娘了下 原文地址:https://baijiahao.baidu.com/po/feed/share?wfr=spider&for=pc&co ...

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

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

  6. 关系型数据库和nosql非关系型数据库

    快下班了.突然和同事聊起了node+mongdb,因为我们这里的项目没有mongdb,就问后端的同事,我们'爱装逼'的后端的同事让我们先自己学习一下什么关系型数据库和非关系型数据库.一顿百度查询了解下 ...

  7. 大数据时代的数据存储,非关系型数据库MongoDB

    在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来解释数据库中抽象的数据架构. ...

  8. 大数据时代的数据存储,非关系型数据库MongoDB(一)

    原文地址:http://www.cnblogs.com/mokafamily/p/4076954.html 爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Da ...

  9. 非关系型数据库MongoDB

    爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来 ...

随机推荐

  1. mysql设置root的密码

    mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

  2. 网易ios 面试

    1 说说 你对  MRC和 ARC 的理解 2  对OC内存分析 有什么好的方法, 3 corePlot 4 pop 动画 5 cocoapods 6 GCD 7 瀑布流 及 uicollection ...

  3. SQL Server 远程链接服务器详细配置

    原文:SQL Server 远程链接服务器详细配置[转载] http://hi.baidu.com/luxi0194/blog/item/a5c2a9128a705cc6c2fd7803.html - ...

  4. WEB项目(B/S系统)打包安装(总结篇)

    原文:WEB项目(B/S系统)打包安装(总结篇) 打包安装程序的制作选择性还很多的,有installshield,wise installer,inno setup这几个做打包安装项目都是很强大的,要 ...

  5. Scala开发环境搭建与资源推荐

    Scala开发环境搭建与资源推荐 本文介绍了Scala的开发环境,包括SDK.IDE的设置.常用资源列表等.Scala是一门静态语言,很有可能就是Java的继承者. AD: 2014WOT全球软件技术 ...

  6. 干净的架构The Clean Architecture

    干净的架构The Clean Architecture 这是著名软件大师Bob大叔提出的一种架构,也是当前各种语言开发架构.干净架构提出了一种单向依赖关系,从而从逻辑上形成一种向上的抽象系统. 我们经 ...

  7. 你是否应该使用一个Javascript MVC框架?

    你是否应该使用一个Javascript MVC框架?本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分内容,希望对大家有帮 ...

  8. PHP中使用Ajax

    在PHP中使用Ajax来获取数据库中的数据,从而达到不刷新页面就可以获取. 首先在JS中定义变量如: var xmlHttp;function getXmlHttp(){ if(window.Acti ...

  9. visual studio code, asp.net5, mvc6资料汇总

    最近在试探性地跟随微软最新发布的一些产品,现列下某些挺好的文章和链接 code.visualstudio.com http://blogs.msdn.com/b/cesardelatorre/arch ...

  10. [转载]LVS快速搭建教程

    LVS配置教程 作者:oldjiang 一.前言 相信专程来读此文的读者对LVS必然有一定的了解,首先看图: 毋庸置疑,Load Balancer是负载调度器,由它将网络请求无缝隙调度到真实服务器,至 ...