数据库是一种结构化系统,用于存储、管理和检索信息。
您可以将数据库想象成一个数字图书馆,图书管理员确切地知道每本书的每一页都藏在哪里。如果走进一间堆满数百万张散乱纸张的巨大房间,您永远也找不到所需的信息。您需要一个系统来整理这些文件,为它们添加清晰的标签,并帮助您在几秒钟内检索到它们。数据库就是为应用提供这种支持的。它就像任何数字系统的可靠记忆库,安全地存储着网站、企业和基本服务每天正常运行所依赖的信息。
大多数数据库都属于以下两个主要类别:
在自己的计算机或服务器上运行数据库时,您需要做很多工作。您需要处理备份、安装安全更新,并确保服务器不会耗尽内存。这称为“自行托管”。
托管式数据库服务可以帮您完成这些工作。您向云服务提供商付费,让其为您运行数据库。他们负责管理繁重的工作,例如设置基础设施、确保软件保持最新状态以及确保系统保持在线。这样,您就可以专注于编写应用代码,而无需担心服务器的内部运作。
Google 表格或 Excel 等电子表格非常适合人工扫描,但当数千人同时使用时,就会变得缓慢而混乱。数据库的构建方式各不相同。它们通过三个主要部分发挥作用:
选择合适的数据库取决于数据的形式。
类型 | 适用场景 | 主要特征: | 示例 |
关系型 (SQL) | 具有明确关系的结构化数据 | 使用表、行和列 | 用于账户余额的银行系统 |
非关系型 (NoSQL) | 灵活、快速或变化的数据 | 不使用表,以多种方式存储数据 | 大型 Web 应用的大数据分析 |
键值对 | 简单快速的查找 | 以键值对的形式存储数据,就像数字字典一样 | 存储用户会话信息以供登录使用 |
文档 | 存储复杂的嵌套数据 | 以文档(例如 JSON 文件)形式存储数据 | 管理电子商务中的产品目录 |
矢量 | AI 和机器学习 | 将信息存储为数学向量 | 根据过去的用户行为查找产品推荐 |
图表 | 数据与深层连接 | 侧重于各项内容之间的关系 | 社交媒体“好友的好友”功能 |
时序 | 随时间变化的数据 | 记录特定时间戳的信息 | 监控工厂中的温度传感器 |
类型
适用场景
主要特征:
示例
关系型 (SQL)
具有明确关系的结构化数据
使用表、行和列
用于账户余额的银行系统
非关系型 (NoSQL)
灵活、快速或变化的数据
不使用表,以多种方式存储数据
大型 Web 应用的大数据分析
键值对
简单快速的查找
以键值对的形式存储数据,就像数字字典一样
存储用户会话信息以供登录使用
文档
存储复杂的嵌套数据
以文档(例如 JSON 文件)形式存储数据
管理电子商务中的产品目录
矢量
AI 和机器学习
将信息存储为数学向量
根据过去的用户行为查找产品推荐
图表
数据与深层连接
侧重于各项内容之间的关系
社交媒体“好友的好友”功能
时序
随时间变化的数据
记录特定时间戳的信息
监控工厂中的温度传感器
关系型数据库通常也称为 SQL 数据库,以结构化表的形式表示数据。如果您需要确保银行事务完全成功或完全失败,则可能会决定使用关系型数据库,因为它严格遵循 ACID(原子性、一致性、隔离性、持久性)属性。
NoSQL 数据库具有灵活性。它们以文档、图表或键值对的形式存储数据。由于它们不需要严格的架构,因此通常适用于移动应用、社交媒体信息流或实时内容管理系统等快速发展的应用。
这是最简单的 NoSQL 数据库形式。它们将数据存储为与值配对的唯一键。由于它们速度快且简单,因此开发者可能会使用它们来缓存会话数据或存储用户偏好设置等。
这些就像字典一样。您有一个键(例如用户名)和一个值(个人资料数据)。它们非常快速,因为它们不必搜索复杂的表来查找您想要的内容。
文档数据库以灵活的格式(通常是 JSON)存储数据。当数据结构频繁变化时,它们会非常有用,例如在内容管理系统中,不同的博客文章可能具有不同的属性。
向量数据库以数学向量的形式存储信息,让计算机能够更好地理解数据的“含义”,而不仅仅是匹配确切的关键字。这项技术为现代生成式 AI 和搜索功能提供支持。
图数据库侧重于数据点之间的关系。它们不使用表,而是将数据存储为节点和边缘。以社交网络为例:“人”是节点,“关注”操作是边。如果您要构建一个依赖复杂连接的推荐引擎,图数据库可以帮助您比标准关系型数据库更快地查询这些链接。
时序数据库专门用于存储按时间编制索引的数据点。它们专为处理大量带时间戳的数据而构建,例如来自 IoT 设备的传感器读数、服务器日志或股市动态。这些数据库擅长“降采样”,即获取较旧的高频数据,并将其压缩为更广泛的摘要以节省空间。
您可以将数据库放在几个不同的位置:
本地:您在自己的办公室或数据中心,使用自己的物理硬件运行数据库。这样,您就可以完全掌控,但需要自行管理所有安全和维护工作。
混合云:这是本地和云的混合。您可以将敏感数据保留在本地以确保安全,同时将面向公众的应用数据存储在云端。
云:数据库位于云提供商的服务器上。这是最常见的选择,因为如果您的应用突然变得热门,您可以轻松扩容。云数据库可以提供以下几项优势:
在不同部署选项之间迁移时,例如从本地设置迁移到托管式云服务,或从混合环境迁移到完全云原生的解决方案,重点应放在基础架构变更上,而不仅仅是数据格式变更。请务必仔细规划数据库迁移,以确保数据完整性、最大限度地减少停机时间并管理连接变更。
过去,开发者通常会将标准应用数据和 AI 数据分别存储在不同的数据库中。这迫使开发者在数据库和单独的 AI 引擎之间来回移动大量数据,导致应用速度变慢,维护难度加大。如今,集成是主流趋势。我们希望数据库能够理解和处理数据,包括 AI 生成的信息。
从宏观层面来看,现代数据库正在通过添加以下核心 AI 功能变得“智能”:
通过使用支持这些工具的数据库,您可以在一次查询中搜索用户的姓名、历史记录和偏好设置,从而简化技术栈,并帮助您的应用提供更快、更智能的体验。
下面展示了如何在 Python 中执行混合搜索,将特定关键字和语义概念相结合:
在确定具体架构之前,请先问自己以下问题,以确定哪种数据库类型最适合您的项目需求。
考虑因素 | 推荐的数据库类型 | 推理 |
我的数据是否具有严格的结构,例如银行记录或用户账号? | 关系型 (SQL) | 表和行可确保数据准确性,并强制执行记录之间的严格关系。 |
我是否需要存储格式经常变化的数据,例如用户日志或活动动态? | NoSQL | 由于没有严格的架构,您可以存储结构不断演变或变化的数据。 |
我是否需要尽可能快地查找用户会话等简单数据? | 键值对 | 通过将单个键直接映射到值,数据库避免了复杂的搜索。 |
我的数据是否类似于代码中的对象,例如具有不同特征的产品? | 文档 | 以 JSON 等格式存储数据,可让您更轻松地在应用代码中直接处理数据。 |
我构建的 AI 应用是否需要搜索“含义”或相似性? | 向量 | 这些模型经过优化,可根据数学相似度(而非确切关键字)存储和比较数据。 |
数据点之间的关系是否与数据本身同样重要? | 图表 | 这些系统旨在快速遍历复杂的连接,例如社交网络或欺诈检测路径。 |
我需要跟踪随时间不断变化的数据(例如传感器读数)吗? | 时序 | 它们经过优化,可记录和查询按时间编制索引的数据点。 |
考虑因素
推荐的数据库类型
推理
我的数据是否具有严格的结构,例如银行记录或用户账号?
关系型 (SQL)
表和行可确保数据准确性,并强制执行记录之间的严格关系。
我是否需要存储格式经常变化的数据,例如用户日志或活动动态?
NoSQL
由于没有严格的架构,您可以存储结构不断演变或变化的数据。
我是否需要尽可能快地查找用户会话等简单数据?
键值对
通过将单个键直接映射到值,数据库避免了复杂的搜索。
我的数据是否类似于代码中的对象,例如具有不同特征的产品?
文档
以 JSON 等格式存储数据,可让您更轻松地在应用代码中直接处理数据。
我构建的 AI 应用是否需要搜索“含义”或相似性?
向量
这些模型经过优化,可根据数学相似度(而非确切关键字)存储和比较数据。
数据点之间的关系是否与数据本身同样重要?
图表
这些系统旨在快速遍历复杂的连接,例如社交网络或欺诈检测路径。
我需要跟踪随时间不断变化的数据(例如传感器读数)吗?
时序
它们经过优化,可记录和查询按时间编制索引的数据点。
即使您的数据库能很好地支持当前的应用,AI 也会带来新的需求。在开始构建下一个 AI 功能之前,请先问自己以下问题,看看您当前的设置是否已为该任务做好了准备: