2016-06-14 35 views
0

在經歷了一個痛苦的一天,試圖找出是否應該使用DynamoDB來存儲Json文檔(vs mongo)並閱讀幾乎所有的AWS文檔和在線示例之後,我決定詢問我的問題在這裏。亞馬遜DynamoDB Json支持查詢和掃描

我們是Spring Boot Java應用程序,我們正在使用aws-dynamodb sdk插件。我們的應用程序必須管理幾千個Json文檔,並能夠根據各種條件進行檢索。

例如,假設這是JSON文件 -

{ 
"serial":"123123", 
"feed":{ 
     "ABC":{ 
      "queue": "ABC", 
      "active": true 
      }, 
     "XYZ" : { 
      "queue":"XYZ", 
      "active": false 
} 
} 

這些都是問題,我有

  1. 可我這整個JSON文檔存儲爲迪納摩表仍然是一個字符串屬性能夠根據Json內部特定屬性的值檢索記錄,以及如何執行? 例如,我想要獲取具有Feed ABC活動的所有項目。

  2. 該解決方案的可擴展性如何?

我知道我可以在Mongo中很容易地做到這一點,但卻無法讓它在發電機中工作。

回答

1

首先,如果您不使用DynamoDBMapper與DynamoDB交談,則應考慮使用它而不是低級API,因爲它提供了更方便的更高級別的抽象。現在

,問題的答案:

  • 把它作爲一個字符串,而不是考慮使用地圖。有關支持的數據類型的更多信息,請參見here。至於搜索,有two waysQuery(其中你需要提供你需要的記錄的主鍵)和Scan。對於你的例子(即'所有的項目有ABC'),你不得不做一個Scan,因爲你不知道主鍵。
  • DynamoDB具有高度可擴展性。 Query ing是高效的,但看起來你會更多地使用Scan。後者有其侷限性,因爲它確實貫穿每條記錄,但應該適合你,因爲你只有幾千條記錄。首先進行性能測試。