亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DynamoDB - 如何檢查現有表是空還是非空

DynamoDB - 如何檢查現有表是空還是非空

翻過高山走不出你 2021-12-22 20:16:24
我正在嘗試實現一個函數,該函數給定 DynamoDB 和我知道數據庫中存在的表的名稱,確定該表是否為空。我希望簽名在 Java 中如下所示:public Boolean isEmpty(DynamoDB database, String tableName) = ???就本問題而言,假設該表有一個主鍵,該主鍵由名為“UserId”的單個整數類型屬性組成。我知道可以使用掃描查看表格,但我 (a) 不知道表達式會是什么樣子,并且 (b) 需要將其限制為單個項目,以便我們不在非空的情況下,不必掃描整個表(可能很大)。編輯:我應該AmazonDynamoDB在我的構造函數中使用 an而不是 aDynamoDB嗎?前者有一個scan方法ScanRequest- 您可以使用它輕松設置限制.limit(1)- 而對于后者,我會做類似的事情database.getTable(tableName).scan(...),但是這個掃描需要一個ScanSpec我不清楚如何設置限制的方法。
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

在DynamoDB我試圖使用是一個簡單的包裝器AmazonDynamoDB,提供了一個稍微不同的API。使用AmazonDynamoDB代替使這個函數的實現更容易,它應該看起來像這樣(請原諒糟糕的Java代碼,我實際上是用Scala編寫的):


public Boolean isEmpty(AmazonDynamoDB database, String tableName) = {

   ScanRequest scanRequest = new ScanRequest().withTableName(tableName).withLimit(1);

   return database.scan(scanRequest).getCount == 0;

}

或者,在 Scala 中:


def isEmpty(database: AmazonDynamoDB, tableName: String): Boolean = {

   val scanRequest = new ScanRequest().withTableName(tableName).withLimit(1)

   database.scan(scanRequest).getCount == 0

}


查看完整回答
反對 回復 2021-12-22
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

我不知道如何在 Java 中做到這一點,但它必須類似于 Javascript:


const params = {

  TableName: tableName,

  Limit: 1, // `Limit` is the most important parameter.

            // The scan will not scan the whole table, 

            //   it will only visit one item and then return. 

            // Very efficient!

};


// Execute the scan, whatever the syntax is...

const result = await (new AWS.DynamoDB.DocumentClient().scan(params).promise());


// Check the response

if (result.Count > 0) return false; // the table is **not** empty 

return true; // the table is empty

在 Java 中,代碼應該是類似的...隨意詢問細節不夠清楚。


查看完整回答
反對 回復 2021-12-22
  • 2 回答
  • 0 關注
  • 418 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號