什么是非关系型数据库?

17 Mar 2025 | 4 分钟阅读
  • 非关系型数据库是不遵循关系型数据库管理系统提供的关系型数据库模型的数据库。
  • 它是一种NoSQL数据库,随着大数据应用的兴起,我们看到了非关系型数据库的稳定增长。
  • 我们有一个非关系型数据库。在数据库中,我们有一个集合。在一个集合中,我们有一个文档,在文档中,我们有键值对。如果用关系型的方式来谈,那么集合就是表,文档就是行,行由键值对组成。

非关系型数据库如何工作?

非关系型数据库模型使用各种不同的数据模型,如键值、文档、图、内存和搜索。

让我们通过一个例子来理解。

  • 在关系型数据库中,一本书的记录由单独的表组成,表之间的关系由主键和外键约束定义。例如,Book表有三列,即Book id、Book titleEdition NumberAuthor表有三列,即Author id、Author nameBook id。该关系模型的设计目的是使数据库能够在表之间强制执行引用完整性,以减少冗余。
  • 在非关系型数据库中,记录以 json 格式存储。每个书籍项目,如书籍 id、书籍标题、版本号、作者 id、作者姓名,都作为属性存储在文档中。

为什么要使用非关系型数据库

使用非关系型数据库是因为以下特性

  • 灵活性:它具有非常灵活的数据模型,可以提供更快、迭代的开发。非关系型数据库的灵活模型使其成为结构化、半结构化和非结构化数据的理想选择。
  • 可伸缩性:非关系型数据库通过使用硬件的分布式集群进行横向扩展,而不是通过添加昂贵的服务器进行纵向扩展。
  • 高性能:非关系型数据库使用一些特定的数据模型,如键值、文档等,这些模型提供比关系型数据库更高的性能。
  • 高度功能性:非关系型数据库为其各自的数据模型提供高度功能性的 API 和数据类型。

非关系型数据库类型

  • 键值
  • 文档
  • Graph
  • 内存中
  • 搜索
Non Relational Database

键值

  • 键值数据库是一种非关系型数据库,它以键值的形式存储数据。
  • 键值数据库提供高度可分区和水平扩展,这是其他类型的数据库无法实现的。
  • 键值数据库被那些希望存储大量数据而没有任何性能开销的企业所使用。
  • 键值对中的键必须是唯一的,它允许您访问与该键关联的值。
  • Redis、Riak 和 Oracle NoSQL 是键值数据库的例子。
  • 键值存储是一个键和值的大哈希表。
  • 键是自动生成的,而值可以是字符串、JSON、BLOB 等。
  • 键值有一个哈希表,它由一个键和一个指向特定数据的指针组成。
  • 哈希表是一个桶,它由一个逻辑上的键组组成。

考虑一个简单的例子,其中键是学生 id,与键关联的值是学生的姓名。

1Akshita
2Ankita
3Yesha

键值数据库的缺点

  • 它不提供传统数据库系统提供的功能,例如在多个事务同时执行时的一致性。 这些能力由应用程序本身提供。
  • 当数据量增加时,维护唯一键就变成一项困难的任务。

文档

  • 文档数据库是一种非关系型数据库,用于将半结构化数据存储为文档。
  • 文档数据库是开发者所需要的,因为应用程序层中的数据表示为 JSON 格式。
  • 在文档数据库中,文档可以具有相同或不同的数据结构。
  • 文档被分组到集合中,其行为类似于关系数据库中的表。
  • 文档数据库非常流行,因为它允许您通过使用与应用程序代码中相同的模型将数据持久化到数据库中。
  • Apache CouchDB, MongoDB 是文档数据库的例子。

Graph

Non Relational Database
  • 图数据库是由边和节点表示的网络数据库,用于存储数据。
  • 通过使用图数据库,可以很容易地将图从一个模型转换为另一个模型。
  • 节点之间有一些关系,这些关系由节点之间的边表示。
  • 一些定义的属性与节点和边相关联。
  • 图包含节点和边。节点用于存储实体,而边用于存储边之间的关系。
  • 边有一个起始节点、结束节点、类型和方向。它还描述了父子关系。
  • 在图数据库中遍历连接非常快,因为节点之间的关系不是在查询时计算的,而是持久化在数据库中。

内存中

  • 内存数据库是一种非关系型数据库,它依赖于内存进行数据存储,而不是将数据存储在磁盘或 SSD 上。
  • 它通过消除访问磁盘的需求来最小化响应时间。
  • 由于数据存储和管理在主存储器中,因此存在服务器故障时数据丢失的风险。
  • 内存数据库非常适合需要微秒级响应时间的应用程序。
  • 内存数据库的用例包括实时竞价、游戏排行榜和缓存。

搜索

  • 搜索数据库是一种非关系型数据库,用于搜索数据内容。
  • 它使用索引来对数据中的相似特征进行分类,并促进搜索能力。
  • 它主要与可能较长、半结构化或非结构化数据一起使用。
  • 它提供了一些专门的方法,如全文搜索、复杂的搜索表达式和搜索结果的排名。

下一个主题AWS Elasticache