我是一个团队的成员,该团队目前正在为政府办公室和公众之间的通信服务开发概念证明体系结构/应用程序(目前缩小到卫生部门)。客户特别要求通过AWS服务采用主要为无服务器的方法,我需要有关如何建立此架构(即Lambda与数据库的关系)的建议。
大致上,该体系结构将利用API网关来处理请求,这些请求将调用不同的Lambda(作为微服务)来访问数据库。
下图描述了一种快速的关系架构。基本上,患者输入其病情的描述,这构成了案例的基础。一个或多个护士会在一个或多个会议期间处理该案例,并记录与该案例相关的笔记。 DB Schema (not enough reputation)
[根据我的研究,我收集到的是,在RDS的情况下,在安全性之间进行了权衡(将Lambda保留在包含RDS实例的公共VPC之外,遵守安全最佳实践,公共部门)和性能(将Lambda放入具有RDS实例的私有VPC中,并且由于提供了ENI而导致大量的冷启动时间)。但是,可以通过使用CloudWatch ping来取消冷启动时间,这可能是最佳的,也可能不是最佳的。
就DynamoDB而言,我个人经验不足(比MySQL经验丰富),并且不确定数据是否适用于NoSQL模型。如果是这样,DynamoDB似乎是更好的方法。从我的理解来看,NoSQL对涉及JOIN等的复杂查询的支持较少,因此可能会取消它。
似乎就数据/关系而言,SQL / RDS似乎更合适,但是如果找到了不错的数据模型,DynamoDB对于Lambda / AWS服务的问题就更少了。所以我的问题是,最好是使用私有RDS实例并尝试通过预热最关键的Lambda来抵消冷启动,还是有NoSQL模型不会引起复杂查询的麻烦,等等。东西?我是否缺少任何可以扩大规模的关键方面?
[从我的研究中,我已经收集到,在RDS的情况下,安全性之间存在一个折衷(将Lambda保留在公共RDS实例之外,遵循安全最佳实践,对公共部门不适用)和性能(将Lambda放入私有RDS实例中,并导致大量的冷启动时间)。但是,可以通过使用CloudWatch ping来取消冷启动时间,这可能是最佳的,也可能不是最佳的]RDS是数据库服务器。您不会在其中执行任何操作。
[基本上,患者输入其病情的描述,这构成了案例的基础。一个或多个护士会在一个或多个会议期间处理该案例,并记录与该案例相关的笔记。在NoSQL数据库(例如DynamoDB)中实现。如果没有更多信息,我可能会将Session用作基本文档,使用案例ID作为分区键,并使用Session ID作为排序键。如果您不了解这些术语的含义以及如何根据该密钥构造文档,那么您可能不应该使用DynamoDB。使用此
可以
not
使用DynamoDB的更大原因与访问模式有关。您是否想查找给定护士工作的所有案例?或与特定患者有关?这些查询是关系数据库的设计目的。在DynamoDB的情况下,我个人没有经验(比MySQL更严重)您的团队中有人熟悉NoSQL数据库吗?如果没有,那么我认为您应该坚持使用MySQL。学习如何使用Lambda将给您带来很多挑战。