SQL 是一种具有数十年历史的关系数据库访问方法,大多数数据库用户都熟悉这种方法。尽管非结构化数据的存储体量、处理能力与分析方式多年来不断演变,但我们也看到各类数据库技术的兴起,它们能更好地适配新型应用场景的需求。这些数据库通常称为 NoSQL。
SQL 和 NoSQL 的不同之处在于:它们是关系型 (SQL) 还是非关系型 (NoSQL);它们的架构是预定义的还是动态的;它们的扩展方式;它们包含的数据类型;以及更适用于多行事务还是非结构化数据处理。
SQL,即“结构化查询语言”,是一种编程语言,自 20 世纪 70 年代以来,它被广泛用于关系数据库管理系统 (RDBMS) 中的数据管理。在存储成本高昂的早期,SQL 数据库专注于减少数据重复。
时至今日,SQL 仍然被广泛用于查询关系数据库,其中数据存储在以各种方式链接的行和表中。一个表记录可以相互链接或链接到许多其他表记录,或者许多表记录可能与另一个表中的许多记录相关。这些关系数据库提供快速数据存储和恢复功能,可以处理大量数据和复杂的 SQL 查询。
NoSQL 是一种非关系型数据库,这意味着它允许使用与 SQL 数据库不同的结构(不是行和列),并且能够更灵活地使用最适合数据的格式。“NoSQL”一词直到 21 世纪初才出现。这并不意味着系统不使用 SQL,因为 NoSQL 数据库有时确实支持某些 SQL 命令。更准确地说,“NoSQL”有时被定义为“不仅是 SQL”。
要掌握相关基础知识,请观看来自 Jamil Spain 的以下视频:
SQL 数据库在处理结构化数据(即变量和实体之间存在关系的数据)方面非常有价值。
通常,SQL 数据库可以垂直扩展,这意味着您可以通过迁移到可增加更多 CPU、RAM 或 SSD 功能的更大服务器来增加服务器的负载。虽然垂直扩展是最常用的方式,但 SQL 数据库也能通过分片或分区逻辑实现水平扩展,只是这类功能的支持程度尚不完善。
SQL 数据库以关系和表格的方式组织数据,使用具有列或属性和记录行的表。因为 SQL 使用严格预定义的模式,它需要在开始使用 SQL 数据库之前组织和构建数据。
采用 SQL 的关系型数据库管理系统必须具备 ACID 四大特性。这些特性将确保事务成功处理,并且 SQL 数据库具有高度的可靠性:
因为 SQL 数据库拥有悠久的历史,所以它们拥有庞大的社区,并且在线有许多稳定代码库的示例。有许多专家可以为 SQL 和编程关系数据提供支持。
与 SQL 不同,NoSQL 系统允许您使用数据库中的不同数据结构。由于它们允许对非结构化数据采用动态模式,因此无需预先规划和预先组织数据,也更容易进行修改。NoSQL 数据库允许您添加新属性和字段,并且可以在数据库中使用各种语法。
NoSQL 数据库可以更好地水平扩展,这意味着可以根据需要添加额外的服务器或节点来增加负载。
NoSQL 数据库不是关系数据库,因此它们不仅仅将数据存储在行和表中。相反,它们通常属于以下四种类型的结构之一:
SQL 需要 ACID 特性,而 NoSQL 遵循 CAP 理论(尽管一些 NoSQL 数据库,例如 IBM 的 DB2、MongoDB、AWS 的 DynamoDB 和 Apache 的 CouchDB)也可以集成并遵循 ACID 规则。
CAP 定理指出,分布式数据系统只能通过权衡机制,在同一时间内确保 CAP 这三个特性中的两项:
尽管 NoSQL 技术迅速获得了市场采纳,但其用户社区规模相对较小,因此获得的技术支持也较为有限。与多数 SQL 语言的闭源特性形成对比的是,NoSQL 用户确实能从开源生态中获益。
在处理相关数据时,SQL 是一个不错的选择。关系数据库高效、灵活,任何应用程序都可以轻松访问。关系数据库的优势在于,当一个用户更新特定记录时,数据库的每个实例都会自动刷新,且可实时提供该信息。
SQL 和关系数据库可以轻松处理大量信息,根据需要进行扩展,并允许灵活访问数据,例如,只需更新一次数据,而无需更改多个文件。它也最适合评估数据完整性。由于每项数据均存储于单一位置,无需担心旧版本数据引发混淆。
大多数大型科技公司都在使用 SQL,包括 Uber、Netflix 和 Airbnb。甚至像 Google、Facebook、Amazon 这样自建数据库系统的大公司,也使用 SQL 来查询和分析数据。
SQL 的价值在于确保数据的有效性,而 NoSQL 的优势则在于大数据的快速可用性。当公司因需求变化而需要扩展时,这也是一个不错的选择。NoSQL 数据库具有易用性、灵活性与高性能三大优势。
当存在大量(或不断变化)的数据集时、处理灵活的数据模型或不适合关系模型的需求时,NoSQL 也是不错的选择。处理大量非结构化数据时,文档数据库(例如 CouchDB、MongoDB 和 Amazon DocumentDB)是理想之选。若需快速访问键值存储库且无需强完整性保证,Redis 或许是理想选择。当需要在大量数据中进行复杂或灵活的搜索时,Elastic Search 是一个不错的选择。
可扩展性是 NoSQL 数据库的显著优势。与 SQL 不同,它们内置的分片和高可用性要求允许横向扩展。此外,NoSQL 数据库(例如 Facebook 开发的 Cassandra)可处理分布在许多服务器上的大量数据,没有单点故障,并提供了最大的可用性。
其他一些大型公司也使用 NoSQL 系统,因为它们依赖于大量不适合关系型数据库的数据,包括 Amazon、Google 和 Netflix。一般来说,数据集越广泛,NoSQL 就越有可能是更好的选择。
选择或建议数据库是大多数数据库专家的关键责任,而“SQL 与 NoSQL”是做出明智决策的一个有用框架。在选择数据库时,还需重点考量核心数据需求与可接受的权衡方案,以确保满足性能与可用性目标。
IBM Cloud 通过其云原生数据库支持多种 SQL 和 NoSQL 数据库的云托管版本。要获取更多关于选择最佳数据库选项的指导,请查看“数据库领域概述”和“如何在 IBM Cloud 上选择数据库”。
对深入了解各个数据库感兴趣吗?欢迎阅读我们的“数据库深度解析”系列博客文章。
设计数据战略,消除数据孤岛、降低复杂性并提高数据质量,以获得卓越的客户和员工体验。
watsonx.data 支持您通过开放、混合和已治理数据,利用您的所有数据(无论位于何处)来扩展分析和 AI。
通过 IBM® Consulting 发掘企业数据的价值,建立以洞察分析为导向的组织,实现业务优势。