什么是数据库? 数据管理指南

数据库是一种结构化系统,用于存储、管理和检索信息。

您可以将数据库想象成一个数字图书馆,图书管理员确切地知道每本书的每一页都藏在哪里。如果走进一间堆满数百万张散乱纸张的巨大房间,您永远也找不到所需的信息。您需要一个系统来整理这些文件,为它们添加清晰的标签,并帮助您在几秒钟内检索到它们。数据库就是为应用提供这种支持的。它就像任何数字系统的可靠记忆库,安全地存储着网站、企业和基本服务每天正常运行所依赖的信息。

大多数数据库都属于以下两个主要类别:

  • 关系型数据库 (SQL):这类数据库将数据整理成由行和列组成的表。这些数据库提供结构化查询语言 (SQL),用于查找数据点之间的关系,因此非常适合事务一致性和复杂查询。
  • 非关系型数据库 (NoSQL):这类数据库具有动态灵活的架构。它们以文档、图或键值对的形式存储数据,因此能够大规模处理非结构化、半结构化或快速变化的数据。

数据库要点总结

  • 它是什么?数据库是一种专门的系统,用于存储、整理和检索数据,供应用使用
  • 工作原理与专为人类阅读而设计的电子表格不同,数据库是为机器交互而构建的,因此可以高效地处理大量信息
  • 如何使用这些数据?数据库类型众多,例如关系型数据库、文档数据库和向量数据库,每种数据库都适合存储不同类型的信息,例如用户个人资料、社交媒体帖子或 AI 生成的数据

什么是托管式数据库服务?

在自己的计算机或服务器上运行数据库时,您需要做很多工作。您需要处理备份、安装安全更新,并确保服务器不会耗尽内存。这称为“自行托管”。

托管式数据库服务可以帮您完成这些工作。您向云服务提供商付费,让其为您运行数据库。他们负责管理繁重的工作,例如设置基础设施、确保软件保持最新状态以及确保系统保持在线。这样,您就可以专注于编写应用代码,而无需担心服务器的内部运作。

数据库的工作原理

Google 表格或 Excel 等电子表格非常适合人工扫描,但当数千人同时使用时,就会变得缓慢而混乱。数据库的构建方式各不相同。它们通过三个主要部分发挥作用:

  1. 数据:这是信息本身。它可以是简单的内容,例如文本(姓名和电子邮件地址)、数字(价格),也可以是复杂的内容,例如图片和 AI 嵌入。
  2. 查询:这是您向数据库“询问”信息的方式。您可以使用 SQL(结构化查询语言)等语言来准确地告诉数据库您需要什么。例如,您可能会要求“过去一周内注册的所有用户”。
  3. 数据库管理系统 (DBMS):这是充当管理者的软件。它负责处理请求、确保数据安全,并组织信息的存储方式。例如 PostgreSQL、MySQL 和 MongoDB。

数据库类型

选择合适的数据库取决于数据的形式。

类型

适用场景

主要特征:

示例

关系型 (SQL)

具有明确关系的结构化数据

使用表、行和列

用于账户余额的银行系统

非关系型 (NoSQL)

灵活、快速或变化的数据

不使用表,以多种方式存储数据

大型 Web 应用的大数据分析

键值对

简单快速的查找

以键值对的形式存储数据,就像数字字典一样

存储用户会话信息以供登录使用

文档

存储复杂的嵌套数据

以文档(例如 JSON 文件)形式存储数据

管理电子商务中的产品目录

矢量

AI 和机器学习

将信息存储为数学向量

根据过去的用户行为查找产品推荐

图表

数据与深层连接

侧重于各项内容之间的关系

社交媒体“好友的好友”功能

时序

随时间变化的数据

记录特定时间戳的信息


监控工厂中的温度传感器

类型

适用场景

主要特征:

示例

关系型 (SQL)

具有明确关系的结构化数据

使用表、行和列

用于账户余额的银行系统

非关系型 (NoSQL)

灵活、快速或变化的数据

不使用表,以多种方式存储数据

大型 Web 应用的大数据分析

键值对

简单快速的查找

以键值对的形式存储数据,就像数字字典一样

存储用户会话信息以供登录使用

文档

存储复杂的嵌套数据

以文档(例如 JSON 文件)形式存储数据

管理电子商务中的产品目录

矢量

AI 和机器学习

将信息存储为数学向量

根据过去的用户行为查找产品推荐

图表

数据与深层连接

侧重于各项内容之间的关系

社交媒体“好友的好友”功能

时序

随时间变化的数据

记录特定时间戳的信息


监控工厂中的温度传感器

关系型数据库

关系型数据库通常也称为 SQL 数据库,以结构化表的形式表示数据。如果您需要确保银行事务完全成功或完全失败,则可能会决定使用关系型数据库,因为它严格遵循 ACID(原子性、一致性、隔离性、持久性)属性。

NoSQL 数据库

NoSQL 数据库具有灵活性。它们以文档、图表或键值对的形式存储数据。由于它们不需要严格的架构,因此通常适用于移动应用、社交媒体信息流或实时内容管理系统等快速发展的应用。

键值对数据库

这是最简单的 NoSQL 数据库形式。它们将数据存储为与值配对的唯一键。由于它们速度快且简单,因此开发者可能会使用它们来缓存会话数据或存储用户偏好设置等。

这些就像字典一样。您有一个键(例如用户名)和一个值(个人资料数据)。它们非常快速,因为它们不必搜索复杂的表来查找您想要的内容。

文档数据库

文档数据库以灵活的格式(通常是 JSON)存储数据。当数据结构频繁变化时,它们会非常有用,例如在内容管理系统中,不同的博客文章可能具有不同的属性。

向量数据库

向量数据库以数学向量的形式存储信息,让计算机能够更好地理解数据的“含义”,而不仅仅是匹配确切的关键字。这项技术为现代生成式 AI 和搜索功能提供支持。

图形数据库

图数据库侧重于数据点之间的关系。它们不使用表,而是将数据存储为节点和边缘。以社交网络为例:“人”是节点,“关注”操作是边。如果您要构建一个依赖复杂连接的推荐引擎,图数据库可以帮助您比标准关系型数据库更快地查询这些链接。

时序数据库

时序数据库专门用于存储按时间编制索引的数据点。它们专为处理大量带时间戳的数据而构建,例如来自 IoT 设备的传感器读数、服务器日志或股市动态。这些数据库擅长“降采样”,即获取较旧的高频数据,并将其压缩为更广泛的摘要以节省空间。

数据库部署选项

您可以将数据库放在几个不同的位置:

本地:您在自己的办公室或数据中心,使用自己的物理硬件运行数据库。这样,您就可以完全掌控,但需要自行管理所有安全和维护工作。

混合云:这是本地和云的混合。您可以将敏感数据保留在本地以确保安全,同时将面向公众的应用数据存储在云端。

:数据库位于云提供商的服务器上。这是最常见的选择,因为如果您的应用突然变得热门,您可以轻松扩容。云数据库可以提供以下几项优势:

  • 弹性:您可以立即增加存储空间或处理能力
  • 可访问性:您的团队可以在世界任何地方管理数据库
  • 维护:云提供商管理底层硬件、更新和安全补丁

在不同部署选项之间迁移时,例如从本地设置迁移到托管式云服务,或从混合环境迁移到完全云原生的解决方案,重点应放在基础架构变更上,而不仅仅是数据格式变更。请务必仔细规划数据库迁移,以确保数据完整性、最大限度地减少停机时间并管理连接变更。

AI 和数据库

过去,开发者通常会将标准应用数据和 AI 数据分别存储在不同的数据库中。这迫使开发者在数据库和单独的 AI 引擎之间来回移动大量数据,导致应用速度变慢,维护难度加大。如今,集成是主流趋势。我们希望数据库能够理解和处理数据,包括 AI 生成的信息。

从宏观层面来看,现代数据库正在通过添加以下核心 AI 功能变得“智能”:

  • 向量和语义搜索:数据库以“向量”(表示含义的数字列表)的形式存储数据。这样,您的应用就可以根据含义(而不仅仅是匹配关键字)来查找结果。搜索“犬”可以找到“狗”。
  • 检索增强生成 (RAG):您的数据库会在 AI 模型回答问题之前向其提供最新的私密信息。这可确保 AI 提供更准确、更可靠的回答。
  • 多模态功能和搜索:数据库现在可以存储和关联不同的数据类型,例如文本、图片和音频。您可以在这些格式中进行搜索,例如查找与特定商品照片匹配的文字说明或价格。
  • 自然语言转 SQL:将“Show me all high-value customers”(显示所有高价值客户)等纯英文问题转换为提取所需信息的准确代码。
  • 混合搜索:将传统的关键字搜索与语义搜索相结合。这种方法非常有效,因为它使用精确匹配来查找特定字词(如商品 ID),同时使用向量根据意图查找相关商品。

通过使用支持这些工具的数据库,您可以在一次查询中搜索用户的姓名、历史记录和偏好设置,从而简化技术栈,并帮助您的应用提供更快、更智能的体验。

下面展示了如何在 Python 中执行混合搜索,将特定关键字和语义概念相结合:

  • Python
正在加载...

选择合适的数据库

在确定具体架构之前,请先问自己以下问题,以确定哪种数据库类型最适合您的项目需求。

考虑因素

推荐的数据库类型

推理

我的数据是否具有严格的结构,例如银行记录或用户账号?

关系型 (SQL)

表和行可确保数据准确性,并强制执行记录之间的严格关系。

我是否需要存储格式经常变化的数据,例如用户日志或活动动态?

NoSQL

由于没有严格的架构,您可以存储结构不断演变或变化的数据。

我是否需要尽可能快地查找用户会话等简单数据?

键值对

通过将单个键直接映射到值,数据库避免了复杂的搜索。

我的数据是否类似于代码中的对象,例如具有不同特征的产品?

文档

以 JSON 等格式存储数据,可让您更轻松地在应用代码中直接处理数据。

我构建的 AI 应用是否需要搜索“含义”或相似性?

向量

这些模型经过优化,可根据数学相似度(而非确切关键字)存储和比较数据。

数据点之间的关系是否与数据本身同样重要?

图表

这些系统旨在快速遍历复杂的连接,例如社交网络或欺诈检测路径。

我需要跟踪随时间不断变化的数据(例如传感器读数)吗?

时序

它们经过优化,可记录和查询按时间编制索引的数据点。

考虑因素

推荐的数据库类型

推理

我的数据是否具有严格的结构,例如银行记录或用户账号?

关系型 (SQL)

表和行可确保数据准确性,并强制执行记录之间的严格关系。

我是否需要存储格式经常变化的数据,例如用户日志或活动动态?

NoSQL

由于没有严格的架构,您可以存储结构不断演变或变化的数据。

我是否需要尽可能快地查找用户会话等简单数据?

键值对

通过将单个键直接映射到值,数据库避免了复杂的搜索。

我的数据是否类似于代码中的对象,例如具有不同特征的产品?

文档

以 JSON 等格式存储数据,可让您更轻松地在应用代码中直接处理数据。

我构建的 AI 应用是否需要搜索“含义”或相似性?

向量

这些模型经过优化,可根据数学相似度(而非确切关键字)存储和比较数据。

数据点之间的关系是否与数据本身同样重要?

图表

这些系统旨在快速遍历复杂的连接,例如社交网络或欺诈检测路径。

我需要跟踪随时间不断变化的数据(例如传感器读数)吗?

时序

它们经过优化,可记录和查询按时间编制索引的数据点。

确定哪种类型的数据库适合您的项目后,您还应考虑如何管理它。如果您需要快速扩缩,并且希望将时间花在编写功能上,而不是修复服务器错误上,那么托管式云服务通常是最佳选择。

您的数据库是否已为实施 AI 做好准备?

即使您的数据库能很好地支持当前的应用,AI 也会带来新的需求。在开始构建下一个 AI 功能之前,请先问自己以下问题,看看您当前的设置是否已为该任务做好了准备:

  • 我的数据库可以存储高维向量数据和常规数据吗?
  • 如果可以: 您可以使用现有数据库进行 AI 开发,从而保持架构的简单性
  • 如果否: 您可能需要向技术栈添加专门的向量数据库或插件
  • 我的数据库是否提供内置的相似性搜索功能?
  • 如果可以: 您的系统无需额外代码即可快速找到“有意义”的匹配项
  • 如果否:您应该构建或管理一个单独的“搜索层”,将数据转换为 AI 可以理解的内容
  • 我的数据库是否能够处理数据,而无需将数据移到其他地方?
  • 如果回答“是”:您可以节省数据传输费用,并缩短 AI 响应的延迟时间
  • 如果否: 您可能会面临性能瓶颈,因为您需要不断地将数据来回移动到外部 AI 模型
  • 我的数据库是否能在一个地方处理不同类型的数据(文本、图片、音频)?
  • 如果能:您可以使用统一的查询语言构建复杂的“多模态”AI 应用
  • If no: You may need to stitch together multiple databases, which makes your code harder to maintain
  • 当新数据到达时,我的数据库更新“知识”有多容易?
  • 如果可以: 您的 AI 功能可以随着数据的更新立即反映实时变化
  • 如果否: 在您手动触发耗时的重新编制索引之前,AI 回答可能过时或不准确
  • 我的数据库是否为 AI 查询提供了强大的安全性和访问权限控制?
  • 如果回答“是” :您可以安全地构建 AI 应用,仅向用户显示他们有权查看的信息
  • 如果否: 您可能会面临“数据泄露”的风险,即您的 AI 可能会意外地与错误的人分享受限信息