发布于: May 19, 2021

云数据库有哪些?下面,我们通过一个案例来介绍这些面向不同场景的数据库:我们在下图展示了一个在线书店的演示应用,它包括了一些最基本的功能,比如产品目录、产品搜索、畅销书列表和社交推荐。

图1:Amazon Web Services Bookstore 演示应用程序的屏幕截图

当用户访问我们这个在线书店的首页时,通常用户会希望看到在售的书本列表,书本的一些基本描述、评分、价格等信息。从技术上讲,我们通过产品 ID 的键值便可以检索到这些属性。Amazon DynamoDB 就非常适合作为书本目录的数据库系统,因为 DynamoDB 可以为任何规模的键值查找提供快速,可预测的性能。借助 DynamoDB,即使未来这个网站拓展了产品的种类,产品目录可以从几百种书本扩展到数十亿种产品,也无需重新架构或更改数据库。

第二个用例是产品目录的畅销书清单,我们通常都会通过畅销书清单来更方便的选择我们需要的图书。一个理想的数据库可使书店维护排行榜的同时不需要在每次用户刷新网页时都对所有购买数据进行长时间且成本昂贵的汇总查询。 Amazon ElastiCache for Redis 准确地解决了这个需求,包括内置的且存放在内存中的数据结构(例如排序集),这些数据集使书店可以快速有效地创建畅销书清单。为了使其运行,书店可以使用命令表中的 DynamoDB Streams 在每次有用户购买商品时更新 ElastiCache 中的最新状态。有了最畅销书清单,书店也可以在其网站首页上显示其中的一部分。另外,由于数据是内存中的数据,并且可以通过内置的排序集获得,因此书店将在最畅销书清单上遇到微秒级的读取延迟。

第三个用例是提供社交建议,以帮助书店的客户找到更适合特定情境的内容。我们往往喜欢从朋友的推荐书籍中快速找到自己感兴趣的读物。由于社交推荐位于书店的主页和网站上的其他页面上,因此推荐必须够快速。根据这些要求,专门构建的图形数据库(例如 Amazon Neptune)很自然地可以导航数据中的链接,从而实现基于社交关系和相关购买活动的建议。 Neptune 提供了快速构建和执行查询来遍历图形关系所需的必要功能和性能,并且它将随着网站(和应用程序)的增长而扩展,而不会影响性能。

为了获取和更新这些信息,Web店面进行了一系列不同的 API 调用。这里是利用 Amazon API Gateway 和 Amazon Web Services Lambda 的后端应用程序的视图:

图2:Amazon Web Services Bookstore 演示应用程序的架构图

对于此书店应用程序,我们评估了该应用程序的主要用例,并为每个用例选择了最佳数据库。专门构建的数据库使您可以创建一个高性能、可扩展的基础结构来为应用程序提供动力,并通过选择合适的组件来解决每个用例。通过这种方法,您可以使用自己的资源构建类似的体系结构。

为了便于读者的学习,我们创建了一个 Amazon Web Services CloudFormation 模板,在短短几分钟内可自动创建端到端的完整书店演示应用程序的堆栈。同时,我们在 GitHub 上提供了所有源代码,图像和示例数据,以供您部署,探索,修改和扩展。

图3:GitHub 上的 Amazon Web Services Bookstore Demo App 存储库

Amazon Web Services Bookstore 演示应用程序是一个有效的应用程序。您可以将应用程序用作沙箱或学习工具来探索类似的架构该如何相适应,也可以将其用作构建自己的应用程序的起始模板。演示应用程序只是作为如何使用专用数据库来构建可扩展的高性能全栈应用程序(例如 Web 店面)的一个示例。你也可以以此为基础,扩展这个应用,比如采用关系数据库(如 Amazon RDS)处理一些扩展的场景,比如支付和交易环节。

总结

在本文中,我们探讨了 Amazon Web Services 所构建的多种不同类型的数据库服务和相应的用户案例和应用场景,帮助我们了解如何针对不同的需求场景,在 Amazon Web Services 云上选择一款适合自己需求的数据库服务

相关文章