对于计划应用程序的设计,我有一点小问题,特别是数据库引擎和serverless /不是无服务器的。目标是通过Rest与数据库进行对话的Web应用程序。Rest本身实际上只是CRUD操作,因此在我看来,Serverless aproach (AWS )非常适合。为此,可能需要选择的最有效的数据库是DynamoDB (NoSQL)。
我熟悉关系数据库管理系统,对NoSQL数据库知之甚少。
应用程序的架构尚未完成,应该在以后的时间点上进行扩展,因为可以实现新的特性等等。正因为如此,我宁愿使用关系数据库而不是NoSQL数据库,因为它们在以后编辑模式方面不太好。(至少这是我最近几个小时读到的)
例如,选择Amazon数据库可能要昂贵得多,我不知道他们如何处理Rest的Serverless aproach。
因此,我站在一个点,我真的不知道在这里使用什么服务。我还能用DynamoDB吗?模式很可能是非常相关的。
发布于 2019-02-06 20:48:43
DynamoDB没有任何模式概念,所以编辑的全部内容都是不相关的(与DynamoDB)。如果您所说的模式是指具有特定属性的对象,那么它取决于用例。如果您对表中的对象不共享相同的“模式”表示满意,那么它非常简单,因为默认情况下是允许的。另一方面,如果您需要所有对象共享相同的属性集,并且要频繁地更改它们,那么与RDS相比,这确实不是那么简单和直接。
接下来,如果您有一个关系模式--表--并且计划对它们进行一些连接,那么DynamoDB确实不是一个好的解决方案。DynamoDB适用于特定类型的用例,比如存储会话或具有类似(低)复杂性的东西。用DynamoDB编写更复杂的查询会变得非常乏味和痛苦。
考虑到价格。好吧,我不会说DynamoDB那么便宜。乍一看似乎是这样,但是如果你深入研究它,你会发现它实际上相当昂贵,主要是从写作的角度来看。您需要提供读写能力和更大的吞吐量,您需要它获得更高的成本(您可以使用自动缩放的突发流量,但如果有一致的流量,这将不会对你有多大的帮助)。在更大的范围内,RDS (而不是Aurora)将只花费DynamoDB成本的一小部分(假设我们讨论的是可以由RDS处理的用例)。
如果您担心RDS与Lambda的集成,那么与DynamoDB相比,它的复杂性并没有那么大。有一些需要考虑的事项,例如lambda执行时间的硬限制(当前为15分钟)和RDS响应速度可能较慢(与DynamoDB相比),但是如果您的查询花费了很长时间,那么您要么做错了事情,要么误用了这些工具。
总之,如果您对使用RDS感到满意,并且不需要DynamoDB提供的毫秒延迟(如果使用DAX甚至是微秒延迟),那么在您的情况下,我肯定会使用RDS而不是DynamoDB。同样,DynamoDB并不是每个数据相关问题的通用解决方案,而且更多时候,我看到它被严重地滥用于可以被RDS轻松处理的东西上。
https://stackoverflow.com/questions/54557325
复制相似问题