Amazon Neptune 引擎 1.1.1.0 版 (2022 年 4 月 19 日) - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon Neptune 引擎 1.1.1.0 版 (2022 年 4 月 19 日)

截至 2022 年 4 月 19 日,引擎 1.1.1.0 版已普遍部署。請注意,新版本需要數天才能在每個區域推出。

重要

1.1.0.0 以前的版本升級至此引擎版本,也會在資料庫叢集中的所有執行個體上觸發作業系統升級。因為不會處理作業系統升級期間發生的作用中寫入請求,所以在開始升級之前,您必須暫停對要升級之叢集的所有寫入工作負載 (包括大量資料載入)。

為了成功完成升級,每個可用區域 (AZ) 中的每個子網路都必須每個 Neptune 執行個體至少有一個可用的 IP 地址。例如,如果子網路 1 中有一個寫入器執行個體和兩個讀取器執行個體,而子網路 2 中有兩個讀取器執行個體,則子網路 1 必須至少有 3 個可用的 IP 地址,而子網路 2 必須至少有 2 個可用的 IP 地址,才能開始升級。

在升級開始時,Neptune 會產生一個快照,其名稱由 preupgrade 組成,後面接著根據資料庫叢集資訊自動產生的識別符。您不需要為此快照付費,而且如果在升級過程中出現任何問題,您可以使用它來還原資料庫叢集。

當引擎升級本身完成時,新的引擎版本將可在舊版作業系統上短暫使用,但不到 5 分鐘的時間,叢集中的所有執行個體都會同時開始作業系統升級。您的資料庫叢集目前將有數分鐘無法使用。升級完成後,您就可以繼續寫入工作負載。

此過程會產生下列事件:

  • 每個叢集事件訊息:

    • Upgrade in progress: Creating pre-upgrade snapshot [preupgrade-(autogenerated snapshot ID)]

    • Database cluster major version has been upgraded

  • 每個執行個體事件訊息:

    • Applying off-line patches to DB instance

    • DB instance shutdown

    • Finished applying off-line patches to DB instance

    • DB instance restarted

此版本的後續修補程式版本

這個引擎版本的新功能

  • OpenCypher 查詢語言現在已普遍適用於生產用途。

    警告

    對於使用 OpenCypher 搭配 IAM 身分驗證的程式碼,此版本中有一項重大變更。在 OpenCypher 的 Neptune 預覽版中,IAM 簽章中的主機字串包含了通訊協定,例如 bolt://,如下所示:

    "Host":"bolt://(host URL):(port)"

    從此引擎版本開始,必須省略通訊協定:

    "Host":"(host URL):(port)"

    如需範例,請參閱 使用 Bolt 通訊協定

  • 已新增對 TinkerPop 3.5.2 的支援。此版本中的變更包括對遠端交易的支援以及對工作階段的位元碼支援 (使用 g.tx),以及將 datetime() 函數新增至 Grimlin 語言。

    警告

    在 TinkerPop 3.5.0、3.5.1 和 3.5.2 中引進了數個重大變更,這些變更可能會影響您的 Gremlin 程式碼。例如,像這樣使用由 GraphTraversalSource 產生的周遊做為子項將不再有效:g.V().union(identity(), g.V())

    現在,請使用像這樣的匿名周遊:g.V().union(identity(), __.V())

  • 已新增對 AWS 全域條件金鑰的支援,您可以在 IAM 資料存取政策中使用這些金鑰,控制對 Neptune 資料庫叢集中儲存之資料的存取。

  • Neptune DFE 查詢引擎現在通常可用於與 OpenCypher 查詢語言搭配使用的生產,但尚未用於 Gremlin 和 SPARQL 查詢。現在,您可以使用它自己的 neptune_dfe_query_engine 執行個體參數,而不是實驗室模式參數來啟用它。

這個引擎版本的改善項目

  • 已新增功能至 OpenCypher,例如參數化查詢支援、參數化查詢的抽象語法樹 (AST) 快取、可變長度路徑 (VLP) 改善,以及新的運算子和子句。如需目前的語言支援層級,請參閱 Amazon Neptune 中的開放密碼規範合規

  • 對於簡單的讀取和寫入工作負載,已對 OpenCypher 進行了顯著的效能改善,與 1.1.0.0 版相比,產生了更高的輸送量。

  • 已移除 OpenCypher 處理可變長度路徑的雙向和深度限制。

  • 已完成 DFE 引擎中對 Gremlin withinwithout 述詞的支援,包括它們與其他述詞運算子合併的案例。例如:

    g.V().has('age', within(12, 15, 18).or(gt(30)))
  • 當範圍為全域 (亦即,不是 order(local)) 時,以及未使用 by() 調幅器時,已在 DFE 引擎中延伸對 Gemlin order 步驟的支援。例如,此查詢現在將具有 DFE 支援:

    g.V().values("age").order()
  • 已將 isLastOp 欄位新增至 Neptune 串流變更日誌回應格式,以指出記錄是其交易中的最後一個操作。

  • 已大幅改善稽核記錄的效能,並在啟用稽核記錄時減少了延遲。

  • 已將 Gremlin WebSocket 位元碼和 HTTP 查詢轉換為稽核日誌中使用者可讀取的格式。查詢現在可以直接從要在 Neptune 筆記本和其他位置執行的稽核日誌複製。請注意,這項對目前稽核日誌格式的變更會構成重大變更。

此引擎版本中修正的缺陷

  • 已修正罕見的 Gemlin 錯誤,其中使用巢狀 filter()count() 步驟組合時未傳回任何結果,例如在以下查詢中:

    g.V("1").filter(out("knows") .filter(in("knows") .hasId("notExists")) .count())
  • 已修正 Gremlin 錯誤,其中在使用 to()from() 周遊中的彙總步驟中儲存的頂點,搭配 addE 步驟時傳回了錯誤。此類查詢範例如下:

    g.V("id").aggregate("v").out().addE().to(select("v").unfold()))
  • 已修正使用 DFE 引擎時,not 步驟在邊緣情況下失敗的錯誤。例如:

    g.V().not(V())
  • 已修正 Gremlin 錯誤,其中 sideEffect 值無法在 to()from() 周遊內使用。

  • 已修正偶爾導致快速重設以觸發執行個體容錯移轉的錯誤。

  • 已修正大量載入器錯誤,其中失敗的交易在開始下一個載入工作之前不會關閉。

  • 已修正大量載入器錯誤,其中記憶體不足的情況可能會導致系統當機。

  • 已新增重試,來修正大量載入器錯誤,其中載入器未等待足夠長的時間,讓 IAM 憑證在容錯移轉後變成可用。

  • 已修正未針對非查詢端點 (例如 status 端點) 適當清除內部憑證快取的錯誤。

  • 已修正串流錯誤,以確保串流遞交序號正確排序。

  • 已修正在啟用 IAM 的叢集上,長時間執行連線不到十天就終止的錯誤。

此版本支援的查詢語言版本

將資料庫叢集升級至 1.1.1.0 版之前,請確定您的專案與下列查詢語言版本相容:

  • 支援的 Gremlin 最早版本:3.5.2

  • 支援的 Gremlin 最新版本:3.5.4

  • openCypher 版本:Neptune-9.0.20190305-1.0

  • SPARQL 版本:1.1

引擎 1.1.1.0 版的升級途徑

您可以將任何先前的 Neptune 引擎版本手動升級為此版本。請注意,主要版本引擎 (1.1.0.0) 之前的版本將需要更長的時間才能升級到此版本。

您不會自動升級至此版本。

升級至此版本

重要

1.1.0.0 以前的任何版本升級至此引擎版本,也會在資料庫叢集中的所有執行個體上觸發作業系統升級。因為不會處理作業系統升級期間發生的作用中寫入請求,所以在開始升級之前,您必須暫停對要升級之叢集的所有寫入工作負載 (包括大量資料載入)。

在升級開始時,Neptune 會產生一個快照,其名稱由 preupgrade 組成,後面接著根據資料庫叢集資訊自動產生的識別符。您不需要為此快照付費,而且如果在升級過程中出現任何問題,您可以使用它來還原資料庫叢集。

當引擎升級本身完成時,新的引擎版本將可在舊版作業系統上短暫使用,但不到 5 分鐘的時間,叢集中的所有執行個體都會同時開始作業系統升級。您的資料庫叢集目前大約 6 分鐘將無法使用。升級完成後,您就可以繼續寫入工作負載。

此過程會產生下列事件:

  • 每個叢集事件訊息:

    • Upgrade in progress: Creating pre-upgrade snapshot [preupgrade-(autogenerated snapshot ID)]

    • Database cluster major version has been upgraded

  • 每個執行個體事件訊息:

    • Applying off-line patches to DB instance

    • DB instance shutdown

    • Finished applying off-line patches to DB instance

    • DB instance restarted

如果資料庫叢集執行的引擎版本具有升級至此版本的途徑,則有資格立即升級。您可以使用主控台上的資料庫叢集操作或使用 SDK 來升級任何有資格的叢集。以下 CLI 命令將立即升級有資格的叢集:

對於 Linux、OS X 或 Unix:

aws neptune modify-db-cluster \ --db-cluster-identifier (your-neptune-cluster) \ --engine neptune \ --engine-version 1.1.1.0 \ --allow-major-version-upgrade \ --apply-immediately

針對 Windows:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine neptune ^ --engine-version 1.1.1.0 ^ --allow-major-version-upgrade ^ --apply-immediately

您可以指定 --no-apply-immediately,而不是 --apply-immediately。若要執行主要版本升級,需要 allow-major-version-upgrade 參數。此外,請務必包含引擎版本,否則您的引擎可能會升級至不同版本。

如果您的叢集使用自訂叢集參數群組,請務必包含此參數來指定它:

--db-cluster-parameter-group-name (name of the custom DB cluster parameter group)

同樣地,如果叢集中有任何執行個體使用自訂資料庫參數群組,請務必包含此參數來指定它:

--db-instance-parameter-group-name (name of the custom instance parameter group)

一律在升級之前執行測試

發佈新的主要或次要 Neptune 引擎版本時,請一律先在其上測試 Neptune 應用程式,然後再升級至其中。即使是次要升級,也可能會引入將影響程式碼的新功能或行為。

首先,請將目前版本中的版本備註頁面與目標版本的版本備註頁面進行比較,以查看查詢語言版本中是否將有變更,或有其他重大變更。

在升級生產資料庫叢集之前測試新版本的最佳方式是複製您的生產叢集,以便複製執行新的引擎版本。然後,您可以在複製上執行查詢,而不會影響生產資料庫叢集。

升級前一律建立手動快照

在執行升級之前,強烈建議您一律建立資料庫叢集的手動快照。具有自動快照僅會提供短期保護,而手動快照仍然可用,直到您明確將其刪除為止。

在某些情況下,Neptune 會為您建立手動快照,作為升級程序的一部分,但您不應該依賴此快照,而且在任何情況下都應該建立自己的手動快照。

確定不需要將資料庫叢集還原為升級前狀態時,您可以明確刪除您自己建立的手動快照,以及 Neptune 可能已建立的手動快照。如果 Neptune 建立手動快照集,它會具有開頭為 preupgrade 的名稱,後面跟著資料庫叢集的名稱、來源引擎版本、目標引擎版本和日期。

注意

如果您嘗試在待定動作進行中時進行升級,可能會遇到如下錯誤:

We're sorry, your request to modify DB cluster (cluster identifier) has failed. Cannot modify engine version because instance (instance identifier) is running on an old configuration. Apply any pending maintenance actions on the instance before proceeding with the upgrade.

如果遇到此錯誤,請等候待定動作完成,或立即觸發維護時段,讓先前的升級完成。

如需有關升級引擎版本的詳細資訊,請參閱 維護 Amazon Neptune 資料庫叢集。如果您有任何問題或疑慮,請透過社群論壇及 AWS Premium Support 聯繫 AWS Support 團隊。