一文读懂 NoSQL 数据库_nosql数据库是什么

一文读懂 NoSQL 数据库_nosql数据库是什么

解决方案goocz2025-02-18 10:50:4712A+A-


NoSQL全称NOT ONLY SQL,是一种数据库类型,比传统的关系型数据库具有更大的灵活性。

什么是NoSQL数据库

对比传统的关系型数据库,NoSQL提供了灵活的存储和检索模式。



随着云计算,IoT物联网,大数据以及高容量Web和移动应用程序的广泛使用,NoSQL变得更加流行。NoSQL数据库的最常见类型是键值数据库,文档数据库,列数据库和图形数据库。

需要强调的是,“ NoSQL”中的“No”不是"否"的意思,而是“Not Only, 不仅” 的缩写。

这是因为许多NoSQL数据库都支持类似SQL的查询,而且因为在微服务和持久性中,现在的应用程序通常都既使用NoSQL数据库,也使用关系数据库。

NoSQL数据库 与 SQL数据库对比

NoSQL数据库不遵循关系数据库的所有规则-特别是,它确实使用传统的行/列/表数据库设计,并且不使用结构化查询语言(SQL)来查询数据。

最初的数据库系统是平面文件/逗号分隔的,通常是特定应用程序专有的,并且它们在数据之间可能发现的关系受到限制。这时的数据库管理系统也很复杂。

这最终导致了关系数据库(RDBMS)的发展。关系数据库将数据安排在可以通过公用字段连接或关联的表中,与应用程序分开并通过SQL查询。换句话说,关系数据库将数据放入表中,而SQL创建了一个与之交互的接口。代表数据库包括Oracle DB,微软的Sql Server,以及MySQL和PostgreSQL等等。

关系数据库可以很好地用于大型服务器和存储介质。但是,随着越来越多的频繁变化的异构数据在诸如电子商务应用程序之类的事物中变得越来越普遍,程序员需要比SQL更灵活的东西。NoSQL是那种选择。

NoSQL数据库是为特定的数据模型构建的,并具有灵活的架构,允许程序员创建和管理现代应用程序。NoSQL也更加灵活,因为NoSQL不是基于表的概念构建的,并且不使用SQL来操纵或分析数据(尽管某些NoSQL数据库可能具有SQL启发式的查询语言)。

NoSQL包含结构化数据(特定格式的代码,以使搜索引擎可以理解的方式编写),半结构化数据(包含用于分隔语义元素并在数据中强制执行记录和字段层次结构的标记或其他标记的数据) ,非结构化数据(不具有预定义数据模型或未以预定义方式组织的信息)和多态数据(可以根据需要转换为任何不同数据类型的数据)。

NoSQL使您变得更敏捷,更灵活并且可以更快地进行迭代。NoSQL数据库可简化设计,更好地控制可用性并提高可伸缩性。

当今的云计算供应商既支持SQL,也支持NoSQL数据库。选择哪个数据库取决于业务的需求。


从上图我们可以看出,NoSQL在社交媒体领域,物联网领域,游戏领域以及文档数据库中有广泛的应用。而SQL在Web引用,移动应用,企业级应用同样也在广泛使用。对于大型的企业级应用而言,往往及使用SQL,也是用NoSQL。

NoSQL数据库类型和示例

NoSQL数据库可以使用以下四个主要数据模型中的任何一个来管理信息:

  • 键值存储型数据库

在键值结构中,键通常是一个简单的字符串,值是一系列对数据库不透明的不间断字节。数据本身通常是某种原始数据类型(字符串,整数,数组)或应用程序需要持久存储并直接访问的更复杂的对象。

这用更灵活的数据模型代替了关系模式的刚性(方案基本上是表如何工作的蓝图),该模型允许开发人员在其应用程序发展时轻松地修改字段和对象结构。通常,键值存储没有查询语言。它们只是提供了一种使用简单的GET,PUT和DELETE命令存储,检索和更新数据的方法。此模型的简单性使键值存储快速,易于使用,可扩展,可移植且灵活。REDIS就是这类的代表。

  • 文档型数据库

文档是具有可识别类型的值(包括数字,布尔值和字符串)以及嵌套数组和字典的对象和键(字符串)。文档数据库的设计具有灵活性。它们通常不会被强制具有架构,因此易于修改。如果应用程序需要能够存储各种属性以及大量数据,那么文档数据库是一个不错的选择。MongoDB和Apache CouchDB是流行的基于文档的数据库的示例。

  • 列数据库

基于列的模型(也称为“宽列”)使用行键,列名和单元格时间戳,可以非常快速地访问数据。这些类型的数据库的灵活模式意味着列不必在记录之间保持一致,并且您可以将列添加到特定行,而不必将它们添加到每条记录中。类似于Apache Cassandra中的列式存储数据模型,来自Google的BigTable。

  • 图数据库

现代图形数据库是一个数据存储和处理引擎,可以使数据和关系的持久性和探索效率更高。在图论中,结构由顶点和边(数据和连接)或以后称为“数据关系”的部分组成。图的行为类似于人们的想法,即离散数据单元之间的特定关系。此数据库类型对于可视化,分析或帮助您查找不同数据之间的连接特别有用。结果,企业将图技术用于推荐引擎,欺诈分析和网络分析。基于图的NoSQL数据库的示例包括Neo4j和JanusGraph。

NoSQL数据库的示例



许多NoSQL数据库是由Google,Amazon,Yahoo和Facebook等年轻的技术公司设计的,旨在提供更有效的方式来存储内容或处理大型网站的数据。一些最受欢迎的NoSQL数据库包括:

  • Apache CouchDB,一个基于JSON文档的开放源代码数据库,使用JavaScript作为查询语言
  • Apache Cassandra,一个开放源代码的大列存储数据库,旨在管理多个服务器上的大量数据以及跨多个数据中心的集群
  • MongoDB,一个基于开源文档的数据库,使用类似于JSON的文档和架构,是MEAN堆栈的数据库组件
  • Redis,功能强大的内存键值存储,用于会话缓存,消息队列和其他特定应用程序
  • Elasticsearch,一个基于文档的数据库,其中包括全文搜索引擎

何时使用NoSQL

NoSQL支持更快,更敏捷的存储和处理,这意味着NoSQL数据库通常更适合现代,复杂的应用程序,例如电子商务站点或移动应用程序。

NoSQL数据库的水平扩展和灵活的数据模型意味着它们可以处理大量快速变化的数据,使其非常适合敏捷开发,快速迭代和频繁的代码推送。

简而言之,关系数据库和NoSQL数据库之间的区别是性能,可用性和可伸缩性

NoSQL数据库比RDBMS更好的一些特定情况包括:

  • 当您需要通过更改架构存储大量非结构化数据时。NoSQL数据库通常具有水平扩展属性,该属性允许它们存储和处理大量数据。而且NoSQL支持临时模式更改。(相比之下,对于关系数据库,工程师预先设计了数据模式,然后对数据库运行SQL查询;如果需要后续的模式更改,则通常很难执行并且很复杂。)
  • 当您使用云计算和存储时。大多数NoSQL数据库旨在跨多个数据中心进行扩展,并作为分布式系统运行,这使它们可以立即利用云计算基础架构及其更高的可用性。(有关更多信息,请参阅“ 如何在IBM Cloud上选择数据库。”)
  • 当您需要快速发展时。NoSQL通常是敏捷软件开发方法的首选数据存储,这需要非常短的冲刺周期。使用NoSQL,您不必像使用关系数据库那样准备数据,并且不必在每次应用程序设计更改时都迁移结构化数据,而是可以随应用程序发展动态NoSQL模式。
  • 当混合数据环境有意义时。NoSQL有时不仅仅意味着SQL,这意味着它可以与关系数据库互补或并排放置,并为选择最佳工具提供了灵活性。例如,Craigslist将其活动列表存储在关系数据库中,但将其归档存储在开销较低的基于文档的NoSQL存储中。

关于NoSQL的讲解就到这里,希望本文能够让你对NoSQL有所了解。欢迎留言讨论。

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5