簡體   English   中英

如何將 aws dynamodb 索引限制從 5 增加

[英]How to increase aws dynamodb index limit from 5

是否可以將索引從 5 增加到 15?

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html

每個表的二級索引您可以為每個表定義最多 5 個本地二級索引和 5 個全局二級索引。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html

查詢操作根據主鍵值查找項目。 您可以查詢任何具有復合主鍵(分區鍵和排序鍵)的表或二級索引。

如果我理解正確,您可以設置 1 個主哈希鍵、5 個輔助鍵和另外 5 個全局鍵……您只能查詢索引。

我們正在考慮將 DynamoDB 用於 NoSQL 數據庫,但我們完全被這個絆倒了。 在 Mongo 或 Elastic 或 Solr.. 中,您幾乎可以通過任何您想要的文檔屬性進行查詢。

在這個應用程序中,我們已經有 15 個我們知道要查詢的屬性,但是 DynamoDB 只提供索引 5 的能力。除非我弄錯了……除了針對預設索引之外,還有其他查詢方式嗎?

不幸的是,5 個本地二級索引和 20 個全局二級索引是無法擴展的硬限制。

當您有更多 (>20) 個屬性要從 DynamoDB 查詢時,效率不高。 您必須使用 Scan 來評估表中的所有項目,這效率不高。 您必須移動到不同的數據庫或使用 AWS ElasticSearch 為搜索屬性建立索引。

每個表的全局二級索引數量限制已增加到20 如果您需要為 DynamoDB 表創建20多個全局二級索引,您可以減少支持案例。 https://aws.amazon.com/about-aws/whats-new/2018/12/amazon-dynamodb-increases-the-number-of-global-secondary-indexes-and-projected-index-attributes-you-可以創建每個表/

事實證明,答案是等待。 現在 dynamodb 支持 20 個全局二級索引。 根據: https : //docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html

每個表有 20 個全局二級索引的初始限制。 要請求提高服務限制,請參閱https://aws.amazon.com/support

Docker 鏡像仍然有 5 個 GSI 限制:(

https://hub.docker.com/r/amazon/dynamodb-local

有一種方法可以通過重載索引列來規避索引數量的限制。 例如,您可以將多個數據屬性存儲在同一個分區鍵或排序鍵中。 當這些不同屬性的值可以重疊時,可能會出現問題。 在這種情況下,您可以在前面加上一個后綴來區分不同的屬性。

讓我們看一個例子。 比方說,我們有一個包含user-nameemployee-namecompany-name等屬性的數據集,我們希望將它們全部存儲在同一個索引列中(比如全局二級索引的分區鍵)。 屬性的某些值可能會重疊,因此我們使用前綴“標記”我們的屬性: user#nameemployee#namecompany#name
這允許我們使用begins_with(user#abc)類的條件進行查詢,而不會混淆不同的屬性,但仍將它們全部編入索引。

更多信息在 AWS 官方文檔中: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-gsi-overloading.html

希望這可以幫助。

暫無
暫無

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

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