2015-06-22 51 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進行數據預處理,這爲您提供了使用事件的一些優勢,但仍然保持簡單實施。

相關問題