本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
DynamoDB 與 Amazon Service 有 DynamoDB ETL零整合。 OpenSearch 如需詳細資訊,請參閱 DynamoDB OpenSearch 擷取外掛程式和 Amazon OpenSearch Service 的特定最佳實務。
組態
-
只有您需要執行搜尋的索引資料。一律使用映射範本 (
template_type: index_template
和template_content
) 和include_keys
來實作。 -
監控日誌是否有與類型衝突相關的錯誤。 OpenSearch Service 預期指定金鑰的所有值都具有相同的類型。如果不相符,則會產生例外狀況。如果您遇到其中一個錯誤,您可以新增處理器,以擷取指定金鑰永遠是相同的值。
-
通常使用 值的
primary_key
中繼資料document_id
值。在 OpenSearch Service 中,文件 ID 等同於 DynamoDB 中的主要金鑰。使用主索引鍵可讓您輕鬆尋找文件,並確保更新一致地複寫至其中,不會發生衝突。您可以使用協助程式函數
getMetadata
取得您的主金鑰 (例如document_id: "${getMetadata('primary_key')}"
)。如果您使用的是複合主索引鍵,協助程式函數會為您將它們串連在一起。 -
一般而言,請使用
action
設定的opensearch_action
中繼資料值。這將確保以 OpenSearch 服務中的資料符合 DynamoDB 中最新狀態的方式複寫更新。您可以使用協助程式函數
getMetadata
取得您的主金鑰 (例如action: "${getMetadata('opensearch_action')}"
)。您也可以透過 取得串流事件類型dynamodb_event_name
,以用於篩選等使用案例。不過,您通常不應該將其用於action
設定。
可觀測性
-
一律在 OpenSearch 接收器上使用無效字母佇列 (DLQ) 來處理捨棄事件。DynamoDB 的結構通常比 OpenSearch Service 低,而且總是可能發生非預期的情況。使用無效字母佇列,您可以復原個別事件,甚至自動化復原程序。這可協助您避免需要重建整個索引。
-
一律設定複寫延遲未超過預期數量的提醒。假設一分鐘不會產生太多噪音,通常是安全的。這可能會根據寫入流量的激增程度和管道上的 OpenSearch 運算單位 (OCU) 設定而有所不同。
如果您的複寫延遲超過 24 小時,您的串流會開始捨棄事件,而且除非您從頭開始完整重建索引,否則會有準確性問題。
擴展
-
使用管道的自動擴展,協助擴展或縮減 OCUs,以最適合工作負載。
-
對於沒有自動擴展的佈建輸送量資料表,我們建議您OCUs根據寫入容量單位 (WCUs) 除以 1000 進行設定。將最小值設定為OCU低於該金額 1 (但至少為 1),並將最大值設定為OCU高於該金額至少 1。
-
公式:
OCU_minimum = GREATEST((table_WCU / 1000) - 1, 1) OCU_maximum = (table_WCU / 1000) + 1
-
範例:您的資料表已WCUs佈建 25000 個。管道的 OCUs應設定為至少 24 (25000/1000 - 1) 且最多至少 26 (25000/1000 + 1)。
-
-
對於具有自動擴展的佈建輸送量資料表,我們建議您OCUs根據最小和最大 進行設定WCUs,除以 1000。將 DynamoDB 的最小值設為OCU低於最小值的 1,並將最大值設為至少OCU高於 DynamoDB 的最大值的 1。
-
公式:
OCU_minimum = GREATEST((table_minimum_WCU / 1000) - 1, 1) OCU_maximum = (table_maximum_WCU / 1000) + 1
-
範例:您的 資料表具有 自動擴展政策,最小值為 8000,最大值為 14000。管道的 OCUs應設定為至少 7 (8000/1000 - 1),最多 15 (14000/1000 + 1)。
-
-
對於隨需輸送量資料表,我們建議您OCUs根據每秒寫入請求單位的典型峰值和谷值進行設定。您可能需要在較長的期間內進行平均,這取決於您可用的彙總。將 DynamoDB 的最小值設為OCU低於最小值的 1,並將最大值設為 DynamoDB 的最大值至少OCU高於最大值的 1。
-
公式:
# Assuming we have writes aggregated at the minute level OCU_minimum = GREATEST((min(table_writes_1min) / (60 * 1000)) - 1, 1) OCU_maximum = (max(table_writes_1min) / (60 * 1000)) + 1
-
範例:您的資料表的平均 谷值為每秒 300 個寫入請求單位,平均峰值為 4300 個。您的管道的 OCUs應設定為至少 1 (300/1000 - 1,但至少 1),最多 5 (4300/1000 + 1)。
-
-
遵循擴展目的地 OpenSearch 服務索引的最佳實務。如果您的索引規模過小,則會減慢從 DynamoDB 擷取的速度,並可能導致延遲。
注意
GREATEST
是一個SQL函數,指定一組引數,會傳回具有最大值的引數。