MySQL数据库工程师入门实战课程视频教程
4198 人在学
我们接触程序语言都会使用数据库,提起数据库,就会有关系型数据库和非关系型数据库,那两者间是一个怎样的关系?我们一起来了解吧。
1、关系型数据库
关系型数据库,是指采用了关系模型来组织数据数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出来的。从字面上我们可以得知重点便是关系二字了,这里的关系是每个表之间的一种连接,我们可以通过关系来对表进行灵活的操作。关系型数据库,主要是借助于现代集合和代数概念来处理数据,关系模型有关系数据结构、关系操作集合、关系完整约束三部分组成。
像我们平时所见的Access数据库、SQL Sever数据库、Oracle数据库、DB2数据库、Sybase数据库、MySQL数据库等都属于关系型数据库。
关系模型中常用的概念:
关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常所说的表名
元组:可以理解为二维表中的一行,在数据库中经常被称为记录
属性:可以理解为二维表中的一列,在数据库中经常被称为字段
域:属性的取值范围,也就是数据库中某一列的取值限制
关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个组成
关系模式:指对关系的描述。其格式为:关系名(属性1,属性2,……属性N),在数据库中成为表结构
关系型数据库的优势
①保持数据一致性(的优势)
②数据更新成本较低
③可以实现Join复杂查询
④使用方便:我们完全不用理会底层架构,只需掌握基本sql语言即可
⑤易于维护:有很多关系型数据库管理软件使我们可以方面管理数据库。
关系型数据库不足之处:
①对大量数据的写入处理能力不强
②索引或表结构变更不足
③需要快速返回结果的处理能力较弱
2、非关系型数据库
关系型数据库的最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,这个特性使得关系型数据库可以用于几乎所有对一致性有要求的系统中,如典型的银行系统。
但是在网页应用中,尤其是SNS应用中一致性却不是显得那么重要,用户A看到的内容和用户B看到同一用户C内容更新不一致是可以容忍的,或者说,两个人同时看到好友的数据更新时间差几秒是可以容忍的,因此,关系型数据库的最大特点在这里就无用武之地,起码不是这么重要了。
相反地,关系型数据库为了维护一致性所付出的巨大代价就是其读写性能比较差,而像微博、Facebook这类SNS的应用,对并发读写能力要求极高,关系型数据库已经无法应付(在读方面,传统上为了克服关系型数据库缺陷,提高性能,都是增加一级memcache来静态化网页,而在SNS中,变化太快,memchache已经无能为了),因此,必须用新的一种数据结构存储来代替关系数据库。
关系数据库的另一个特点就是其具有固定的表结构,因此,其扩展性极差,而在SNS中系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系数据库也难以应付,需要新的数据结构化数据表存储。
于是,非关系型数据库应运而生,由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据,应该是一种数据结构化存储方法的集合。必须强调的是,数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系数据库这员老将。
非关系型数据库分类
按结构化方法以及应用场合的不同,主要是分为以下几类:
面向高性能并发读写的Key-value数据库:Redis,Tokyo,Cabinet,Flare就是这类的代表
面向海量数据访问的面向文档数据库:能在海量的数据中快速查询数据,典型的代表为MongoDB以及CouchDB
面向可扩展性的分布式数据:这类数据库就是解决传统数据库存在可扩展性上的缺陷,可以适应数据量的增加以及数据结构的变化