1. SQL数据库被称为关系型数据库(RDBMS),而NoSQL数据库被称为非关系型数据库或分布式数据库。
2. SQL数据库是基于表的数据库,而NoSQL数据库则有基于文档的,键值对的,图形的或基于列式存储的数据库。
3. SQL数据库的数据结构必须事先先定义好,而NoSQL数据库的数据是动态无结构的。
4. SQL数据库的负载能力是以增加硬件配置的垂直扩展方式来增加的,而NoSQL数据库的负载能力可以通过增加数据库服务器的数量来增加(属于水平扩展)。
5. SQL数据库是使用SQL(结构化查询语言)对数据进行定义和操作的,功能强大,语法统一。而NoSQL数据库是使用UnQL(无结构查询语言),其操作的对象主要是存储在集合中的文档,但UnQL语法不统一,不同的NoSQL数据库语法各有不同。
6. 常见的SQL数据库有:MySql,Oracle,Postgres,Sqlite,MS-SQL等。NoSQL常见的有:MongoDB,BigTable,Redis,Hbase,Neo4j等。
7. 对于复杂的查询:SQL非常的擅长,而NoSQL则不擅长。因为NoSQL并没有执行复杂查询的标准接口。相对于SQL的强大查询能力,NoSQL的查询能力就显得有点捉襟见肘。
8. 对于所能存储的数据类型:SQL数据库并不太适合分层次的数据存储。但是,NoSQL数据库则可以很好的存储分层次的数据,因为它是以键值对的形式存储数据的,类似与JSON数据。NoSQL数据库更倾向用于大数据。例如Hbase就是一个很好的例子。
9. 对于基于大量事务的应用程序:SQL数据库非常适合,因为它更加稳定并且可以保证数据的原子性和一致性。而NoSQL对事务的处理能力有限。
10. 在文档支持方面:所有SQL数据库的厂家对其数据库产品都有很好的支持,并且有许多专家可以帮你部署大型的SQL数据库扩展。而NoSQL现在仅有社区的支持,而可以帮助你部署大型NoSQL数据库扩展的专家也很有限。
11. 在属性方面:SQL数据库遵循ACID(即,原子性,一致性,隔离性,持久性)属性,而NoSQL数据库遵循的是CAP定理(即,一致性,可用性,分区容忍性)。
12. 对于数据库的分类:对于SQL数据库,基于商业渠道SQL数据库可分为开源或闭源产品。对于NoSQL数据库,基于存储数据的基本方式可分为图形数据库,键——值数据库,文档数据库,列式数据库,XML数据库。
举例,几款SQL数据库
1. MySQL社区版
MySQL数据库是一款非常受欢迎的数据库。它通常是和apache,PHP一同使用的,也就是lamp架构。同时,它也可以同nginx或tomcat(或Jboss等)结合使用。一下说一下MySQL的优点:
● 主从复制:通过主从复制功能可以大大的减少负载压力,增加可扩展性和商业程序的可用性。
● 分片:MySQL的分片功能对于写操作少并且流量极大的网站是非常有用的。通过对MySQL服务器的分片,可以将数据库的每个分片分别放到多个服务器中,而这些服务器因为负载并不会太高,所以可以使用相对较便宜的服务器,从而节省了成本。
● MySQL的NoSQL接口——Memcached:Memcached可以为作为一个MySQL的NoSQL程序接口,用来增加MySQL服务器的检索性能。
● 非常成熟:MySQL已经发展了很长时间,在稳定方面已经得到了企业的验证。
● 支持绝大多数平台和语言:MySQL可用于所有的主流平台,像Linux,Windows,Mac,BSD和Solaris。支持连接器的语言有Ruby,C#,C++,Java,Perl,PHP,Python等。
● 成本低:因为它是开源和免费的。
2. MS-SQL
它非常的强大而且界面也很友好,有很好的稳定性,可靠性,可扩展性,由微软公司支持。以下是MS-SQL的优点:
● 集成开发环境:Microsoft visual studio, Sql Server Management Studio and Visual Developer 这些工具对于开发和提高开发人员的效率非常有帮助。
● 灾难恢复:它有很好的灾难恢复机制,其中包括数据库镜像,故障转移集群,RAID分区等。
● 云备份:微软也提供了云存储,不过需要在你的数据库中事先启用云备份功能。
3. Oracle 精简版
这个数据库是免费的。以下是Oracle的优点:
● 升级简单:可以很简单的升级到新版本或企业版。
● 支持的平台广:如,Linux和Windows。
● 扩展性好:在扩展性方面,它不如MySQL好,但是作为一种解决方案也是非常的可靠,安全,易管理的。
举例,几款NoSQL数据库
1. MongoDB
MongoDB是一款非常受欢迎的基于文档的NoSQL数据库,因为它是以JSON文档的形式来存储数据的。它是用C++语言开发的,并且多家大型公司都在使用,如,纽约时报等。一下是MongoDB的几个优点:
● 速度快:
● 扩展性好:可以水平扩展。
● 易管理:可自动分片
● 动态结构:可以灵活的修改数据结构,而不需要修改已有的数据。
2. CouchDB
CouchDB 也是一款基于文档的NoSQL数据库。也是以JSON文档的形式存储数据的。以下是它几个优点:
● 无结构:作为NoSQL家族中的一员,它也是动态结构的。
● HTTP查询:你可以通过web浏览器来访问你的数据库文档。
● 冲突消除:它可以自动的发现分布式数据库中的冲突。
● 复制简单:可以直接实现复制功能。
3. Redis
Redis是另外一款因为闪电般的速度而被比较广泛使用的开源NoSQL数据库。它是用C语言开发的。以下是它的几个优点:
● 数据结构化:Redis提供了一个高效的数据结构扩展,它有时也被称为数据结构服务器。存储在数据库中的键值可以是hash值、列表、字符串、有序或无序集合等。
● 可作为缓存:你可以使用Redis作为一个缓存服务器。
● 非常快:当它以内存的性质工作时,它的执行效率非常的高,此时读写速度几乎没有区别。