什么是 NoSQL 以及它是否是数据库领域的下一个大趋势?


什么是 NoSQL?

根据官方维基百科的定义:“NoSQL(最初指的是“非 SQL”或“非关系型”)数据库提供了一种存储和检索数据的机制,其建模方式不同于关系型数据库(RDBMS)中使用的表格关系。它涵盖了各种不同的数据库技术,这些技术是为了应对用户、对象和产品存储的数据量增加、访问这些数据的频率以及性能和处理需求而开发的。通常,NoSQL 数据库以键值对、图数据库、面向文档或面向列的结构进行组织。

在几十年的软件开发过程中,我们一直在使用 SQL(结构化查询语言)形式的数据库,我们将数据存储在关系表中。然而,近年来随着互联网和 Web 2.0 应用的蓬勃发展,数据库已经增长到数千兆兆字节。Facebook、Google、Amazon、Watsapp 等应用催生了一个全新的数据库管理时代,它遵循简单的设计、速度和比传统数据库更快的扩展方法。此类数据库用于大数据、海量实时应用和分析。

例如,假设您有一个博客应用程序,用于存储用户博客。现在假设您必须在应用程序中添加一些新功能,例如用户点赞这些博客文章或对其发表评论或点赞这些评论。使用典型的 RDBMS 实现,这将需要彻底修改您现有的数据库设计。但是,如果您在这种情况下使用 NoSQL,则可以轻松修改您的数据结构以匹配这些敏捷需求。使用 NoSQL,您可以直接开始将此新数据插入到现有结构中,而无需创建任何新的预定义列或预定义结构。

RDBMS 的挑战

  • RDBMS 假设数据具有明确定义的结构,并假设数据在很大程度上是统一的。

  • 它需要在构建应用程序之前预先定义应用程序及其属性(列、类型等)的模式。这与高度动态应用程序的敏捷开发方法不匹配。

  • 随着数据开始变得越来越大,您必须垂直扩展数据库,即向现有服务器添加更多容量。

NoSQL 相比 RDBMS 的优势

无模式 -

NoSQL 数据库是无模式的,不定义任何严格的数据结构。

动态和敏捷 -

NoSQL 数据库具有良好的动态增长以适应不断变化的需求的趋势。它可以处理结构化、半结构化和非结构化数据。

水平扩展 -

与垂直扩展的 SQL 数据库相反,NoSQL 通过添加更多服务器并使用分片和复制的概念进行水平扩展。NoSQL 的这种行为适合于 Amazon Web Services (AWS) 等云计算服务,这些服务允许您处理虚拟服务器,这些虚拟服务器可以根据需要进行水平扩展。

更好的性能 -

与传统的 RDBMS 实现相比,所有 NoSQL 数据库都声称可以提供更好、更快的性能。

谈到局限性,由于 NoSQL 是一整套数据库(而不是单个数据库),因此局限性因数据库而异。其中一些数据库不支持 ACID 事务,而另一些数据库可能缺乏可靠性。但它们各自都有自己的优势,因此非常适合特定的需求。

NoSQL 数据库的类型

面向文档的数据库 -

面向文档的数据库将文档作为一个整体对待,并避免将其拆分为其组成部分的名称/值对。在集合级别,这允许将各种文档组合到单个集合中。文档数据库允许根据文档的主标识符及其属性对文档进行索引。如今,有不同的开源文档数据库可用,但最突出的选择是 MongoDB 和 CouchDB。事实上,MongoDB 已经成为最流行的 NoSQL 数据库之一。

基于图的数据库 -

图数据库使用具有节点、边和属性的图结构来表示和存储数据。根据定义,图数据库是任何提供无索引邻接的存储系统。这意味着每个元素都包含指向其相邻元素的直接指针,并且不需要索引查找。可以存储任何图的通用图数据库与专门的图数据库(如三元组存储和网络数据库)不同。索引用于遍历图。

基于列的数据库 -

面向列的存储允许有效地存储数据。当某个列的值不存在时,它通过简单地不存储该列来避免占用空间。每个数据单元可以被认为是一组键/值对,其中单元本身通过主键(通常称为主键)来识别。Bigtable 及其克隆倾向于将此主键称为行键。

键值数据库 -

键值对的键是集合中的唯一值,可以轻松查找以访问数据。键值对的类型多种多样:有些将数据保存在内存中,而有些则提供将数据持久化到磁盘的功能。Oracle 的 Berkeley DB 是一种简单但功能强大的键值存储。

流行的 NoSQL 数据库

让我们总结一下分别属于上述类别的几种流行的 NoSQL 数据库。

  • 面向文档的数据库 - MongoDB、HBase、Cassandra、Amazon SimpleDB、Hypertable 等。
  • 基于图的数据库 - Neo4j、OrientDB、Facebook 开放图、FlockDB 等。
  • 基于列的数据库 - CouchDB、OrientDB 等。
  • 键值数据库 - Membase、Redis、MemcacheDB 等。

NoSQL 数据库。图片来源:getfilecloud.com

结论

在本文中,我们了解了什么是 NoSQL 数据库技术以及它与 RDBMS 实现的主要区别。然后,我们探讨了各种类型的 NoSQL 数据库、它们的应用以及每种类型的一些最流行的数据库。

如今,许多组织正在将其庞大的数据集和高规模应用程序适应此类数据库。这表明 NoSQL 绝对将成为网络和数据库技术的下一个大事件,它有可能打破 RDBMS 数年来的传统。

更新于: 2020 年 1 月 16 日

1K+ 阅读量

启动您的职业生涯

通过完成课程获得认证

开始
广告