我一直在使用MySql进行数据库的增删改查等操作,也知道MySql叫数据库,却没有深入的探讨一下MySql是什么类型的数据库,还有什么类型的数据库,以及这些数据库的区别和特点是什么,虽然其他数据库去深入学习和了解可能只能在工作以后才有机会接触,但是事先进行了解,我想还是有一定必要的。
关系型数据库:
首先MySql数据库称为关系型数据库,所谓关系型数据库,就是建立在关系模型的基础上创建的数据库,这关系模型其实我们早都了解过,就是一对一,一对多,多对多的关系模型,其放到物理层面就是一张二维表格来描述每个数据的关系模型,而整个关系数据库就是通过一张张二维表格之间的关系建立起来的数据库。
关系型数据库比较贴切生活中的例子,所以比较常用,不那么抽象,比如一个老师带多个学生,一个学生有多门学科,一个学生只有一个学号之类的例子,关系型数据库都能够很好的体现出来。
常见的关系型数据库还有:oracle、db2、sqlserver、sybase
总的来说关系型数据库有如下特点:
- 安全(数据存放在磁盘上,除法磁盘受到损伤,不然数据不至于丢失)
- 容易理解(关系模型比较常见,不那么抽象)
- 不节省空间(生成的是二维表,还有索引等操作,都会使用较大空间)
非关系型数据库:
那么非关系型就是除了关系型,其他的数据库都是非关系型数据库,注意是数据库,不是数据仓库,这两个是不同的概念。
因为我也没用过非关系型数据库,在这里罗列一些定义,了解一下就可以了
以下内容来自百度百科:
键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。
列存储数据库
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
文档型数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。