Answers:
实际上,DynamoDB和MySQL是苹果和橙子。DynamoDB是NoSQL存储层,而MySQL用于关系存储。您应该根据应用程序的实际需求选择要使用的内容。实际上,同时使用某些应用程序可能会得到很好的服务。
例如,如果您存储的数据不能很好地用于可通过单个键或键/范围组合进行查询的关系模式(树结构,无模式的JSON表示等),则DynamoDB(或其他NoSQL存储库)可能是您最好的选择。
如果您的数据有一个定义良好的架构,可以很好地适应关系结构,并且需要以多种不同的方式灵活地查询数据(当然需要添加索引),那么RDS可能是一个更好的解决方案。
将DynamoDB用作NoSQL存储的主要好处是,无论您需要什么级别,都可以确保有保证的读/写吞吐量,而不必担心管理集群数据存储。因此,如果您的应用程序每秒需要1000次读/写,则只需为该级别的吞吐量配置DynamoDB表即可,而不必担心底层基础架构。
RDS具有不必担心基础架构本身的许多相同优点,但是,如果最终需要进行大量写入操作,以至于最大实例大小将不再保持不变,那么您将无所不用其极。选项(您可以使用只读副本水平缩放读取内容)。
更新了注释:DynamoDb现在确实支持全局二级索引,因此您现在可以对散列或散列键和范围键的组合以外的数据字段执行优化的查找。
我们刚刚将所有DynamoDB表迁移到RDS MySQL。
虽然将DynamoDB用于特定任务可能很有意义,但在DynamoDB之上构建新系统确实不是一个好主意。最佳计划等,您始终需要数据库提供额外的灵活性。
这是我们从DynamoDB迁移的原因:
现在,我们将DynamoDB用作某些系统的备份,我敢肯定,将来会在特定的,定义明确的任务中使用它。这不是一个不好的数据库,也不是为100%的核心系统服务的数据库。
就优势而言,我要说可扩展性和持久性。它难以置信且透明地扩展,并且一直在(某种程度上)扩展。这些确实是很棒的功能,但不能以任何方式弥补其不利方面。
使用DynamoDB时,您还应该知道DynamoDB中的项目/记录限制为400KB(请参阅DynamoDB限制)。在许多用例中,这是行不通的。因此,DynamoDB仅适用于少数事物,但并非全部。许多其他NoSQL数据库也是如此。