分布式数据库HBase案例教程
上QQ阅读APP看书,第一时间看更新

1.3.1 NoSQL数据库与SQL数据库的区别

1. 存储方式

SQL数据存储在特定结构的表中,NoSQL则更加灵活和可扩展,存储方式可以是JSON文档、哈希表或者其他方式。

在SQL中,必须定义好表和字段结构后才能添加数据,例如定义表的主键(primary key)、索引(index)、触发器(trigger)、存储过程(stored procedure)等。表结构可以在被定义之后更新,但是如果有比较大的结构变更的话,就会变得比较复杂。而在NoSQL中,数据可以在任何时候任何地方添加,不需要事先定义表。

2. 外部数据存储

SQL中如果需要增加外部关联数据的话,规范化做法是在原表中增加一个外键,关联外部数据表。NoSQL中除了这种规范化的外部数据表做法以外,还能使用如下的非规范化方式把外部数据直接放到原数据集中,以提高查询效率。缺点也比较明显,更新审核人数据的时候将会比较麻烦。

3. JOIN查询

SQL中可以使用JOIN表链接方式,将多个关系数据表中的数据用一条简单的查询语句查询出来。NoSQL未提供对多个数据集中的数据做查询的功能。

4. 数据耦合性

SQL中不允许删除已经被使用的外部数据,例如审核人表中的“熊三”已经被分配给了借阅人熊大,那么在审核人表中将不允许删除熊三这条数据,以保证数据的完整性。

而NoSQL中则没有这种强耦合的概念,可以随时删除任何数据。

综上所述,NoSQL数据库与SQL数据库的区别如表1-1所示。

表1-1 NoSQL数据库与SQL数据库的区别