概念
数据库,从字面上不难理解,可以看做存储电子文件的场所,如同仓库里的货物一样,用户可以对其数据进行添加、删除、更新、查询操作。所谓数据库就是以一定方式存储在一起、多个用户可以共享,具有最小的冗余度与应用程序彼此独立的数据集合。
![image.png | center | 225x225](https://i-blog.csdnimg.cn/blog_migrate/32dce9478992e744c7c05e33d7642153.png)
类型
根据数据之间的组织方式,基本上可以把现代应用数据库分为两类:关系型、非关系型。
关系数据库
Relational Database,关系数据库,是基于关系模型(在1970年由IBM的研究员Edgar Codd提出)的数据库,也是数据存储的传统标准。
![image.png | center | 301x141](https://i-blog.csdnimg.cn/blog_migrate/373e457e7437b42c64fb22164320cadf.png)
优点
- 易于理解:二维表结构非常贴近真实世界中事物与关系的观念,更容易被理解
- 使用方便:通用的SQL语言操作关系数据库更为方便
- 便于维护:丰富的完整性(实体、参照、用户自定义)大大降低了数据冗余和数据不一致的概览
缺点
- 读写性能较差:数据读写必须经过SQL解析,大量数据、高并发情景下读写性能不足
- 拓展困难:关系数据库难以横向拓展,无法简单的通过添加更多的硬件和服务节点来扩展性能和负载能力
三款主要的开源关系型数据库管理系统
MySQL:性能高、成本低、可靠性好,已经成为互联网世界中最流行的开源数据库,广泛的应用在中小型网站中。随着不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
SQLite:强大的嵌入式关系型数据库管理系统,由C语言开发,体积很小,经常被集成到各种应用程序中,甚至在iOS和 Android的APP中就可以集成。可能是最广泛部署的数据库引擎。
PostgreSQL:官网称其为世界上最强大的开源关系型数据库,为用户在开源数据库世界又多一个选择。
商用数据库系统
DB2:IBM公司的企业级关系数据库,DB2拥有悠久的历史,并且被很多人认为是最早使用SQL的数据库产品。
Oracle:甲骨文公司的数据库产品(MySQL被收购,也是旗下产品),Oracle数据库被认为是市场上最受欢迎的商业数据库,在数据库领域一直处于领先地位。Oracle数据库系统可移植性好、使用方便、功能强大,适用于各类大、中、小、微机环境。
非关系数据库(NoSQL)
NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。现在,对于NoSQL最普遍的解释是“非关系型”,强调Key-Value存储和文档数据库的优点,是对不同于传统关系数据库的数据库管理系统的统称。
![image.png | center | 173x173](https://i-blog.csdnimg.cn/blog_migrate/b84ee76b92c058773965507399cc3a58.png)
优点
- 灵活可拓展:可以方便的水平扩展,简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。
- 大容量数据:正因为可以方便的水平拓展,使得NoSQL可以处理超大容量的数据,远远超出了最大型的RDBMS所能处理的极限。
- 高读写性能:因为NoSQL的数据无关系性,其读写性能较高,可以满足大数据量、高并发情景下的要求。
缺点
- 成熟度不够:相比于关系数据库的发展时间来讲,NoSQL还很年轻,并且没有标准化,各种产品层出不穷,还种项目还需要时间来检验。
- 特性不够丰富:其实也可以归结到成熟度中,现有产品所提供的功能都有限,大多数NoSQL数据库不支持事务等。
列举几个常见的NoSQL数据库
MongoDB:高性能、开源、无模式的文档型数据库,使用C++开发,使用BSON(Binary Json,一种二进制数据格式)作为数据格式,编码和解码非常迅速,效率很高。非常适合文档化格式的存储及查询。
Redis:一个使用ANSI C语言编写的开源、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,目前由Redis Labs赞助开发。可以说是最为流行的键值对存储数据库。
Hbase:Apache软件基金会Hadoop项目的一部分,Java语言开发,运行于HDFS文件系统上。可用于大数据开发。
小结
总的来说,两种类型的数据库各自有其优势,同时也都有相应的局限性,这两者数据的选择也不是非此即彼,更应该是相互补充。