在 Cloudflare 选择适合您用例的数据或存储产品
https://developers.cloudflare.com/workers/platform/storage-options/
选择数据或存储产品
Cloudflare Workers 支持一系列存储和数据库选项,用于在不同的用例中持久化不同类型的数据,从键值存储(如 Workers KV)到 SQL 数据库(如 D1)。本指南介绍了适用于每个存储选项的用例,以及它们的性能和一致性属性。
可用的存储和持久性产品包括:
- Workers KV 用于键值存储。
- R2 用于对象存储,包括需要 S3 兼容存储的用例。
- Durable Objects 用于事务性的、全局协调的存储。
- D1 作为关系型、基于 SQL 的数据库。
- Queues 用于作业排队、批处理和服务间(Worker 到 Worker)通信。
- Hyperdrive 用于连接到现有的托管和本地数据库并加速访问。
- Analytics Engine 用于大规模存储和查询(使用 SQL)时序数据和产品指标。
- Vectorize 用于矢量搜索和存储来自 Workers AI 的 embeddings。
随着应用的增长、扩展或需求的变化,基于 Workers 平台构建的应用程序可以组合使用一个或多个存储组件。
选择存储产品
性能和一致性
以下表格突出了 Cloudflare Workers 可用的主要存储选项的性能和一致性特征:
Workers KV
Workers KV 是一个最终一致的键值数据存储,它缓存在 Cloudflare 全球网络上。
它非常适合需要以下条件的项目:
- 高容量的读取和/或重复读取相同的键。
- 每个对象的生存时间 (TTL)。
- 分布式配置。
开始使用 KV:
- 阅读 KV 的工作原理。
- 创建一个 KV 命名空间。
- 查看 KV 运行时 API。
- 了解 KV 限制。
R2
R2 是 S3 兼容的 blob 存储,允许开发人员存储大量非结构化数据,而不会产生与典型云存储服务相关的出口费用。
它非常适合需要以下条件的项目:
- 用于不经常访问的文件的存储。
- 大型对象存储(例如,每个对象 GB 或更多)。
- 每个对象的强一致性。
- 网站的资产存储(参考缓存指南)
开始使用 R2:
- 阅读入门指南。
- 了解 R2 限制。
- 查看 R2 Workers API。
Durable Objects
Durable Objects 通过全局唯一性和事务性存储 API 为 Workers 平台提供低延迟协调和一致存储。
全局唯一性保证在全球范围内,具有给定 ID 的 Durable Object 类将只有一个实例在运行。对 Durable Object ID 的请求由 Workers 运行时路由到拥有该 Durable Object 的 Cloudflare 数据中心。
事务性存储 API 为 Durable Object 提供强一致的键值存储。每个对象只能读取和修改与该对象关联的键。Durable Object 的执行是单线程的,但多个请求事件仍然可能按照它们到达对象的顺序进行无序处理。
它非常适合需要以下条件的项目:
- 实时协作(如聊天应用程序或游戏服务器)。
- 一致的存储。
- 数据本地化。
开始使用 Durable Objects:
- 阅读介绍性博客文章。
- 查看 Durable Objects 文档。
- 开始使用 Durable Objects。
- 了解 Durable Objects 限制。
D1
D1 是 Cloudflare 的原生无服务器数据库。使用 D1,您可以通过导入数据或在 Worker 内定义表和编写查询或通过 API 来创建数据库。
D1 非常适合:
- 用于用户数据、帐户数据和其他结构化数据集的持久关系存储。
- 需要即席查询数据(使用 SQL)的用例。
- 读写比例较高的工作负载(大多数网络应用程序)。
开始使用 D1:
- 阅读文档
- 按照入门指南设置您的第一个 D1 数据库。
- 查看 D1 客户端 API。
Queues
Cloudflare Queues 允许开发人员发送和接收具有保证传递的消息。它与 Cloudflare Workers 集成,提供至少一次的传递、消息批处理,并且不对出口带宽收费。
Queues 非常适合:
- 将工作从请求中卸载以便稍后调度。
- 从 Worker 发送数据到 Worker(服务间通信)。
- 在写入上游系统(包括第三方 API 或 Cloudflare R2)之前缓冲或批处理数据。
开始使用 Queues:
- 设置您的第一个队列。
- 了解有关 Queues 如何工作的更多信息。
Hyperdrive
Hyperdrive 是一项服务,可以加速您对现有数据库的查询,使您能够更快地从全球任何地方访问数据,而无需考虑用户的位置。
Hyperdrive 允许您:
- 从 Workers 连接到现有数据库,而无需连接开销。
- 在 Cloudflare 的全球网络上缓存频繁查询,以减少高流量内容的响应时间。
- 使用连接池减少源数据库的负载。
开始使用 Hyperdrive:
- 将 Hyperdrive 连接到您现有的数据库。
- 了解有关 Hyperdrive 如何加速数据库查询的更多信息。
Analytics Engine
Analytics Engine 是 Cloudflare 的时间序列和指标数据库,允许您使用内置 API 从 Workers 编写无限基数分析,并直接使用 SQL 查询该数据。
Analytics Engine 允许您:
- 向您自己的客户公开自定义分析
- 构建基于使用量的计费系统
- 了解服务在每个客户或每个用户的健康状况
- 向频繁调用的代码路径添加检测,而不会影响性能或使用事件淹没外部分析系统
Cloudflare 在内部使用 Analytics Engine 来大规模存储和生成 D1 和 R2 等产品的每个产品指标。
开始使用 Analytics Engine:
- 了解如何开始使用 Analytics Engine
- 查看将时间序列数据写入 Analytics Engine 的示例
- 了解用于从 Analytics Engine 数据集读取数据的 SQL API
Vectorize
Vectorize 是一个全球分布式向量数据库,使您能够使用 Cloudflare Workers 和 Workers AI 构建全栈、AI 驱动的应用程序。
Vectorize 允许您:
- 存储来自任何向量嵌入模型(自带嵌入)的嵌入,用于语义搜索和分类任务。
- 通过使用向量搜索作为检索增强生成(RAG)工作流的一部分,为大型语言模型(LLM)查询添加上下文。
- 过滤向量元数据以减少搜索空间并返回更相关的结果。
开始使用 Vectorize:
- 创建您的第一个向量数据库。
- 结合 Workers AI 和 Vectorize 生成、存储和查询文本嵌入。
- 了解有关向量数据库如何工作的更多信息。