全部产品
阿里云办公

SQL 与 NoSQL 的对比

更新时间:2018-08-15 21:57:53

NoSQL 是一个用于描述高扩展高性能的非关系数据库的术语。NoSQL 数据库提供的 schemafree 数据模型使应用无需预先定义表结构,更适应业务的多元化发展,且其对超大数据规模和高并发的支持让 NoSQL 数据库得到了广泛的应用。

SQL 还是 NoSQL?

如今,应用程序的要求比以往更为严苛。例如,在线游戏一开始只有极少数的用户和数据。随着游戏的不断深入,则会远远超出基础数据库管理系统的资源。基于 Web 的应用程序拥有数百、数千或数百万并发用户,并且每天生成数 TB 或更多新数据,这并不少见。此类应用程序的数据库必须每秒处理数万或数十万次读取和写入。

表格存储(Table Store)是 NoSQL 数据库的一种,它非常适合这一类型的工作负载。您可以适当预留吞吐量,并根据具体的应用场景动态调整该预留吞吐量,从而处理大量用户产生的大量数据。

下表显示了关系型数据库和 NoSQL 数据库之间的主要区别:

对比项 关系型数据库 NoSQL 数据库
数据模型 关系模型对数据进行了规范化,严格定义了表、列、索引以及各个表之间的关系及其他数据库元素,使一张数据表的所有数据都具有相同的结构。 非关系(NoSQL)数据库一般不会对表的结构进行严格的定义,通常使用分区键及键值来检索值、列集或者半结构化数据。
ACID 传统关系型数据库支持由 ACID(原子性、一致性、隔离性和持久性)定义的一组属性。
- 原子性:体现在一个事务“全部成功或者全部失败”,即完全执行成功或完全不执行某项事务。
- 一致性:表示数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
- 隔离性:要求并发事务应分别执行,互不干扰。
- 持久性:一旦事务提交后,它所做的修改将会永久保存在数据库上,即使出现宕机也不会丢失。
NoSQL 数据库为获得更为灵活的可水平扩展的数据模型, 通常会放弃传统关系数据库的部分 ACID 属性,以克服一系列包括性能瓶颈、可扩展性、运营复杂性以及不断增加的管理和支持成本的问题,这也让 NoSQL 数据库成了传统关系型数据库在面临海量数据及高并发挑战时的最佳选择。
性能 性能一般取决于磁盘子系统、数据集大小、查询优化、索引和表结构。 写性能通常受限于磁盘子系统,读性能则受限于结果集的大小。
扩展 进行纵向扩展最简单的方式是使用更快的 CPU、磁盘等硬件设备。要获得跨分布式系统的关系表,就需要增加使用成本及技术复杂度。 利用低成本硬件的分布式集群进行横向扩展,从而在不增加延迟的前提下提高吞吐量和数据规模。
API 对存储和检索数据的请求由符合结构化查询语言(SQL)的查询来传达。这些查询由关系数据库系统来解析和执行。 应用开发人员可以使用 NoSQL 数据库的开放 API 轻松进行存储和检索数据。通过分区键及键值,应用可以查找键值对、列集或者半结构化数据。

为什么使用表格存储?

表格存储(Table Store)是构建在阿里云飞天分布式系统之上的 NoSQL 数据存储服务,提供海量结构化数据的存储和实时访问。相比关系型数据库,Table Store 具有以下几个优势:

  • 提供海量 NoSQL 数据存储,支持 schemafree 的数据模型,提供单行级别的事务。
  • 服务端自动对数据进行分区和负载均衡,让单表数据从 GBTB 再到 PB,访问并发从 0百万 都无需繁琐的扩容流程。
  • 写性能在 TBPB 级数据规模都能保持在单个毫秒,读性能只依赖结果数据集,而不受数据量的影响。

相比 OLTP(联机事务处理)场景,Table Store 更适用于 Web 规模级应用程序,包括社交网络、游戏、媒体共享和 IoT(物联网)和日志监控等场景。

关于表格存储数据模型信息,请参见数据模型概念

本文导读目录