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