Pap*_*its 5 amazon-web-services amazon-rds amazon-dynamodb aws-lambda serverless
我所在的团队目前正在为政府办公室和公众(目前范围缩小到卫生部门)之间的通信服务开发概念验证架构/应用程序。客户特别要求通过 AWS 服务采用主要无服务器的方法,我需要有关如何设置此架构(即 Lambda 与数据库关系)的建议。
粗略地说,该架构将利用 API Gateway 来处理请求,这将调用不同的 Lambda 作为微服务来访问数据库。
下图描述了快速关系架构。基本上,患者输入对其病情的描述,这构成了案例的基础。该病例由一名或多位护士在一次或多次会议期间处理,并记录与该病例相关的笔记。DB Schema(声誉不够)
根据我的研究,我发现就 RDS 而言,需要在安全性之间进行权衡(将 Lambda 保留在包含 RDS 实例的公共 VPC 之外,放弃安全最佳实践,这是公共部门的禁忌) )和性能(将 Lambda 放在带有 RDS 实例的私有 VPC 中,并由于 ENI 的配置而导致冷启动时间过长)。不过,可以通过使用 CloudWatch 对冷启动时间进行 ping 来取消冷启动时间,这可能是最佳的,也可能不是最佳的。
就 DynamoDB 而言,我个人非常缺乏经验(比 MySQL 更缺乏经验)并且不确定数据是否适用于 NoSQL 模型。如果是的话,DynamoDB 似乎是更好的方法。但根据我的理解,NoSQL 对涉及 JOIN 等的复杂查询的支持较少,这可能会消除它作为一个选项。
就数据/关系而言,感觉 SQL/RDS 更合适,但如果找到合适的数据模型,DynamoDB 会给 Lambda/AWS 服务带来更少的问题。所以我的问题是,是否最好选择私有 RDS 实例并尝试通过预热最关键的 Lambda 来消除冷启动,或者是否有一个不会导致复杂查询等问题的 NoSQL 模型事物?我是否遗漏了任何可能改变局面的关键方面?
小智 4
让我们首先澄清您的一些相当严重的误解:
根据我的研究,我发现就 RDS 而言,需要在安全性(将 Lambda 保持在公共 RDS 实例之外、放弃安全最佳实践、公共部门的禁忌)和性能之间进行权衡(将 Lambda 放入私有 RDS 实例中,并导致冷启动时间过长)。不过,可以通过使用 CloudWatch 对冷启动时间进行 ping 来取消冷启动时间,这可能是最佳的,也可能不是最佳的
现在回答你的实际问题
基本上,患者输入对其病情的描述,这构成了案例的基础。该病例由一名或多位护士在一次或多次会议期间处理,并记录与该病例相关的笔记。
这可以在 NoSQL 数据库(例如 DynamoDB)中实现。如果没有更多信息,我可能会将会话作为基础文档,使用案例 ID 作为分区键,使用会话 ID 作为排序键。如果您不理解这些术语的含义,以及如何根据该键构建文档,那么您可能不应该使用 DynamoDB。
不使用 DynamoDB 的一个更大原因与访问模式有关。您是否想查找指定护士处理过的所有病例?或者与特定患者有关?这些类型的查询正是关系数据库的设计目的。
就 DynamoDB 而言,我个人非常缺乏经验(比 MySQL 更缺乏经验)
您的团队中有人熟悉 NoSQL 数据库吗?如果没有,那么我认为你应该坚持使用 MySQL。学习如何使用 Lambda 时您将面临足够的挑战。
| 归档时间: |
|
| 查看次数: |
3343 次 |
| 最近记录: |