探索数据库的世界:常见数据库的分类

101 阅读11分钟

陈瑶-20.jpeg

前言

  数据在当今的数字化时代中无处不在。对于个人和组织而言,如何有效地组织、存储和管理数据成为了一项重要的任务。数据库技术应运而生,成为了数据管理的核心。数据库是大量数据的集合,这些数据长时间存储在计算机中,井井有条,可共享且受统一管理。数据库是一种以某种方式存储在一起的数据集合,可以与多个用户共享,具有最小的可能冗余,并且独立于应用程序。
在现代软件开发中,数据库是不可或缺的组成部分,用于存储和管理数据。随着技术的发展,出现了各种类型的数据库,每种数据库都有其独特的特点和适用场景。本文将按照数据库的类型和使用场景进行分类介绍,并列举一些常见的数据库产品。

一、数据库的分类

  数据库通常用来存储结构化数据,这些数据有明确定义的格式。在过去的几年中,已经发布了许多数据库,可供我们选择的数据库每年都在增长。关于数据库的分类其实可以从各个纬度来进行划分,通常分为层次式数据库、网络式数据库和关系式数据库三种,而不同的数据库是按不同的数据结构来联系和组织的。而在当今的互联网中,最常使用的分类还是根据他们存取数据的特点来进行划分,主要分为关系型数据库和非关系型数据库。如下图所示:

graph TD
A((数据库类型)) --> B([关系数据库]) & C([非关系数据库]) 
B --> B1[(MySQL)]
B --> B2[(PostgreSQL)]
B --> B3[(Oracle)]

C --> C1([键值存储]) -->C11["Memcached、Redis"]
C --> C2([列存储]) --> C21[HBase]
C --> C3([面向文档]) --> C31[MongoDB]
C --> C4([图形]) --> C41[Neo4J]
C --> C5([时序]) 
C --> C6([向量]) 
C --> C7([空间]) 
C --> C8([搜索引擎])
C --> C9([多模])

二、关系型数据库

2.1 关系型数据库的由来

  虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据库独立性和抽象级别上扔有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而关系型数据库就可以较好的解决这些问题。
关系型数据库是目前应用最广泛的数据库类型之一,采用表格的形式来组织数据。它诞生于1969年,可谓历史悠久。与Excel工作表相似,也是采用由行和列组成的二维表来管理数据,因此易于理解和使用。同时,它还使用 SQL(Structured Query Language,结构化查询语言)对数据进行操作。

2.2 关系型数据库介绍

  关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。
传统的关系型数据库采用表格的存储方式,数据以行和列的方式进行存储,使用结构化查询语言(SQL)进行数据操作和查询。关系型数据库的主要特点包括:

  • 数据以表格的形式存储,具有固定的模式。

    学号姓名年龄
    S001张三24
    S002李四25
    S003王五26
  • 数据之间通过主键和外键建立关系。

  • 支持事务处理,具备 ACID(原子性、一致性、隔离性和持久性)特性。

  • 支持复杂的查询和数据分析。

2.3 常见的关系型数据库

  近年来,比较具有代表性的关系型数据库包括:

关系型数据库说明
Oracle是一款功能强大的关系型数据库管理系统,被广泛用于企业级应用和大型数据处理。
PostgreSQL一款功能丰富的开源关系型数据库,支持复杂的数据类型和高级查询。
MySQL一款开源的关系型数据库管理系统,具有高性能、可靠性和易用性,适用于各种规模的应用。

三、非关系型数据库

3.1 非关系型数据库诞生背景

  NoSQL,泛指非关系型的数据库。随着互联网 Web2.0 的兴起,传统的关系数据库在应付 Web2.0 网站,特别是超大规模和高并发时已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSql 数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的一个有效的补充。
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。非关系型数据库采用不同的数据模型和存储方式,适用于处理大规模、高并发的数据。非关系型数据库的主要特点包括:

  • 不使用固定的模式,数据可以以键值对、文档、列族等形式存储。
  • 可以水平扩展,支持分布式计算和存储。
  • 通常具有高性能和低延迟的特点。

3.2 非关系型数据库种类

3.2.1 键值存储数据库

  键值数据库就类似传统语言中使用的哈希表,可以通过key来添加、查询或者删除数据库。因为使用key主键访问,所以会获得很高的性能及扩展性。键值数据库主要使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。键/值数据库中的键可以包含多个元素,每个键都是唯一的,而值可以是任意类型的数据,包括字符串、数字、二进制数据等。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发。
近年来,比较具有代表性的键值存储数据库有:

数据库说明
Memcached是一款简单而高效的键值数据库,以内存为存储介质,通过内存缓存来提供快速的读写访问,适用于分布式缓存场景。
Redis是一款高性能的键值存储数据库,支持丰富的数据结构和快速的读写操作,常用于缓存、消息队列等场景。

3.2.2 列存储数据库

  这种数据库通常用来应对分布式存储海量数据,以列的方式存储数据。列存储数据库将数据存储在列族中,一个列族存储经常被一起查询的相关数据,比如人类,我们经常会查询某个人的姓名和年龄,而不是薪资。这种情况下姓名和年龄会被放到一个列族中,薪资会被放到另一个列族中。
近年来,比较具有代表性的列存储数据库有:

数据库说明
HBase是一款开源的分布式列式数据库,它具有高可伸缩性和高可用性,适用于大规模数据存储和实时查询的场景。
Cassandra是一款分布式的列式数据库,具有高可扩展性和高性能,适用于大规模的数据存储和分析。

3.2.3 面向文档数据库

  文档型数据库的灵感是来自于Lotus Notes办公软件,而且它同键值数据库类似,因为它也通过主键存储文档(值)。文档数据库用于存储和管理以文档形式组织的数据,文档可以是 JSON、XML 等格式。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,而且文档型数据库比键值数据库的查询效率更高。
面向文档数据库会将数据以文档形式存储,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名词与对应值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。
近年来,比较具有代表性的面向文档数据库有:

数据库说明
MongoDB是一款面向文档的数据库,数据以文档的形式存储,支持动态查询和索引,适用于大数据和实时分析。

3.2.4 图形数据库

  图形数据库允许我们将数据以图的方式存储,用于存储和处理图形结构数据,例如社交网络、知识图谱等。图数据库存储两种类型的信息:边和节点。边定义了节点之间的关系,我们可以把节点看作实体。节点和边都具有属性,其中存储了该节点或边的一些信息。近年来,比较具有代表性的图形数据库有:

数据库说明
Neo4J是一款图形数据库,用于存储和处理图形结构数据,适用于社交网络分析、推荐系统等场景。

3.2.5 时序数据库

  时序数据库是针对时间进行优化的数据库,用于存储和处理时间序列数据,例如传感器数据、日志数据等。这些数据库通常需要支持大量的写操作,很少更新。写入时序数据库的记录通常很小,但记录的量很多。常见的时序数据库产品包括:

数据库说明
InfluxDB是一款高性能的开源时序数据库,具有高写入速度和高压缩比,适用于物联网、监控等场景。
TimescaleDB是一款基于 PostgreSQL 的开源时序数据库,提供了 SQL 查询和水平扩展的能力。

3.2.6 向量数据库

  向量数据库用于存储和处理向量数据,例如图像、音频、文本的特征向量。常见的向量数据库产品包括:

数据库说明
Milvus是一款开源的向量数据库,支持高维向量的存储和快速的相似度搜索,适用于人工智能和推荐系统。
Faiss是一款开源的向量检索库,提供了高效的向量索引和相似度搜索功能。

3.2.7 空间数据库

  空间数据库用于存储和处理地理空间数据,例如地图数据、位置数据等。常见的空间数据库产品包括:

数据库说明
PostGIS是一款基于 PostgreSQL 的空间数据库扩展,提供了丰富的地理空间函数和查询能力。
Oracle Spatial是Oracle数据库的空间扩展,支持地理空间数据的存储和查询。

3.2.8 搜索引擎数据库

  搜索引擎数据库用于存储和检索大量的文本数据,具有高效的全文搜索和检索能力。常见的搜索引擎数据库产品包括:

数据库说明
Elasticsearch是一款分布式的搜索和分析引擎,它有强大的全文搜索和复杂查询功能,且具有实时性和可扩展性,适用于日志分析、搜索引擎等场景。
Apache Lucene是一款开源的全文搜索引擎库,提供了强大的搜索和索引功能,被广泛应用于各种搜索引擎产品中。
Apache Solr一个基于Lucene的搜索平台,提供了丰富的搜索和索引功能,并支持分布式部署。

3.2.9 多模数据库

  多模数据库是一种支持多种数据模型的数据库,可以同时存储和查询不同类型的数据。常见的多模数据库产品包括:

数据库说明
ArangoDB是一款多模数据库,支持关系型、文档型和图形型数据,提供了灵活的数据访问和查询方式。
OrientDB是一种面向文档和图形的多模数据库,具有强大的查询和索引功能,适用于复杂的数据关系分析。

结语

  本文介绍了一些不同类型的数据库以及它们的使用场景。关系型数据库适用于需要事务处理和复杂查询的应用,而非关系型数据库适用于大规模、高并发的数据处理。不同的数据库类型适用于不同的应用场景和需求,根据不同的需求,选择适合的数据库产品,可以提高系统性能和开发效率,构建高效可靠的应用系统,从而更好地满足业务需求。

划重点.gif