## 视频
<video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video>
## 导读
充分利用数据通常意味着使用多个亚马逊云科技服务,例如用于全文、地理空间或向量搜索的 [Amazon OpenSearch Service](https://aws.amazon.com/cn/opensearch-service/?trk=cndc-detail)。[Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail) 提供了多种不同的集成方式,包括导出功能和 DynamoDB Streams。在本讲座中,我们将探索不同的架构模式和示例实现,包括端到端向量搜索示例,以了解从 DynamoDB 集成时的最佳实践。
## 演讲精华
<font color = "grey">以下是小编为您整理的本次演讲的精华,共1600字,阅读时间大约是8分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font>
高级集成模式:[Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail)"视频展示了亚马逊云科技的解决方案架构师Jon Handler和Jason Hunter宣布了一种强大的新集成,将DynamoDB和OpenSearch服务结合在一起。在整个亚马逊云科技生涯中,Jon有超过15年的经验,其中13年时间专注于搜索技术。而Jason则专注于研究DynamoDB,时间长达13年。
在他们的演讲中,Jason强调了DynamoDB作为一种完全管理的NoSQL数据库所具备的能力,能够提供低于10毫秒的延迟和保证的任何规模的吞吐量。起初,DynamoDB是为了支持亚马逊的购物车而创建的,因此它被设计成提供高可用性和弹性缩放以满足最苛刻的工作负载。
自从早期支持亚马逊的核心零售业务以来,DynamoDB在过去十年里已经得到了极大的扩展。如今,它拥有超过100万客户,包括从初创公司到大型企业,如Capital One、Lyft和Redfin等。用户可以根据需要创建表格,以及所需数量的项和吞吐量,DynamoDB将无限制地扩展,而性能不会下降。这种弹性使得应用程序可以在没有容量规划或停机的情况下呈指数级增长。
DynamoDB还通过继承自亚马逊自己的严格标准来提供企业级弹性和安全性。例如,使用AES-256进行静态加密和网络上的TLS加密。对于灾难恢复,可以回滚到长达35天的表删除以从意外写入或删除中恢复。DynamoDB还跨3个不同的数据中心复制数据在亚马逊云科技的一个区域,以实现高可用性。
此外,该服务还通过删除保护和自动按需备份进一步保护数据。删除保护通过要求额外步骤以防止意外的表删除,而按需备份可以通过单击一下运行完整备份。这些功能共同为任务关键应用程序提供了强大的数据安全和弹性。
亚马逊云科技(Amazon Web Services)的DynamoDB与各种服务无缝集成,用于监控、分析、[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)计算和数据湖。其中一个集成是到S3的增量备份,这一功能已于2022年推出。在此之前,DynamoDB只能将整个表导出到S3,但现在用户可以安排增量导出,频率高达每15分钟一次,以捕捉正在进行的更改。这为分析和数据仓库使用场景实现了接近实时的数据复制。
尽管已经有一系列的集成,但一个明显的缺失是与搜索服务的集成。正如Jon所详细描述的那样,搜索引擎和数据库一直以来都是相互补充的,搜索提供针对数据库结构化记录的低延迟文本查询。这种共生关系使得能够以数据库单独无法实现的方式丰富地探索和分析数据库的内容。
因此,DynamoDB与OpenSearch Service的新集成成为了可能。这个集成实时自动将数据从DynamoDB传输到OpenSearch,使OpenSearch的强大搜索和分析功能能够解锁来自DynamoDB表的内幕。而且它不需要开发人员编写和维护复杂的复制代码。
为了展示这个集成,Jason和Jon使用了来自Amazon.com的关于产品的客户问题的17GB样本数据集。这些来自实际生产环境的数据提供了一个展示集成功能的健壮示例。
数据模型包含一个产品ID,表示亚马逊目录中的每个产品。每个产品都有一组相关的客户问题及其答案,每个问题和答案都有元数据,如文本、日期和模拟的用户数据,包括年龄、位置和性别。
在DynamoDB中,Jason解释了如何将这种关系数据以优化快速查找的NoSQL格式建模。产品ID属性将成为分区键,允许快速查询每个产品的一组问题和答案。问题将在产品下分组为排序键,每个答案将依次嵌套在其对应问题的ID下。
这种非规范化的结构完美地适应了DynamoDB的访问模式。然而,产品管理团队需要在问题和答案上进行文本搜索,并分析问题和答案数量随时间的变化趋势。尽管OpenSearch可以提供这些功能,但在没有新集成的情况下,将其与DynamoDB结合是非常具有挑战性的。
过去,开发者必须将DynamoDB数据导出为JSON或Ion文件,然后将数据导入到OpenSearch中,并编写Lambda函数以实时复制数据。这需要大量编码和维护,以确保数据的同步。任何形式的扩展都必须进行手动处理。
新的集成通过自动从DynamoDB导出数据并将其更改实时传输到OpenSearch,从而消除了这些困扰。在内部,它使用OpenSearch摄入和开源Data Prepper库来处理复制和转换。
在使用DynamoDB流和时间点恢复功能之后,用户只需通过YAML文件对集成进行配置。这指定了作为源的DynamoDB表、用于导出的S3存储桶、IAM权限以及目标OpenSearch域。OpenSearch摄入处理其余部分以管理数据管道。
该集成带来了几个好处。首先,它是完全[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)的,这意味着不需要配置或管理服务器。根据可配置的最小和最大摄入工作器的数量(最多可以并行化至96倍),管道将无缝地根据负载自动扩展,从而确保最佳的性能。其次,开源Data Prepper库允许在DynamoDB和OpenSearch之间完全控制数据转换。例如,用户可以重新命名字段,在OpenSearch中基于DynamoDB数据创建新的计算字段,将不同的项目类型路由到单独的索引等。第三,管道在故障时具有弹性,如通过死信队列等功能捕获未能摄入的文档。总之,该集成提供了一个强大、可扩展且可自定义的数据复制解决方案,而无需复杂的编码。
随着数据从DynamoDB流入OpenSearch,Jon深入研究OpenSearch如何从结构化数据中获得分析和见解。他指出,除了为像DynamoDB这样的数据库提供快速文本搜索和分析的核心优势外,OpenSearch还有两个额外的好处。
在文本搜索领域,OpenSearch将数据索引至分布式节点上的碎片,以便实现快速的查询。OpenSearch的核心倒排索引将术语关联至包含这些术语的文档,从而在搜索过程中实现高效的查找。高级分析将文本片段分解成独立的术语,自动处理34种不同语言的词干提取和规则,使得能够根据少数搜索术语匹配完整的文档。
接下来,复杂的排序系统将基于相关性和可选的提升规则对搜索结果进行评估。专用的查询为开发人员提供对文本匹配、过滤器、地理搜索边界框和多边形的精确控制。OpenSearch甚至可以从数字聚合中提取趋势和顶级贡献者等洞察。
这些功能共同构成了超越DynamoDB所提供的能力强大的文本搜索和分析。开发者可以搜索问题和答案中的关键词,优先显示相关结果,分析问题量的趋势,识别顶级回答者,等等。所有这些分析能力都通过简单的REST API查询实现。
为了展示,Jon在OpenSearch Dashboards中进行了示例搜索。其中一个查询在多个字段上执行文本搜索,并增强重要字段(如产品名称)的匹配。另一个查询按18-24岁的年龄范围筛选问题,并在描述中匹配一个术语。
演讲者还强调了高级功能,如范围内的地理查询、用于分析的聚合以及使用BERT等向量相似性模型的语义搜索。
在从技术深度潜水过渡到部署最佳实践的过程中,Jon分享了从宝贵经验中提炼出的建议。首先且最重要的是,他建议在提前创建OpenSearch索引和定义文档映射,而不是让OpenSearch推断模式。在索引化之后,如果没有重新索引所有数据,则无法更改映射。因此,早期投资于正确的映射可以避免后来的麻烦。
准备就绪后进行索引设置后,在规模化摄入生产数据之前,通过OpenSearch Dashboards验证端到端流程。使用OpenSearch Dashboards检查索引的文档并运行测试搜索。在切换之前解决任何映射问题。
为了实现顺畅的操作,需要在OpenSearch上启用CloudWatch监控,使用死信队列捕获失败的数据文档,并考虑对S3进行辅助同步以进行调试。在更新管道时,应先将其停止,以便DynamoDB在更改后进行重新导出完整数据集。这样可为验证提供一个干净的白板。
关于OpenSearch域大小的建议,可以从源数据大小出发,乘以副本的1.1倍膨胀因子和开销的1.15倍膨胀因子来计算所需的存储空间。这个存储总量有助于确定所需的实例类型和大小。
接下来,根据分片数量和每个分片的目标利用率估算CPU需求。更多的分片需要更多的CPU来分散负载,但要留出足够的空间以避免资源耗尽。目标是为每个分片预留约2/3的CPU利用率作为指导原则。
在摄入方面,工作者会根据负载自动扩展到最多96倍。然而,用户可以限制最小和最大工作者以控制成本。通常来说,目标是每个摄入工作者大约需要5000个DynamoDB写入容量单位作为经验法则。但由于许多变量影响摄入吞吐量,故需要进行测试以获得精确的规模调整。
总的来说,演讲者总结道,DynamoDB和OpenSearch是完美的互补服务。DynamoDB提供快速的结构化存储和大规模查询,而OpenSearch则在DynamoDB的原始数据上实现了丰富的文本搜索、分析和洞察。两者共同构成了一个完整的大数据解决方案,而新的集成使得连接它们变得无缝。
借助这一强大的DynamoDB-OpenSearch集成,开发者可以充分利用这两项亚马逊云科技托管服务的长处来构建功能丰富的应用程序。通过自动化后台的复杂机制,该集成让建设者可以专注于提供用户价值,而非处理复制逻辑。这种简单性和灵活性为DynamoDB数据的下一代分析敞开了大门,同时尽享亚马逊云科技的可扩展性和弹性。
**下面是一些演讲现场的精彩瞬间:**
DynamoDB,无论规模大小,都能提供低延迟、企业级持久性和[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)功能,使得客户能够专注于他们的应用程序,而无需担忧底层基础设施。
![](https://d1trpeugzwbig5.cloudfront.net/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB/images/rebranded/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB_0.png)
业界领袖强调了OpenSearch和DynamoDB之间的互补性——OpenSearch提供排序搜索相关性,而DynamoDB则实现低延迟数据持久存储。
![](https://d1trpeugzwbig5.cloudfront.net/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB/images/rebranded/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB_1.png)
领导层阐述了亚马逊OpenSearch服务的架构及其如何与亚马逊云科技的其他服务(如DynamoDB)集成的细节。
![](https://d1trpeugzwbig5.cloudfront.net/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB/images/rebranded/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB_2.png)
领导层强调了OpenSearch如何在全球15个地区提供可扩展性和高可用性。
![](https://d1trpeugzwbig5.cloudfront.net/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB/images/rebranded/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB_3.png)
一种常见做法是将每个DynamoDB项目映射到具有文档类型字段的单个OpenSearch索引,从而在排序键之间实现过滤功能。
![](https://d1trpeugzwbig5.cloudfront.net/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB/images/rebranded/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB_4.png)
领导层强调了OpenSearch所具备的先进全球搜索能力。
![](https://d1trpeugzwbig5.cloudfront.net/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB/images/rebranded/DAT339-Advanced_integration_patterns_with_Amazon_DynamoDB_5.png)
## 总结
亚马逊云科技近期推出了一项创新集成,实现了[Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail)与Amazon OpenSearch服务之间的无缝数据复制。在2022年re:Invent上,亚马逊云科技的Jason Hunter和John Handler详细介绍了这一新功能。
该演讲从对DynamoDB及其优点的概述开始,包括其高可扩展性、低延迟和[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)特性。OpenSearch则被视为一个互补的搜索和分析引擎,能够通过全文搜索、排序、范围和地理空间查询等功能丰富DynamoDB的数据。
接着,演讲者通过一个包含产品问答数据示例模式的案例,探讨了如何优化查询性能以构建此类应用。他们强调了在OpenSearch中需要对数据进行适当的异常处理,例如将纬度和经度合并为一个位置字段。演讲还深入探讨了OpenSearch的关键概念,如文档、映射和索引。
随后,演讲者展示了各种搜索场景,如文本搜索、过滤和聚合等。涵盖的使用案例包括分析具有可视化的流数据以及利用神经搜索进行语义匹配。他们还强调了最佳实践,如在将数据发送到OpenSearch中进行索引之前先进行预定义映射。
最后,演讲以关于新集成的架构细节作为结尾。该集成利用OpenSearch的输入和数据预处理功能,自动处理导出、变化数据捕获、转换和索引,从而简化了集成并减少了开发人员的重复工作。同时提供了关于管道配置、监控和规模调整的指导。
总之,这次演讲全面展示了如何将DynamoDB和OpenSearch结合在一起使用新的无缝复制功能。它强调了这两个服务的优势以及它们如何协同工作以支持更丰富应用程序的开发。
## 演讲原文
## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
[2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站")
[点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯!
[点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯!
## 即刻注册亚马逊云科技账户,开启云端之旅!
[【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“")
[【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")