簡體   English   中英

在雲NoSQL類型數據庫中查詢“輸入”選項

[英]Doing Query “In” options in a cloud NoSQL Type Database

背景:我們目前正在將文件存儲在AWS S3(主要是圖像)上。 在我們的客戶端應用程序上,需要將一批文件一起上傳到s3(500多個文件),並且在上傳文件之前,我們始終通過對具有文件ID的S3進行ping操作來檢查這些文件在S3中是否存在,並查看頭是否存在(假設沒有其他方法可以檢查客戶端是否存在文件)。 顯然,這是對客戶端應用程序的性能破壞。

我們的嘗試:在AWS上,我們創建了一個存儲在DynamoDB(雲數據庫)上的索引表,該表跟蹤當前具有S3存儲桶的所有文件名(假設每個文件的文件名都是唯一的)(例如,使用lambda插入和刪除有關文件插入和刪除的記錄)。 我們想要做的是,在從客戶端上傳文件之前,我們要對雲數據庫運行查詢/掃描,並檢查跟蹤記錄中是否存在文件名列表。 注意:我們不想一一檢查文件名的存在,這一點非常重要,因為與現有解決方案相比,文件名不會有太大改善。 我們要檢查文件名列表(如果它們存在於數據庫中)。 (就像在兩個文件名列表之間做一個區分)

挑戰:對於NoSQL數據庫,不可能在列表中進行查詢記錄。

我想獲得更多關於如何實現我們想要做的想法。

我們目前正在考慮一些選項:1.代替使用NoSQL數據庫,我們使用關系數據庫,以便我們可以在列表中進行表聯合或查詢文件名。2.而不是在NoSql DB上保留文件名列表,我們將散列結果保留在不同的單元格上,並將散列結果檢索到客戶端集,然后客戶端將進行列表比較。

我的英語不好,我的理解是:您想檢查文件名列表(如果存在)並且文件名是db hashkey。

您可以使用batchLoad來獲得結果。但是要小心,batckLoad api有計數限制。

如果您的DynamoDB表大小很小,則可以執行“掃描”操作,並使用“ IN”運算符設置文件名的過濾器表達式

您可能還想考慮使用Elasticache使您的解決方案更具可擴展性,而不是針對每個請求都使用DynamoDB。 而且,您可以有2個lambda函數,一個是在對S3存儲桶進行更新時更新DynamoDB的,另一個是使用基於DynamoDB流的DynamoDB更新來更新Elasticache的。 緩存更新后,S3之前的后續查找將找到最新更新。 這種方法要記住的幾點是-異步更新和最終的一致性。 因此,您可能必須查看客戶如何處理它。

暫無
暫無

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

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