[英]How can I make a sparse index if the key is always required?
我對DynamoDB中的某些東西感到非常困惑:
對於表中的任何項目,DynamoDB僅在項目中存在索引排序鍵值的情況下才會寫入相應的索引條目。 如果排序鍵未出現在每個表項中,則該索引被認為是稀疏的。
[...]
要跟蹤未結訂單,您可以在CustomerId(分區鍵)和IsOpen(排序鍵)上創建索引。 只有定義了IsOpen的表中的那些訂單才會顯示在索引中。
但是,如果您有一個用備用排序鍵定義的LSI,則在創建新項目時,該備用排序鍵永遠不能為空。 因此,索引一點也不稀疏,因為我創建的每個項目都會出現在索引中。
我想念什么?
表的排序鍵不能為null。 您在LSI中使用的字段可以為空。
首要的關鍵
必須具有哈希鍵,並且可以選擇具有排序鍵。 主鍵必須是唯一的。
全球二級指數
必須具有哈希鍵,並且可以選擇具有排序鍵。 GSI獨立於主鍵索引。
本地二級指數
用於為現有索引提供替代的排序鍵。 根據定義,現有索引必須已經具有唯一鍵,因此LSI不需要具有值,因此允許使用NULL值。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html
在DynamoDB表中,每個項目的組合分區鍵值和排序鍵值必須唯一。 但是,在本地二級索引中,對於給定的分區鍵值,排序鍵值不需要唯一。 如果本地二級索引中有多個具有相同排序鍵值的項目,則Query操作將返回所有具有相同分區鍵值的項目。 在響應中,不按任何特定順序返回匹配項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.