我正在處理一個保存應用程序,基本上用戶可以轉到一篇文章並單擊保存將其存儲在他的配置文件中。 Application不使用關係數據庫,而是使用dynamodb。每篇文章都有特定類型的文章。目前結構被用於這種應用的方法是:最佳DynamoDB實施結構
user-id [string][DynamoDBHashKey]
type-of-article [string] [DynamoDBRangeKey]
json [string]
用戶ID是用戶的唯一標識符,類型的-製品是以及..文章,和JSON的類型是所有以json格式保存的文章。 JSON格式之中:
[{article-id: timestamp}, {article-id: timestamp}]
Article #1^ Article #2^
文章-id爲(再次)物品唯一的標識符和時間戳是儲存該文章時的時間戳。
注意這是在dynamodb開始支持json文檔作爲Map和Lists之前完成的。代碼不是我的..它已經完成..
因此,當應用程序需要刪除保存的文章它調用發電機讓json修改json然後再存儲它。什麼時候添加一篇新文章會做同樣的事情。現在,當我想顯示按時間戳排列的所有文章時,出現了一個問題。我不得不打電話來獲取所有類型,並將它們合併到字典中進行排序。 (在用戶配置文件中,我需要顯示所有保存的文章,不管是什麼類型,排序)現在,應用程序需要超過700或900毫秒的響應時間。
我個人並不認爲這是解決這個問題的最好方法。所以我正在考慮重寫前面的代碼來實現dynamodb(List和Maps)的新功能。現在我在dynamodb結構的想法是這樣的:
user-id [string] [DynamoDBHashKey]
saved-articles [List]
article-type_1
article_1 [Map] {id: article-id, timestamp: date}
article_2 [Map] {id: article-id, timestamp: date}
article-type_2
article_1 [Map] {id: article-id, timestamp: date}
但我是比較新的dynamodb,我做了一些測試代碼中使用列表和地圖存儲在這個發電機。我使用低級別的API和對象持久性模型做了它。
現在,我的問題是:這是一個更好的方法,或者如果不是爲什麼?什麼是更好的方法。
這種方式我想我可以使用低級別的Api來獲取文章類型#2的已保存文章。或者,如果我需要他們,我只是把它全部叫完。