关系型数据库与 NoSQL 对比
关系型数据库与 NoSQL 对比 一、关系型数据库? 1.概念 关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。 主要代表:SQL Server,Oracle,Mysql,PostgreSQL。 2.优点 (1).容易理解,二维表的结构非常贴近现实世界,二维表格,容易理解。 (2)使用方便,通用的sql语句使得操作关系型数据库非常方便。 (3)易于维护,数据库的ACID属性,大大降低了数据冗余和数据不一致的概率。 3.瓶颈 (1 )海量数据的读写效率。 对于网站的并发量高,往往达到每秒上万次的请求,对于传统关系型数据库来说,硬盘I/o是一个很大的挑战。 (2) 高扩展性和可用性。 在基于web的结构中,数据库是最难以横向拓展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库没有办法像web Server那样简单的通过添加更多的硬件和服务节点来拓展性能和负载能力。 传统数据库操作涉及事物机制,每次写入操作需要进行undo、redo操作,然后将redo操作记录到日志文件,有事物开销,不适合写多读少的场景. 二、从关系型到非关系型 关系型数据库的最大优点就是事务的一致性,这个特性,使得关系型数据库中可以适用于一切要求一致性比较高的系统中。比如:银行系统。 但是在网页应用中,对这种一致性的要求不是那么的严格,允许有一定的时间间隔,所以关系型数据库这个特点不是那么的重要了。相反,关系型数据库为了维护一致性所付出的巨大代价就是读写性能比较差。而像微博、facebook这类应用,对于并发读写能力要求极高,关系型数据库已经无法应付。所以必须用一种新的数据结构存储来替代关系型数据库。所以非关系型数据库应用而生。 三、非关系型 1.概念 NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储系统,主要代表MongoDB,Redis、CouchDB。 NoSQL提出了另一种理念,以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获取用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可。 2.NoSQL 命名的含义 NoSQL 并不是「完全不用 SQL」,而是不以关系模型为核心。NoSQL 的字面含义经过了演变: 早期理解为 “No SQL”,意指不使用 SQL 后来业界更倾向解读为 “Not Only SQL”,即「不只是 SQL」,强调对关系型数据库的补充而非替代 区分一个数据库是不是 NoSQL,关键看数据模型(是否以关系/表来组织数据),而不是查询语言的语法。事实上很多 NoSQL 数据库都提供了类 SQL 的接口,例如: Cassandra 有 CQL(Cassandra Query Language),语法与 SQL 非常接近 MongoDB 持续增强聚合查询能力 ClickHouse 支持 SQL 语法,但底层是列式存储,不基于关系模型 3.分类 (1)面向高性能并发读写的key-value数据库 主要特点是具有极高的并发读写性能,例如Redis、Tokyo Cabint等。 (2)面向海量数据访问的面向文档数据库 ...