2015-06-22 52 views
2

我刚开始在我的iOS应用程序中使用AWS DynamoDB搞乱了,并且我有几个问题。什么是适用于iOS应用程序的DynamoDB的“正确”方式?

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

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

我该怎么做,但有没有更好的办法,我应该这样做?

+0

为什么要直接从应用程序使用DynamoDB?如果您的应用程序有服务器,则应通过它与DynamoDB进行交互。 – p4sh4

+0

这可能是基于意见的,但我认为“正确”的方式可能意味着让您的移动应用程序通过Web服务与运行在Web服务器中的应用程序进行通信,然后使该应用程序在服务器中与db通信。 – ericbn

+0

是的,这就是我读的,你知道任何教程或我应该开始学习这种类型的东西吗? –

回答

1

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

如果您的移动应用程序不需要后端服务器,您可以从移动设备进行的所有业务功能,那么你或许应该想想

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

HTH。

0

从你所说的话,我可以猜测你正在谈论一种可以将数据分发给许多客户端(ios应用程序)的方式。

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

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

您应该意识到使用事件增加了复杂性,如果您的应用程序很简单并且模式更改不太可能会导致过度使用。

另外考虑您可以使用DynamoDB Streams进行数据预处理,这为您提供了使用事件的一些优势,但仍然保持简单实施。

相关问题