数据库基础知识

一,什么是数据库

        数据库是一个组织和存储数据的结构化集合。它是一个电子化的文件柜,用于存储、管理和检索信息。数据库系统由数据库管理系统(DBMS)支持,它是一种软件,用于管理数据库的创建、维护和使用。 

        数据库的主要目标是提供一个有效的、可靠的和安全的方法来组织和存储大量数据,并且能够方便地检索和更新这些数据。数据库系统通常使用表格(表)来组织数据,其中每个表包含行和列,每一行表示一个记录,而每一列表示一个属性。这种表格结构使得数据的组织和检索变得更加简单和灵活。 

数据库的一些关键概念包括:

  • 1. 表(Table):数据库中的主要组织形式,用于存储特定类型的数据。
  • 2. 记录(Record):表中的一行,包含一组相关的数据。
  • 3. 字段(Field):表中的一列,代表记录的一个属性。
  • 4. 主键(Primary Key):一列或一组列,其值可以唯一标识表中的每一条记录。
  • 5. SQL(Structured Query Language): 一种专门用于与数据库通信的语言,用于查询、更新和管理数据库中的数据。

数据库广泛用于各种应用中,包括企业管理系统、网站、移动应用程序等。不同类型的数据库系统包括关系型数据库(如MySQL、Oracle、Microsoft SQL Server)和非关系型数据库(如MongoDB、Redis),它们在数据组织和存储方面有不同的特点和优势。

(看这个理解更快:最通俗易懂的理解什么是数据库 - 知乎 (zhihu.com)

二,数据库类型

1. 关系型数据库(RDBMS)

        是一种基于关系模型(Relational Model)的数据库管理系统(DBMS)。关系模型是由爱德加·科德提出的一种结构化数据的表示方法,它使用表格(也称为关系)来组织和存储数据。

关系型数据库的核心概念包括:

  • 表格(Relation): 数据以表格的形式组织,表格由行和列组成。每个表格代表一个实体类型,如用户、产品或订单。

  • 行(Tuple): 表格中的每一行表示一个记录,包含一组相关的数据。

  • 列(Attribute): 表格中的每一列表示一个属性,描述了记录的某个方面。

  • 主键(Primary Key): 一列或一组列,其值能够唯一标识表格中的每一行。

  • 外键(Foreign Key): 用于建立表格之间关系的列,通常是其他表格的主键。

  • 关系(Relationship): 表格之间通过共享主键和外键建立关联,形成关系

1.1常见的关系型数据库

  • MySQL: 开源的关系型数据库系统,用于许多Web应用。
  • Oracle Database: 企业级的关系型数据库管理系统,支持大规模应用。
  • Microsoft SQL Server: 由Microsoft提供的关系型数据库,适用于Windows环境。
  • PostgreSQL: 具有高度可扩展性和标准兼容性的开源关系型数据库系统。
  • SQLite: 轻量级的嵌入式关系型数据库,适用于移动应用和小型项目。

关系型数据库是什么,有哪些特点和应用? - 知乎 (zhihu.com)看这个理解更快:关系型数据库是什么,有哪些特点和应用? - 知乎 (zhihu.com)

2. 非关系型数据库(NoSQL数据库)

        非关系型数据库(NoSQL数据库)是一类不依赖于传统关系型数据库模型的数据库管理系统。这种类型的数据库被设计用于满足特定类型的应用程序需求,通常涉及大规模的分布式数据存储和处理。

2.1常见非关系型数据库

  • MongoDB: 面向文档的NoSQL数据库,适用于处理大量文档型数据。
  • Cassandra: 分布式NoSQL数据库,用于处理大规模分布式数据。
  • Redis: 键-值存储数据库,用于缓存和消息队列。
  • Couchbase: 面向文档的NoSQL数据库,结合了缓存和数据库功能。
  • Neo4j: 图形数据库,用于存储和查询图形数据。

(看这个理解也很快:什么是非关系型数据库,有哪些特点和应用? - 知乎 (zhihu.com)

2.2.列存储数据库

        列存储数据库(Columnar Database)是一种数据库管理系统,其存储和组织数据的方式与传统的行存储数据库不同。在列存储数据库中,数据存储在列的集合中,而不是存储在行中。这种存储结构使得列存储数据库在特定类型的查询和分析中表现出色。

2.2.1 列数据库特点和概念
  • 列为基本存储单位: 数据表按列组织,每个列包含了相同类型的数据。相比之下,传统的行存储数据库是按行组织的。

  • 高度压缩: 因为每个列都包含相似的数据类型,列存储数据库通常能够更好地实现数据压缩,减小存储空间的需求。

  • 适用于分析型查询: 列存储数据库在处理大量数据进行聚合、分析、报表生成等操作时表现出色,因为这些操作通常涉及对一列数据的扫描而不是整行。

  • 优化读性能: 对于只需要部分列数据的查询,列存储数据库可以仅读取包含所需列的数据,提高读取性能。

  • 不适用于频繁的随机写操作: 相比于行存储数据库,列存储数据库在执行频繁的随机写操作时可能性能较差。这是因为对于修改或插入数据,需要在多个列中进行同步。

  • 分布式存储: 许多列存储数据库是为了支持大规模分布式环境而设计的,以实现横向扩展。

2.2.2 使用较多的列数据库
  • HBase: 分布式列存储数据库,基于Hadoop分布式文件系统(HDFS),适用于大规模结构化数据的随机、实时读写访问。

  • Apache Cassandra: 分布式NoSQL数据库,高度可伸缩、分布式,适用于具有高吞吐量和可扩展性需求的大规模分布式数据。

  • Google Bigtable: 分布式列存储数据库,用于处理大规模数据集。
  • ClickHouse: 高性能列存储数据库,用于实时分析。

(看这个理解也很快:什么是列式存储数据库?_列存储数据库-CSDN博客

2.3 图形数据库

        图形数据库(Graph Database)是一种专门用于存储和查询图形数据结构的数据库系统。图形数据库采用图形模型来表示和处理数据,其中包含了节点(vertices)和边(edges)的关系。这种数据库类型适用于处理复杂的关系型数据,特别是在社交网络、网络分析、推荐系统等领域。

2.3.1 图形数据库特点和概念
  • 节点(Vertices): 数据以节点的形式存储,每个节点代表一个实体,如人物、地点、事件等。

  • 边(Edges): 边表示节点之间的关系,它们描述了实体之间的连接或关联。

  • 属性(Properties): 节点和边可以包含附加的属性信息,用于描述它们的特征或属性。

  • 图查询语言: 图形数据库通常使用专门的图查询语言(如Cypher、Gremlin)来执行图形查询操作,这些语言专注于描述节点和边之间的模式和关系。

  • 高效遍历: 图形数据库被优化用于高效地遍历图形结构,支持深度和广度优先搜索等操作。

  • 适用于复杂关系: 图形数据库适用于存储和查询复杂的、高度关联的数据结构,例如社交网络中的好友关系、地理信息中的路网等。

2.3.2 一些流行的图形数据库
  • Neo4j: 一个开源的、基于Java的图形数据库,使用Cypher查询语言。
  • Amazon Neptune: 由亚马逊提供的托管图形数据库服务,支持Gremlin和SPARQL查询语言。
  • ArangoDB: 多模型数据库,支持图形、文档和键-值存储。

        图形数据库在需要处理复杂关系和图形结构的应用中表现出色,如社交媒体分析、网络安全、推荐系统等。

(看这个理解更快:解惑图数据库!你知道什么是图数据库吗? - 知乎 (zhihu.com)

2.4 文档存储数据库

        文档存储数据库(Document Store Database)是一种非关系型数据库类型,专门用于存储和查询文档型数据。这种数据库模型将数据表示为文档,通常使用类似于 JSON 或 BSON(Binary JSON)的格式。文档存储数据库适用于存储和检索半结构化或非结构化的数据,如文档、日志、配置文件等。

2.4.1 文档存储数据库特点和概念:
  • 1. 文档(Document): 数据以文档的形式存储,文档是一个自包含的数据单元,通常使用类似于 JSON 的格式表示。
  • 2. 集合(Collection):文档被组织成集合,类似于关系型数据库中的表,每个集合可以包含不同类型的文档。
  • 3. 键-值对: 文档通常包含键-值对,其中键是字段名,值可以是简单的数据类型、嵌套的文档或数组。
  • 4. 动态模式: 文档存储数据库通常支持动态模式,即可以在不事先定义模式的情况下插入文档,每个文档可以有不同的字段。
  • 5. 查询语言:文档存储数据库通常提供一种灵活的查询语言,用于检索文档中的数据。查询语言通常支持过滤、投影和排序等操作。
2.4.2 流行的文档存储数据库
  • MongoDB:开源的文档存储数据库,使用 BSON 格式表示文档,广泛应用于Web应用和大数据场景。
  • Couchbase: 分布式多模型数据库,支持文档存储和键值存储,适用于实时应用程序。
  • RavenDB: 面向文档的 NoSQL 数据库,专为 .NET 应用程序设计。

        文档存储数据库适用于需要存储和查询半结构化数据的场景,例如博客文章、用户配置、产品信息等。由于其灵活性和可伸缩性,文档存储数据库在许多应用领域中得到广泛应用。

(看这个有图:什么是文档数据库_文档型数据库_文档存储数据库-AWS云服务 (amazon.com))

2.5 键-值存储数据库

        键-值存储数据库(Key-Value Store Database)是一种非关系型数据库类型,其核心概念是使用简单的键(key)和相应的值(value)对来存储数据。这种数据库模型适用于对数据进行基本读写操作,并且在某些场景下具有高度的性能和可伸缩性。

2.5.1 键-值存储数据库主要特点和概念
  • 1. **键(Key):** 唯一标识数据的字符串或二进制值,用于检索相应的值。
  • 2. **值(Value):** 存储在数据库中的实际数据,可以是字符串、二进制数据、JSON 文档等。
  • 3. **简单查询模型:** 键-值存储数据库通常提供基本的读写操作,包括插入、获取、更新和删除。
  • 4. **高性能:** 由于简单的结构和基本的操作,键-值存储数据库通常能够提供高性能的读写操作。
  • 5. **横向可伸缩性:** 键-值存储数据库通常设计为可以轻松水平扩展,通过增加节点来处理更多的负载。
  • 6. **用途广泛:** 适用于缓存、会话存储、用户配置、分布式锁等需要快速读写访问的场景。
2.5.2 一些流行的键-值存储数据库
  •  Redis:开源的键-值存储数据库,支持丰富的数据结构,用于缓存和消息队列等场景。
  • Amazon DynamoDB: 由亚马逊提供的托管键-值存储数据库服务,适用于需要高度可伸缩性的应用。
  • Cassandra: 分布式键-值存储数据库,支持横向扩展,适用于大规模分布式环境。

        键-值存储数据库通常适用于需要快速存储和检索简单数据结构的场景。然而,由于其简单的数据模型,不适用于需要复杂查询和事务处理的应用。选择合适的数据库通常取决于具体的应用需求。

看这个有图 :NoSql数据库:键值数据库:一:什么是键值数据库以及redis-CSDN博客

2.6 时间序列数据库

        时间序列数据库是一种专门设计用于存储和处理时间序列数据的数据库类型。时间序列数据是按照时间顺序记录的数据集,通常涉及时间戳和与之关联的值。这种数据库类型广泛应用于需要按时间追踪、分析和查询数据的领域,如监控、日志、传感器数据等。

2.6.1 时间序列数据库主要特点和概念
  •  时间戳(Timestamp): 每个数据点都与一个时间戳关联,表示数据记录的时间。
  • 值(Value): 与每个时间戳相关联的实际数据值,可以是数字、文本或其他数据类型。
  • 快速插入和查询:时间序列数据库通常被优化用于高效地插入新的时间序列数据,并且能够快速查询、聚合和分析这些数据。
  • 存储优化: 由于时间序列数据的特殊性,时间序列数据库通常采用一些存储优化技术,以提高性能和降低存储成本。
  • 滚动时间窗口: 一些时间序列数据库支持滚动时间窗口,即只保留一定时间范围内的数据,过时的数据会被删除。
  • 支持时间序列特定查询:*时间序列数据库通常提供专门的查询语言或功能,用于处理时间序列数据的特定需求,如范围查询、聚合和采样。
2.6.2 一些流行的时间序列数据库
  • InfluxDB: 开源的时间序列数据库,专注于高性能的时间序列数据存储和查询。
  • OpenTSDB:基于HBase的分布式时间序列数据库,适用于大规模的监控数据。
  • Prometheus: 开源的系统监控和警报工具,内置了时间序列数据库。

        时间序列数据库适用于需要按时间进行组织和检索数据的场景,例如物联网设备生成的传感器数据、服务器日志、金融数据等。

(看这个有图:时序数据库入门系列:什么是时序数据库 - 知乎 (zhihu.com)

2.7 搜索引擎

        搜索引擎是一种用于帮助用户查找互联网上的信息的软件系统,意义上说不属于一个数据库,但是某些意义上他却满足数据库的特征。搜索引擎通过检索和排序与用户查询相关的网页、文档、图像、视频或其他类型的信息,以便用户能够快速、有效地找到他们所需的内容。

2.7.1 主要特点和概念
  •  爬虫(Crawler):搜索引擎使用爬虫程序(也称为蜘蛛或机器人)定期浏览互联网上的网页,并将找到的信息保存在索引中。
  • 索引(Index): 搜索引擎构建一个包含关键词和它们在网页中出现位置的索引,以便能够更快速地检索相关信息。
  • 查询处理:当用户输入查询时,搜索引擎使用复杂的算法和模型来匹配查询与索引中的信息,以确定最相关的结果。
  • 排名(Ranking): 搜索引擎将匹配的结果按照相关性排序,并将最相关的结果显示在前面。
  • 全文搜索: 搜索引擎通常支持全文搜索,允许用户在索引中搜索文本中的任何部分。
  • 支持多媒体内容: 一些搜索引擎不仅支持文本搜索,还能够搜索图像、视频、新闻、地图等多种类型的信息。
2.7.1 一些流行的搜索引擎
  • Google:当今最流行和广泛使用的搜索引擎,以其强大的搜索算法和广泛的索引而闻名。
  • Bing: 由微软提供的搜索引擎,提供与Google不同的搜索体验。
  • Yahoo: 一个综合搜索引擎,提供了搜索、新闻、邮件等多种功能。
  • Baidu: 中国最大的搜索引擎,以服务中文用户而闻名。

搜索引擎在日常生活中成为人们获取信息的主要途径,为用户提供了方便而快速的方式来访问互联网上的各种内容。

(看这个:浅谈搜索引擎和传统数据库(ES,solr)_es 和搜索殷琼-CSDN博客

2.8 分布式数据库

        分布式数据库是一种数据库系统,其数据存储和处理能力分散在多个物理或逻辑位置上,而不是集中在单一的数据库服务器上。这种分布式架构旨在提高系统的可伸缩性、性能和容错性。

2.8.1 主要特点和概念包括:
  • 分布式架构:数据库的组成部分分布在多个节点或服务器上,这些节点可以位于同一地理位置或分布在全球不同地方。
  • 水平扩展:分布式数据库系统通常通过水平扩展来处理大量数据和高并发请求,通过添加更多的节点来增加系统容量。
  • 数据分片: 数据通常被分割成不同的片段,每个片段存储在不同的节点上,以实现负载均衡和提高查询性能。
  • 一致性和可用性:分布式数据库需要平衡一致性(Consistency)和可用性(Availability),这就是著名的 CAP 定理所描述的。
  • 分布式事务: 处理跨多个节点的分布式事务是一个挑战,因为确保一致性需要协调多个节点的操作。
  • 数据复制和备份:为了提高容错性和可用性,分布式数据库通常采用数据复制和备份策略。
2.8.2 一些流行的分布式数据库系统
  • Cassandra:分布式 NoSQL 数据库,适用于大规模分布式环境。
  • MongoDB:面向文档的分布式数据库,以其易用性和灵活性而著称。
  • Amazon DynamoDB: 由亚马逊提供的托管键-值存储数据库服务,适用于需要高度可伸缩性的应用。
  • CockroachDB: 分布式 SQL 数据库,支持全球分布式部署。

        分布式数据库适用于需要处理大量数据、高并发请求和具有全球性负载的应用场景。然而,设计和管理分布式系统需要考虑到一些复杂性和挑战,如一致性、分区容错性和通信成本。

(看看这个:什么是分布式数据库?我不信,看完这篇你还不懂!! - 知乎 (zhihu.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值