gpt4 book ai didi

amazon-web-services - 用于 Lambda 无服务器架构的 AWS DynamoDB 与 RDS

转载 作者:行者123 更新时间:2023-12-01 16:11:01 25 4
gpt4 key购买 nike

我是一个团队的一员,目前正在为政府办公室和公众之间的通信服务开发概念验证架构/应用程序(目前缩小到卫生部门)。客户特别要求通过 AWS 服务采用主要无服务器的方法,我需要有关如何设置此架构的建议,即 Lambda 到数据库的关系。

粗略地说,该架构将使用 API Gateway 来处理请求,这些请求将调用不同的 Lambda,作为访问数据库的微服务。

下图描述了一个快速关系模式。基本上,患者输入他的病情描述,构成病例的基础。该案例由一名或多名记录与该案例相关的笔记的护士在一次或多次 session 期间处理。 DB Schema (not enough reputation)

根据我的研究,我收集到,在 RDS 的情况下,安全性之间存在权衡(将 Lambdas 保留在包含 RDS 实例的公共(public) VPC 之外,上述安全最佳实践,公共(public)部门的禁忌) 和性能(将 Lambda 放在带有 RDS 实例的私有(private) VPC 中,并且由于 ENI 的配置而导致大量的冷启动时间)。但是,可以通过使用 CloudWatch 对冷启动时间进行 ping 操作来取消冷启动时间,这可能是最佳的,也可能不是最佳的。

在 DynamoDB 的情况下,我个人非常缺乏经验(比 MySQL 更多)并且不确定数据是否适用于 NoSQL 模型。如果是这样,DynamoDB 似乎是更好的方法。不过,据我了解,NoSQL 对涉及 JOIN 等的复杂查询的支持较少,这可能会消除它作为一种选择。

感觉好像 SQL/RDS 在数据/关系方面更合适,但如果找到合适的数据模型,DynamoDB 给 Lambda/AWS 服务带来的问题更少。所以我的问题是,是否最好选择私有(private) RDS 实例并尝试通过预热最关键的 Lambda 来消除冷启动,或者是否有一个 NoSQL 模型不会对复杂查询造成头痛等事物?我是否遗漏了任何可能影响规模的关键方面?

最佳答案

让我们首先澄清您的一些相当严重的误解:

From my research, I've gathered that in the case of RDS, there is a trade-off between security (keeping the Lambdas outside of a public RDS instance, foregoing security best-practices, a no-no for public sector) and performance (putting the Lambda in a private RDS instance, and incurring heavy cold-start times). The cold-start times can however be negated by pinging them with CloudWatch, which may or may not be optimal


  • RDS 是一个数据库服务器。您不会在其内部或外部运行任何东西。
  • 您可能正在考虑 VPC 或虚拟私有(private)云。这是一个隔离网络,您可以在其中运行 RDS 实例和 Lambda。
  • 在 VPC 内部或外部运行对冷启动时间没有影响。当 AWS 必须启动一个新容器来运行您的 Lambda 时,您需要支付冷启动费用。这可能是因为它最近没有运行,或者因为它需要扩展以满足并发请求。实际的冷启动时间将取决于您的语言:例如,Java 比 Python 慢得多,因为它需要在执行任何操作之前启动 JVM 并加载类。

  • 现在你的实际问题

    Basically, a Patient inputs a description of his Condition which forms the basis for a Case. That Case is handled during one or many Sessions by one or many Nurses that take Notes related to the Case.



    这可以在 NoSQL 数据库中实现,例如 DynamoDB。如果没有更多信息,我可能会将 Session 作为基础文档,使用案例 ID 作为分区键,使用 session ID 作为排序键。如果您不了解这些术语的含义,以及如何基于该键构建文档,那么您可能不应该使用 DynamoDB。

    不使用 DynamoDB 的更大原因与访问模式有关。你会想要找到由给定护士工作的所有病例吗?或与特定患者有关?这些类型的查询是关系数据库的设计目的。

    the case of DynamoDB, I am personally very inexperienced (more so than in MySQL)



    您的团队中是否有人熟悉 NoSQL 数据库?如果没有,那么我认为您应该坚持使用 MySQL。在学习如何使用 Lambda 时,您将面临足够多的挑战。

    关于amazon-web-services - 用于 Lambda 无服务器架构的 AWS DynamoDB 与 RDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54716263/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com