NoSQL 数据库介绍:NoSQL 数据库类型、历史、用途等。
NoSQL 数据库(也称为“no SQL”或“not only SQL”)是一种分布式非关系型数据库,专为大规模数据存储以及跨众多商用系统的大规模并行、高性能数据处理而设计。与传统关系型数据库方法不同,NoSQL 提供了一种更贴近应用程序的方式来处理数据。它是一种现代数据存储范式,为高性能是主要要求的环境提供数据持久性。在 NoSQL 数据库中,数据存储方式使得写入和读取都很快,即使在高负载下也是如此。
NoSQL 数据库通常是分布式系统,其中多台机器在集群中协同工作。每条数据都在这些机器上进行复制,以提供冗余和高可用性。以分布式方式存储海量数据的能力使得 NoSQL 数据库的开发和部署速度更快。NoSQL 数据库针对特定的数据模型而构建,并具有灵活的模式,从而允许程序员创建和管理现代应用程序。
NoSQL 数据存储是非关系型的、分布式的、灵活的和可伸缩的。此外,NoSQL 数据库管理系统的一些常见特性包括数据集群、灵活模式、复制支持以及最终一致性,这与传统 SQL 数据库系统的通常 ACID 事务能力(确保数据完整性)形成对比。
与 SQL 数据库不同,NoSQL 数据库系统最初是以开源形式开发的,现在几乎所有 NoSQL 数据库系统都提供了企业版。开源允许庞大的支持者社区为数据库做出贡献,这增加了创新性并扩大了它解决的解决方案的多样性。拥有开源选项意味着开发者可以快速轻松地免费试用新的 NoSQL 数据库。
Redis 是 一个开源的内存键值数据结构存储,可用作数据库、缓存或消息代理。Redis Enterprise 基于 Redis 开源版本,是一种 NoSQL 数据库,但也包含了使其具备企业级强度的重要功能,包括 Redis 支持。 Redis Enterprise 可无限线性扩展,具有五个九 (5-9) 的高可用性,并易于进行地理分布式部署。Redis 开源版本与 Redis Enterprise 完全兼容。
随着 Web 2.0 的兴起,各种数据类型的创建呈爆炸式增长,存储价格大幅下降,导致与数据维护和访问相关的挑战发生了变化。关系型数据库由行和列组成,专为需要对通常相互关联的数据进行复杂分析和操作的结构化数据而设计。
随着非结构化数据的快速增长,关系型数据库的结构和扩展限制日益突出。灵活性和快速处理海量数据的能力迅速成为必要条件。在 21 世纪 00 年代末,NoSQL 数据库应运而生,其优势在于以更直观的方式存储数据,并且格式适用于当今的应用程序。NoSQL 数据库解决了 SQL 或关系型数据库无法解决的问题。
一个 文档数据库 (也称为 NoSQL 文档存储)是一种非关系型数据库,它将数据存储为结构化文档。它是一种现代数据存储方式,以 JSON 格式存储数据,而不是简单的行和列。文档可以是 PDF、文档、XML 或 JSON 文件。
JSON 是一个流行的 Redis 模块,可实现高速、大容量的 JSON 文档内存操作。使用 JSON,您可以在分层树状格式中原生存储文档数据,以高效地扩展和查询文档,与使用 Lua 和核心 Redis 数据结构存储和操作 JSON 相比,性能显著提高。它采用的原生数据类型是使用标准 JSON 数据交换语法的 Standard ECMA-404。JSON 在 Redis 中存储 JSON 对象方面优于任何其他技术,例如使用 Lua 操作 JSON 或 MessagePack 对象。
NoSQL 数据库主要有五种类型:键值存储、文档存储、内存数据库、列族数据库和图数据库。实现 NoSQL 数据库通常是这五种数据库类型的组合。
键值存储是 NoSQL 数据库中最简单的类型。它们是键值对的集合,其简单性使其成为 NoSQL 数据库类型中最具可伸缩性的。键值可以是一个字符串、一个数字,以及封装在一个对象中的一组全新的键值对。用例包括购物车、用户偏好设置和排行榜。
文档存储在复杂性上比键值存储高一个台阶。基于 NoSQL 文档的数据库将信息存储在具有特定键的文档中,类似于键值存储,但具有不同的优点和缺点。文档存储在 NoSQL 数据库类型中看起来最自然,因为它们存储日常文档。它们允许对此类通常已经聚合的数据形式执行复杂的查询和计算。文档数据库将数据存储在 CML、YAML、JSON 或 BSON 等二进制文档中。使用特定键使得文档存储类似于键值存储。用例包括在线零售、交易平台和跨行业的移动应用开发。
内存数据库是专门构建的,依赖 DRAM 进行数据存储,以实现亚毫秒级响应。这与大多数将数据存储在磁盘或 SSD/闪存上的 NoSQL 和 SQL 数据库形成对比。这意味着每次查询内存数据库或更新数据库中的数据时,您只访问主内存。这些操作不涉及磁盘。这是有益的,因为主内存比任何磁盘都要快得多。内存数据库还可以通过在事务日志或快照中将每个操作保留在磁盘上来保留持久数据。用例包括排行榜、会话存储和实时分析。
列族数据库将数据存储在包含大量列(在灵活模式下)的表中。在列族数据库中,很容易添加另一列,因为现有列都不会受到影响。单独存储每一列可以在仅涉及少数列时实现更快的扫描。用例包括执行分析和报告,包括求和值和计数条目。
图数据库是最复杂的数据存储类型,旨在高效存储实体之间的关系。当数据高度互连时,例如社交网络、科学论文引用或资本资产集群,图数据库是解决方案。用例包括欺诈检测、社交网络和知识图谱。
SQL 和 NoSQL 有哪些相似之处和不同之处?简而言之,SQL 是一种关系型数据库管理系统,而 NoSQL 是非关系型数据库管理系统。SQL(Structured Query Language)是一种基于关系模型的数据库管理系统类型。它使用结构化模式,数据组织成包含行和列的表。SQL 数据库通常用于事务系统以及需要复杂查询和多数据集之间关系的应用程序。
NoSQL(Not Only SQL)是一种不使用固定模式的数据库管理系统类型。它旨在处理非结构化和半结构化数据,并可以水平扩展以处理海量数据。NoSQL 数据库通常用于大数据和实时 Web 应用程序,并经常与大数据工具结合使用。
DBMS | SQL 数据库 | NoSQL 数据库 |
类型 | 关系型数据库 | 非关系型数据库 |
结构 | SQL 数据库按表和固定列、行来组织和存储数据 | NoSQL 数据库可以是键值型、文档型、列族型和图型 |
模式 | 固定模式 | 动态模式 |
可伸缩性 | 垂直伸缩 | 水平和垂直伸缩 |
查询 | 结构化查询语言 (SQL) | 无声明式查询语言;取决于数据库类型 |