【问题标题】:What is the "proper" way to use DynamoDB for an iOS app?将 DynamoDB 用于 iOS 应用程序的“正确”方式是什么?
【发布时间】:2015-06-24 19:07:30
【问题描述】:

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

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

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

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

【问题讨论】:

  • 为什么要直接从应用程序中使用 DynamoDB?如果您的应用程序有服务器,您应该通过它与 DynamoDB 进行交互。
  • 这可能是基于意见的,但我认为“正确”的方式可能意味着让您的移动应用程序通过 Web 服务与运行在 Web 服务器中的应用程序通信,然后使该应用程序运行在服务器与数据库通信。
  • 是的,这就是我读到的,你知道任何教程或者我应该从哪里开始学习这类东西吗?

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

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

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

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

HTH。

【讨论】:

    【解决方案2】:

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

    集成模式很少(这方面的一本非常好的书:Enterprise Integration Patterns),其中之一称为共享数据库。它本质上是关于为多个客户端使用一个公共数据库来共享数据。该模式(在您的情况下)的主要缺点是您正在假设数据库模式的外观。如果您的业务逻辑发生变化,它可能会让您在未来支持架构时感到头疼。

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

    您应该意识到处理事件会增加复杂性,如果您的应用程序很简单并且不太可能更改架构,这可能是一种矫枉过正的做法。

    还请考虑您可以使用 DynamoDB Streams 进行数据预处理,这为您提供了一些使用事件的优势,但仍保持其易于实施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 2010-11-10
      • 2015-08-02
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多