将DynamoDB用于iOS应用程序的“正确”方法是什么?

时间:2015-06-22 03:00:15

标签: amazon-web-services amazon-dynamodb

我刚开始在我的iOS应用程序中搞乱AWS DynamoDB,我有几个问题。

目前,我的应用程序直接与DynamoDB数据库通信。我最近一直在阅读,人们说这不是从我的数据库中获取数据的正确方法。

我的意思是我只是在我的代码中有一个函数查询我的Dynamo数据库并返回结果。

我是如何做到的,但有更好的方法我应该这样做吗?

2 个答案:

答案 0 :(得分:1)

Amazon DynamoDB本身是一种高度可扩展的服务,站在它前面的另一台服务器需要根据为您的表配置的RCU / WCU来扩展服务,我们可以而且应该避免这种情况。

如果您的移动应用程序不需要后端服务器,并且您可以从移动设备执行所有业务功能,那么您应该考虑一下

  1. 使用AWS DynamoDB SDK for iOS devices编写在移动设备上运行的客户端应用程序
  2. 使用AWS Token Vending Machine对您的移动用户进行身份验证,以授予他们用于在DynamoDB表上运行操作的凭据。
  3. 使用IAM policies控制访问权限(即表格上应允许的操作等)。
  4. HTH。

答案 1 :(得分:0)

根据您的说法,我猜您正在谈论一种可以将数据分发给许多客户端(ios应用程序)的方法。

很少有集成模式(这是一本非常好的书:Enterprise Integration Patterns),其中一个称为共享数据库。它主要是为多个客户端使用公共数据库来共享数据。该模式(在您的情况下)的主要缺点是您正在假设数据库模式的外观。如果您的业务逻辑发生变化,它可能会在将来为您带来一些支持架构的麻烦。

更高级的方法是在数据的每次更改中发送事件,而不是直接从客户端应用程序向数据库写入更改。这样,您可以在事件将其携带的数据写入数据库之前为事件添加其他处理。例如,您可能希望更改应用程序新版本中的事件格式,但仍希望支持旧版用户,因此您需要添加转换过程,以将两种类型的事件转换为适合数据库架构的格式。这基本上是关于是否使用差异与快照的问题。

您应该意识到使用事件会增加复杂性,如果您的应用程序很简单且架构中的更改不太可能,那么这可能会过度。

还要考虑您可以使用DynamoDB Streams进行数据预处理,这为您提供了使用事件仍然易于实现的一些优势。