一、RDBMS与非RDBMS
关系型数据库是DBMS的主流,其中使用最多的DBMS分别是Oracle、MySQL和SQL Server。
1.关系型数据库(RDBMS)
这种类型的数据库是最古老的数据库类型,关系型数据库是把复杂的数据结构归结为简单的二元关系。
关系型数据库以行(row)和列(column)的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table),一组表组成了一个库(database)。
优势:
(1)复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
(2)事务支持:使得对于安全性能很高的数据访问要求得以实现。
2.非关系型数据库(非RDBMS)
非关系型数据库,可以看成关系型数据库的功能轻量级版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。
类别:
(1)键值型数据库:键值型数据库通过Key-Value键值的方式来存储数据,其中Key和Value可以是简单的对象,也可以是复杂的对象。
Key作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤。
键值型数据库典型的使用场景是作为内存缓存。Redis是最流行的键值型数据库。
(2)文档型数据库:此类数据库可存放并获取文档,可以是XML、JOSN等格式。MongoDB是最流行的文档型数据库。此外,还有CouchDB等。
(3)搜索引擎数据库:核心原理是“倒排索引”。搜索引擎是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样才能保证性能最优。
(4)列式数据库:列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适用于分布式文件系统,典型产品:HBase等。
降低系统的I/O:
如果一个表中有20个字段,我们想要查找其中2个字段,如果是按行存储的数据库,我们想要查找2个字段,就要将这一行的所有字段都查找出来,相当于其他的18个字段都是冗余的,冗余越多,内存的I/O就越多,性能就不会高;如果是按列存储的数据库,我们就只找那2个字段就可以了,其他字段不用加载,I/O少了,自然速度就快了。
(4)图形数据库:图形数据库,就是一种存储图形关系的数据库,利用了图这种数据存储结构存储了实体(对象)之间的关系。
NoSQL的演变:
SQL是用来控制RDBMS的,相对的,用NoSQL来控制非RDBMS。
1970:NoSQL=We have no SQL
1980:NoSQL=Know SQL
2000:NoSQL=No SQL!
2005:NoSQL=Not only SQL
2013:NoSQL=No,SQL!
在日志收集、排行榜、定时器等中,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。