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