2016-03-14 56 views
0

我有一些使用情況,我不能使用DynamoDBMapper。相反,我正在使用DynamoDB V2 Document API。緩存dynamodb getTable()調用

每當我的API得到一個請求,我需要得到「表」類實例。因此我調用了dynamoDB.getTable(「TABLE_NAME」);

然而,這種通話費用高嗎?如果我在啓動時維護內存中的所有表實例的映射,並從映射引用實例而不是從DynmaoDB.getTable()API調用,這會更有意義嗎?

我也有關於table.getIndex()API調用的類似查詢。

請建議。

感謝, 哈里什

+0

請指定您的編程語言。它是'Java'嗎? –

+0

發電機的Java API dB – Harish

回答

1

按照Documentation - DynamoDB#getTable

返回指定DynamoDB表。不涉及網絡通話。

該方法只會構造一個Table實例,將其視爲工廠方法。由於代碼不是開源的,我不能肯定地說,但我猜他們也有一個類似於你的建議的內部緩存層。

所以我不會打擾在所有mantaining字典(其中,順便說一句,你將不得不作出線程安全)這樣的電話。

+0

線程安全不會成爲一個問題,因爲我打算在啓動過程中建立一個不可變的地圖 – Harish

+0

我只是通過循環10000次來運行負載測試。平均而言,直接table.getTable()花費了25微秒,從地圖上看,簡單的外觀約有300納秒。由於25微秒對於我的用例而言是相當低的延遲,我不會使用緩存,而是直接調用dynamoDB表API。 – Harish