SQL数据库和NoSQL数据库介绍
什么是SQL数据库?
关系型数据库是依据关系模型来创建的数据库。而所谓的关系模型就是“一对一、一对多、多对多”等关系模型,这是一种二维表格模型,因此一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
关系型数据库可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)。
关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。
关系型数据库介绍:
Oracle数据库:甲骨文公司研发的一款关系型数据库管理系统。目前是最流行的,可靠性好,移植性好,性能效率高
DB2:IBM公司研发的一款关系型数据库管理系统。适用于大型应用系统
SQL Server:由Microsoft公司推出的关系型数据库管理系统。具有可伸缩性好与软件集成度高。
PostgreSQL:由加州大学伯克利分校计算机系开发的ORDBMS(对象关系型数据库管理系统),支持大部分SQL标准并提供了新特性
什么是NoSQL数据库?
非关系型数据库主要是基于“非关系模型”的数据库。
非关系模型有:
1、列模型:存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列作为一个记录(这种模型,数据即索引,IO很快,主要是一些分布式数据库)
2、键值对模型:比如Hbase。存储的数据是一个个“键值对”,比如key value
3、文档类模型:比如MongoDB,以一个文档来存储数据,有点类似“键值对”。
NoSQL 数据库专门构建用于特定的数据模型,并且具有灵活的架构来构建现代应用程序。NoSQL 数据库因其易于大规模开发、强大的功能和良好的性能而被广泛认可。它们使用各种数据模型,其中包括文档、图形、键值、内存和搜索。
用于应用程序开发的主要数据模型是由关系数据库(如 Oracle、DB2、SQL Server、MySQL 和 PostgreSQL)使用的关系数据模型。直到 21 世纪中后期,才开始大规模采用和使用其他数据模型。为了对这些新类别的数据库和数据模型进行区分和分类,创造了术语“NoSQL”。通常术语“NoSQL”与“非关系”可互换使用。
NoSQL 数据库使用各种数据模型来访问和管理数据,例如文档、图形、键值、内存和搜索。这些类型的数据库专门针对需要大数据量、低延迟和灵活数据模型的应用程序进行了优化,这是通过放宽其他数据库的某些数据一致性限制来实现的。
NoSQL数据库的四大优点
NoSQL 数据库非常适合许多现代应用程序,例如移动、Web 和游戏等应用程序,它们需要灵活、可扩展、高性能和功能强大的数据库以提供卓越的用户体验。
- 灵活性:NoSQL 数据库通常提供灵活的架构,以实现更快速、更多的迭代开发。灵活的数据模型使 NoSQL 数据库成为半结构化和非结构化数据的理想之选。
- 可扩展性:NoSQL 数据库通常被设计为通过使用分布式硬件集群来横向扩展,而不是通过添加昂贵和强大的服务器来纵向扩展。一些云提供商在后台将这些操作处理为完全托管服务。
- 高性能:NoSQL 数据库针对特定的数据模型(如文档、键值和图形)和访问模式进行了优化,这与尝试使用关系数据库完成类似功能相比可实现更高的性能。
- 强大的功能:NoSQL 数据库提供功能强大的 API 和数据类型,专门针对其各自的数据模型而构建。
NoSQL数据库与SQL关系型数据库的区别
关系数据库 | NoSQL数据库 | |
最佳工作负载 | 关系数据库专为事务性和高度一致的联机事务处理 (OLTP) 应用程序而设计,并且适用于联机分析处理 (OLAP)。 | NoSQL 键值、文档、图形和内存数据库专为 OLTP 而设计,适用于包括低延迟应用程序在内的多种数据访问模式。NoSQL 搜索数据库设计用于对半结构化数据进行分析。 |
数据模型 | 关系模型可将数据标准化为由行和列组成的表。采用一种架构来严格定义表、行、列、索引、各个表之间的关系及其他数据库元素。数据库在表之间的关系中强制实施引用完整性。 | NoSQL 数据库提供各种数据模型,其中包括文档、图形、键值、内存和搜索 |
ACID属性 |
关系数据库提供原子性、一致性、隔离性和持久性 (ACID) 属性:
|
NoSQL 数据库通常通过放宽关系数据库的一些 ACID 属性来进行权衡,以获得可以水平扩展的更灵活的数据模型。这将使 NoSQL 数据库成为高吞吐量、低延迟使用案例的绝佳选择,这些使用案例需要水平扩展超出单个实例的限制。 |
性能 | 性能通常取决于磁盘子系统。要获得最佳性能,通常需要优化查询、索引和表结构。 | 性能通常由底层硬件集群大小、网络延迟以及调用应用程序来决定。 |
扩展 | 关系数据库通常通过增加硬件的计算能力进行纵向扩展或通过为只读工作负载添加副本进行横向扩展。 | NoSQL 数据库通常是可分区的,因为键值访问模式可以通过使用分布式体系结构进行横向扩展来提高吞吐量,从而以接近无限的规模提供一致的性能。 |
API | 存储和检索数据的请求通过使用符合结构化查询语言 (SQL) 的查询来传达。这些查询由关系数据库解析和执行。 | 借助基于对象的 API,应用开发人员可以轻松存储和检索内存数据结构。通过分区键,应用程序可以查找键值对、列集或包含序列化应用程序对象和属性的半结构化文档。 |