簡體   English   中英

使用 boto3 獲取 dynamodb 中的分區鍵列表

[英]get the list of partition keys in a dynamodb with boto3

實際上,我正在使用scan並在每個項目中獲取分區鍵,但這確實效率不高,我的 dynamodb 太大而且需要太多時間。

有沒有一種方法可以只query分區鍵,這樣我們就有了一種優化的廉價方法來獲取 python 中帶有 boto3 的 dynamoDB 的所有分區鍵?

我的確切目標是從我的 dynamoDB 的 50 個最新元素中獲取信息。 我的 dynamoDB 在列form_data中有很多信息,所以首先,我想在一個廉價的調用中獲得 50 個最新的creation_file_date的 ID,這樣我就可以對每個元素進行優化調用。

動態數據庫示例

掃描

正如您提到的,獲取密鑰列表的唯一方法是通過Scan 為了減少延遲,您可以使用ParallelScan ,但對於您的用例來說它仍然效率很低。

全球二級索引

我的建議是使用 GSI 為您提供 50 個最新元素的能力。 在我的示例中,我假設您的峰值寫入吞吐量永遠不會超過 1000 WCU,如果超過,您將需要寫入分片索引屬性。

創建一個索引,將 static 值作為分區鍵,將creation_file_date作為排序鍵。

基表

創建_文件_日期 客戶 數據 gsi_pk
CR 19/01/2023 18:00 1個
CR 19/01/2023 19:00 1個
CR 19/01/2023 20:00 1個
CR 18/01/2023 21:00 1個

全球二級索引

gsi_pk 創建_文件_日期 客戶 數據
1個 CR 18/01/2023 21:00
1個 CR 19/01/2023 18:00
1個 CR 19/01/2023 19:00
1個 CR 19/01/2023 20:00

creation_file_date獲取最后 50 個元素

aws dynamodb query \
--table-name test1 \
--index-name test-index \
--key-condition-expression "gsi_pk = :id" \
--expression-attribute-values  '{":id":{"N":"1"}' \
--scan-index-forward false \
--limit 50 \
--return-consumed-capacity TOTAL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM