具體來說,何時使用其中一種更好?我現在正在使用BatchGetItem,它看起來非常緩慢。GetItem/BatchGetItem如何與效率方面的查詢和掃描DynamoDB表進行比較?
回答
就檢索單個項目(您知道分區鍵(以及排序鍵,如果在表中使用該鍵)中)的效率而言,GetItem比查詢或掃描更高效。 BatchGetItem是一種方便的方法,用於檢索您知道分區/排序鍵的一堆項目,並且在節省網絡流量方面效率更高。
但是,如果您只有關於某個項目的部分信息,那麼您將無法使用GetItem/BatchGetItem,並且您必須對您關心的項目進行掃描或查詢。在這種情況下,查詢將比掃描更有效,因爲使用查詢,您已經將表空間縮小爲單個分區鍵值。 Filter表達式對效率沒有太多的貢獻,但它們可以爲您節省一些網絡流量。
當您需要檢索大量項目時,也有這種情況。如果您需要大量具有相同分區鍵的項目,則查詢會比多個GetItem(或BatchGetItem調用)更有效。此外,如果您需要檢索佔桌面重要部分的項目,則掃描是一條可行的路線。
可能的副本你說過濾表達式對效率沒有太大的貢獻,但它們可以爲你節省一些網絡流量。我明白過濾後的結果會返回更少的數據,但實際過濾的性能如何?例如,如果多個IN運算符在作爲過濾器表達式的一部分的字符串集上執行?我無法找到關於這種模式效率的任何信息。乾杯 – theSiberman
絕對如此。就網絡帶寬而言,假設過濾實際上很重要,您可以通過在服務器上而不是在客戶端上進行過濾來節省很多。而對於速度較慢的連接,效果更顯着。使用DynamoDB,您可以爲每個查詢檢索最多1MB的數據,這樣您可以根據經過篩選的結果集的稀疏性將每個查詢從幾千字節增加到整個兆字節。我不確定你指的是多少IN子句的效率。 –
由於IN運算符在返回給客戶端之前應用於結果,因此開銷可以忽略不計。 –
- 1. 使用FilterExpression進行Dynamodb掃描()使用FilterExpression進行Dynamodb掃描()
- 2. 沒有篩選表達式的DynamoDB掃描與查詢
- 3. 掃描並比較兩行
- 4. 提高我的查詢效率 - 減少全表掃描?
- 5. 是否可以在DynamoDB中將結果與查詢或掃描進行排序?
- 6. 不一致的結果與查詢/掃描DynamoDB - 的NodeJS
- 7. 對iOS的dynamoDB(AWS)執行掃描或查詢
- 8. 比較效率
- 9. 如何使用gte比較運算符查詢dynamodb表
- 10. 亞馬遜DynamoDB Json支持查詢和掃描
- 11. 優化sql連接查詢,比較查詢效率
- 12. 查詢執行全表掃描
- 13. SQL Server將類似的表格與查詢進行比較
- 14. 要與列表進行比較的LDAP查詢語法
- 15. 如何掃描lambda中的dynamoDB?
- 16. Lambda和DynamoDB:未被授權執行:dynamodb:掃描
- 17. 使用Java中的Table.scan api進行Dynamodb並行掃描
- 18. 將SQL查詢與當前查詢值進行比較
- 19. NSString比較效率
- 20. 表掃描如何返回比表中的行更多的行?
- 21. 將子查詢與元素列表進行比較
- 22. 效率:Java中的UUID與int比較
- 23. 如何比較掃描儀輸入與數組?
- 24. MYSQL - 如何進行字符串比較和查詢?
- 25. 如何將兩個變量與查詢中的id表值進行比較?
- 26. 將列與有效值進行比較
- 27. 掃描算術操作數c並將它們與字符串進行比較
- 28. 如何寫一個LINQ查詢來與值列表進行比較?
- 29. 在插入時掃描DynamoDB表格
- 30. java掃描器字符串的比較
http://stackoverflow.com/q/30749560/1428388 – jbird