跳至主要内容

Amazon DynamoDB

Amazon DynamoDB 常见问题

什么是 DynamoDB?

全部打开

    DynamoDB 是一种快速灵活的非关系数据库服务,适用于任何规模。通过使用 DynamoDB,客户能将操作和扩缩分布式数据库的管理负担转移给亚马逊云科技,这样他们就不必担心硬件预置、设置和配置、吞吐量容量规划、复制、软件修补或集群扩缩等问题。

    DynamoDB 消除了扩展数据库的主要障碍之一:管理数据库软件和预置运行它所需的硬件。您在几分钟内就可部署完非关系型数据库。DynamoDB 会自动扩展吞吐量以满足工作负载需求,并随着表大小的增长对数据进行分区和重新分区。此外,DynamoDB 还可以在亚马逊云科技中国区域的三个设施之间同步复制数据,从而为您提供高可用性和数据持久性。

    从 DynamoDB 读取数据时,用户可以指定他们希望读取是最终一致性读取还是强一致性读取:

    • 最终一致性读取(默认值)– 选择最终一致性可最大限度地提高读取吞吐量。但是,最终一致性读取可能无法反映最近完成的写入操作的结果。所有数据复制通常在一秒钟内就能达到一致性。在短时间后重复读取应返回更新的数据。

    • 强一致性读取 — 除了最终一致性读取外,如果您的应用程序或应用程序的某个元素需要强一致性读取,DynamoDB 能让您灵活决定是否请求强一致性读取。强一致性读取返回的结果将反映在读取之前收到成功响应的所有写入操作。

    • ACID 事务 — DynamoDB 事务为开发人员在单个亚马逊云科技账户和区域内的一个或多个表中提供原子性、一致性、隔离性和持久性(ACID)。对于需要以协调性方式插入、删除或更新多个项目(作为单个逻辑业务操作的一部分)的应用程序,在构建该类应用程序时,您可以利用该事务。

开始使用

全部打开

    DynamoDB 通过使用用户定义的主键来支持 GET/PUT 操作。主键是表中项目的唯一必需属性。您可以在创建表时指定主键,它将唯一地标识每个项目。DynamoDB 提供灵活的查询,您还可以使用全局二级索引和本地二级索引查询非主键属性。

    主键可以是单属性分区键,也可以是复合分区排序键。例如,单属性分区键可以是 UserID。通过这样的单属性分区键,您将能快速读取和写入与给定用户 ID 关联的项目的数据。

    DynamoDB 将复合分区-排序键作为分区键元素和排序键元素进行索引。此多部分键将维护第一个元素值和第二个元素值之间的层次结构。例如,复合分区排序键可以是 UserID(分区)和时间戳(排序)的组合。如果保持分区键元素不变,则可以在排序键元素中进行搜索以检索项目。例如,通过这样的搜索,您将能使用 查询 API 在一定时间戳范围内检索单个 UserID 的所有项目。

    是。DynamoDB 是一项通过 API 访问的完全托管式云服务。在任何操作系统(例如 Linux、Windows、iOS、Android、Solaris、AIX 和 HP-UX)上运行的应用程序都可以使用 DynamoDB。我们建议使用亚马逊云科技软件开发工具包开始使用 DynamoDB。

规划

全部打开

    每个 DynamoDB 表都预置了与之关联的读取吞吐量和写入吞吐量。如果您超出了亚马逊云科技中国(宁夏)区域免费套餐的范围,则将按小时向您收取该吞吐量的费用。请注意,无论您是否向表发送请求,都需要按小时支付吞吐量费用。如果您想更改表的预置吞吐容量,可以使用亚马逊云科技管理控制台、更新表 API 进行自动扩缩。此外,DynamoDB 还将收取数据存储费用以及标准互联网数据传输费用。

    要了解有关 DynamoDB 定价的更多信息,请参阅 DynamoDB 定价页面。

    每个 DynamoDB 表的最大吞吐量实际上是无限的。有关现有限制的信息,请参阅 DynamoDB 中的限制。

    对于弹性扩缩和手动预置吞吐量,您可以请求的最小预置吞吐量为 1 个写入容量单位和 1 个读取容量单位。此类预置属于亚马逊云科技中国(宁夏)区域免费套餐范围,该套餐包含 25 个写入容量单位和 25 个读取容量单位。亚马逊云科技中国(宁夏)区域免费套餐的适用条件是按账户级别区分,而不是表级别。换言之,如果您将所有表的预置容量相加,并且总容量不超过 25 个写入容量单位和 25 个读取容量单位,则您的预置容量将属于亚马逊云科技中国(宁夏)区域免费套餐范围内。

工作原理

全部打开

向量搜索

全部打开

    DynamoDB 中的向量搜索引入了新的索引,您可以在存储向量嵌入的属性上创建该索引。该索引基于针对效率和横向可扩展性优化的专有近似最近邻(ANN)算法。它支持三种距离指标,包括欧几里得、余弦和点积以及内联过滤。存储在 DynamoDB 中的向量嵌入最多支持 4096 个维度。您可使用自选的模型(例如 Amazon Bedrock Titan Text Embeddings、Cohere Embed 或 OpenAI 文本嵌入模型)生成向量嵌入,然后通过标准的 PutItem 调用将它们作为浮点数列表存储在表中。DynamoDB 中的向量搜索适用于 DynamoDB 全局表(多区域最终一致性和多区域强一致性)和 DynamoDB 流。要了解更多信息,请访问 DynamoDB 的向量搜索文档。

    如果您需要在无需管理基础设施的无服务器数据库中进行任何规模的个位数毫秒向量搜索,请选择 DynamoDB 向量搜索。通过使用 DynamoDB 的原生向量搜索,您还可以避免添加单独的向量数据库,也不需要数据管道将运营数据同步到该向量数据库。

    首先,您可以使用自己选择的模型,例如 Amazon Bedrock Titan 文本嵌入、Titan 多模态嵌入、Cohere Embed、OpenAI 的文本嵌入模型或自定义模型,对数据进行“向量化”或生成向量嵌入。您可以对 DynamoDB 中已经存在的数据进行向量化,也可以自带向量嵌入。您可以使用现有的 DynamoDB 数据类型(例如数字(浮点数)数组)将这些向量嵌入作为属性存储在 DynamoDB 中。只需在 Amazon Web Services 管理控制台上点击几下,或者使用 Amazon SDK、Amazon CLI 或 Amazon CloudFormation,您就可以为带有向量嵌入的属性创建一个新的向量索引,并可以选择指定要筛选的属性,这样您就可以缩小搜索空间,加快查询速度。创建索引后,您可以使用搜索 API 对索引进行相似度搜索,实现大规模下性能稳定可靠。要执行搜索,可以使用与向量化数据相同的模型对搜索词进行向量化。然后,使用向量化搜索词和筛选条件(如果适用)查询向量索引。

    您可以使用现有数据类型在 DynamoDB 中存储向量嵌入。例如,您可以将向量存储为浮点数组。

    DynamoDB 向量搜索支持三种距离函数,包括欧氏距离、余弦距离和点积。它们会量化两个向量在给定空间中的距离。欧几里得用于测量点之间的直线距离,在需要关注数值大小时非常有用(例如,根据购买次数对项目进行聚类)。余弦用于测量向量之间的夹角,当方向比大小更重要时会使用它(例如,将一条推文与同一主题的文档进行比较)。点积结合了方向性和大小,当两者都重要时(例如,在推荐系统中考虑兴趣匹配和频率),它非常有用。选择合适的距离函数取决于您的数据、嵌入模型和应用场景。通常,为使准确性最佳,您必须选择与训练您的嵌入模型时所用函数相匹配的距离函数。

    可以。您可以使用 DynamoDB 扫描操作对表格执行 ENN 搜索。精确最近邻(ENN)搜索通过寻找查询向量的精确匹配来优先考虑准确性,而非速度。您可以反复进行分页扫描,以获得与您的搜索查询完全匹配的结果。

    支持最多 4096 个维度的向量。仅按需表支持向量索引。搜索最多支持前 100 个 k 结果。您可以为每个表最多创建五个向量索引。您可以联系 Amazon Web Services 支持,请求增加五个向量索引的服务配额。有关更多详细信息,请参阅我们的文档。

    如何提高准确性或搜索查询召回率?

    如果自索引创建以来您的数据已发生变化,您可以创建新的索引以提高搜索查询的召回率。创建新索引可能会优化您的查询模式的索引结构,并提供更好的搜索查询召回率。您可以将应用程序从旧索引切换到使用新索引。新索引将采用不同的 ARN。查询向量索引的应用程序从旧索引切换后,您可以选择删除旧索引。

general

Amazon EC2 助您轻松部署云上应用

新用户可免费试用 12 个月,每月最高享 750 小时免费实例使用时间,支持网站、开发环境、微服务和测试等场景,并可随需求灵活扩展

Missing alt text value