NDCS 中的全域作用中表格
Oracle NoSQL Database Cloud Service 支援全域作用中表格架構,您可以在其中建立表格、跨多個區域複製表格,以及跨區域複本維護同步的資料。
現今的企業需要為客戶提供更快、更好的服務。網路延遲是評估任何應用程式效能的重要參數。網路延遲是資料封包在網路上傳輸的最短時間。使用者希望能夠隨時隨地順暢地完成線上活動。為了滿足這樣的期望,企業需要在最接近使用者的分散式區域中託管應用程式和資料。
Oracle NoSQL Database Cloud Service 透過「全域作用中」表格,提供這些需求的解決方案。此功能可讓在區域中寫入的應用程式資料在多個區域之間通透地複寫。
全域作用中表格的優點:
-
在本機讀取及寫入以及全域存取您的資料:多個區域中「全域作用中」表格的作用中 - 作用中組態可確保在某個區域的表格上執行的更新會自動複製到其他複製區域中的表格複本。您可以從任何複製的區域存取資料。
-
效能:「全域作用中」表格可讓您在本機讀取和寫入資料,提供單一位數毫秒的延遲,這是全球分散式應用程式在任何規模的本機存取特性。這可以提升大規模全域應用程式的效能,並減少應用程式要求的延遲。
-
輕鬆設定及管理:Oracle NoSQL Database Cloud Service 可免除使用「全域作用中」表格部署及管理多區域複寫的複雜性。新增區域表格複本非常簡單,可以使用 API、Terraform 或 OCI 主控台完成。
-
多區域抗逆力:「全域作用中」表格也會在區域失敗的罕見情況下啟用容錯功能。如果單一區域無法使用或離線,則可以將應用程式要求重新導向至複製表格的區域,並可對此表格執行讀取和寫入。
如何在 NDCS 中選擇全域作用中設定?
「全域作用中」表格功能可讓在區域中寫入的應用程式資料在多個區域間通透地複製。
單一區域故障的罕見事件不應影響使用者的體驗。例如,如果單一區域離線、隔離或降級,您的應用程式應被重新導向至不同的區域,並繼續執行以前的讀取和寫入。簡而言之,即使區域發生故障,您的資料庫也需要提供災難復原。您可以使用 Oracle NoSQL Database Cloud Service (NDCS) 中的「全域作用中」表格,透過主動 - 主動組態提供災害復原,或使用本機資料存取,主動跨多個區域複製資料以實現低延遲。
請考慮從熱門網站購物的旅遊使用者需求。他們可以在同一天從世界各地訪問相同的購物網站。無論使用者身在何處,您都需要確保使用者體驗最低延遲和無縫互動。
NDCS 中的「全域作用中」表格功能提供上述兩種案例的解決方案。讓我們探索這兩種案例,並瞭解 Global Active 表格是提供高可用性、低延遲和災難復原的最佳解決方案。
在第一個案例中,假設您的公司使用 Phoenix (US -West)、Frankfurt (Germany) 和 Tokyo (Japan) 中的 NDCS,而您有一個名為 ShoppingCart 的表格,儲存來自全球不同地區購物的客戶購物資訊。在此範例中,您的公司正透過地理上最接近客戶的資料中心為客戶提供服務。此類設定涉及多個可用的 Oracle NoSQL Database Cloud Service 地理位置。每個區域都提供具有兩個或多個地理分散式區域和 NoSQL Database Cloud 服務的架構,稱為全域作用中表格架構。ShoppingCart 表格是「全域作用中」表格,在多個區域中複製。
在主動 - 主動組態中,您的 NDCS 可用於多個區域,且所有區域的資料會同步。當區域失敗時,其他複本區域中的「全域作用中」表格將繼續如常運作,且不會受到失敗區域的影響。當失敗的區域返回時,其區域表格複本將會與其他區域同步。「全域作用中」表格提供當區域停止運作時,應用程式會連線至其他複本的災害復原。
在第二個案例中,假設使用者位於鳳凰城、線上商店,以及將行動電話新增至其購物車。西岸 NDCS 區域為此階段作業提供服務,而使用者體驗來自區域本機資料存放區的最低讀取和寫入要求延遲。然後,這位用戶將飛機上到德國,13 小時後前往酒店,連接到 Wi-Fi 網路,前往行動公司的線上商店,發現還有另一個看起來更吸引人的電話模型。因此,使用者決定以這個新的電話模式更新購物車,並繼續瀏覽行動電子商務商店。法蘭克福的區域資料存放區是最繁瑣的資料存放區,可為此階段作業提供服務,並提供與美國使用者相同的低延遲讀取和寫入體驗。接著,使用者會前往日本,並決定造訪當地行動商店,以取得最新行動模型的詳細資訊。然後,使用者會以行動商店中現有電話的最新型號來更新購物車。由於 NoSQL Database Cloud Service 位於鳳凰城的三個區域,位於德國的第二個區域,以及日本的第三個區域,因此每當使用者更新購物車或瀏覽行動電子商務商店、個人化搜尋結果,以及其他資料從最接近使用者的區域擷取時,都會有一個以上的區域表格複本。這種本機處理可提供最低延遲、最佳效能,並消除廣域網路存取。
基本概念
「全域作用中」表格中使用的術語:
-
區域:Oracle Cloud Infrastructure (OCI) 區域。
- 寄件者區域:將表格更新複製到其他區域的區域。
- 接收者區域:接收來自其他區域之表格更新的區域。
- 單一表格:非區域複製的表格。
- 區域表格複本:在另一個區域中建立的表格複本。
- 全域作用中表格:具有一或多個區域表格複本的表格。
建立及管理「全域作用中」表格的基本規則:
建立與管理「全域有效」表格時,必須符合下列條件。
-
表格的綱要狀態必須是 FROZEN 。
-
在接收者區域中,不能有相同名稱的表格存在。
-
在接收者區域中,區間 (與傳送者區域中的區間名稱相同) 必須已經存在。
-
刪除全域作用中表格之前,必須先移除表格的所有區域表格複本。
備註:在 NDCS 中,區域資料表複製是在背景中以非同步方式執行。
您可以在「全域作用中表格」上建立子項表格。「全域作用中」表格的子項表格可以是單一表格或「全域作用中表格」。若要讓子項表格成為「全域作用中」表格,您必須凍結子項表格的綱要並新增區域複本。您可以從父項表格的其中一個區域複本進行挑選。
全域有效表格工作流程
如何在「全域作用中」表格中複製?
當您新增現有 NoSQL 表格的區域表格複本時,會將單一表格轉換成「全域作用中」表格。將在表格中複製下列項目。
-
表格定義 / 綱要
-
表格中的索引 - 次要索引的數目和定義。
-
表格中的資料。
-
儲存容量 - 由於「全域作用中」表格的所有區域複本都儲存相同的表格資料,因此區域複本的儲存限制會複製到「全域作用中」表格的所有其他區域複本。
-
表格的預設表格存留時間 (TTL)
-
讀取容量和寫入容量 - 依預設,區域複本的讀取限制與「全域作用中表格」的任何其他區域複本的讀取限制相同。不過,讀取作業純粹是本機作業,因此您可以選擇性地設定每個區域的讀取限制。依預設,區域複本的寫入限制與「全域作用中」表格的任何其他區域複本的寫入限制相同。不過,您可以將每個區域中的寫入限制設為不同的值。
注意: OCI 標記可讓您將描述資料新增至資源。一或多個標記可與「全域作用中」表格關聯。未複製 OCI 標記,而全域作用中表格在不同的區域中可以有不同的標記。
新增區域表格複本
當您複製表格時,系統會在另一個區域 (稱為接收者區域) 中建立表格。如果寄件者區域中的表格是單一表格,就會轉換成「全域作用中」表格。如果傳送方區域中的表格已經是「全域作用中」表格,表格中將會新增另一個區域複本。區域複本是使用寄件者區域表格的資料起始的。例如,如果傳送方區域中的表格有 1000 個資料列,則所有資料都會複製到新建立的區域複本。
注意:當您新增區域表格複本時,接收者區域中的表格會放置在與傳送者區域中表格相同的區間中。在「全域作用中」表格的整個生命週期中,您可以隨時將它移動到另一個區間。
區域表格複本的容量 (讀取單位、寫入單位及儲存)
當您新增表格的區域複本時,讀取容量、寫入容量以及儲存容量欄位會自動預設為寄件者區域中表格的對應值。不過,您可以在接收者區域中編輯和變更表格的讀取容量和寫入容量的值。無法變更表格的儲存容量。接收者區域中的表格儲存容量與傳送者區域中的表格相同。「全域作用中」表格的容量模式可以是隨選或佈建。您也可以在建立「全域作用中」表格之後,變更任何區域複本的容量模式。容量模式的變更是區域複本的本機變更,不會影響全域作用中表格的任何其他區域複本。
區域表格複本中的記錄 TTL
表格存留時間 ( TTL) 是以資料允許存留在表格中的時間量 (時數或天數) 來表示。Oracle NoSQL Database Cloud Service 可讓開發人員在表格資料列上設定過期時間,資料列在此時間之後會自動過期,不再提供使用。在指定的持續時間之後,資料列就會自動到期,而且無法再使用。區域表格複本中的 TTL 與寄件者區域中表格的 TTL 值相同。將資料列複寫至其他區域時,會將其到期時間複寫為絕對時戳。因此,無論此資料列的複製時間為何,此資料列都將同時到期。
建立區域表格複本之後,就會使用寄件者區域表格中的資料起始。在此初始化表格資料期間,如果已達 TTL 值,這些資料列將到期,且讀取作業將看不到這些記錄。
建立區域表格複本後的 DDL 作業範圍:
下列 DDL 作業具有全域範圍,這表示一個區域表格複本中的變更會自動傳輸至所有區域表格複本。
- 新增索引
- Drop Index - 刪除索引
- 表格的儲存容量變更
- 表格 TTL 變更
下列 DDL 作業具有本機範圍,這表示只會變更起始區域表格複本的變更。
- 讀取單位變更
- 寫入單位變更
- 容量模式從隨選變更為已佈建,反之亦然
全域有效表格的資料模型設計考量
為什麼您必須凍結表格的綱要?
在「全域作用中」表格組態中,您可以在 NDCS 中建置多個區域的表格,而且所有區域都會同時服務讀取和寫入要求。連接到 NDCS 的應用程式應設計為連接到最近的複製區域。表格的主索引鍵、分區索引鍵以及資料在複寫區域之間必須相同,因為這三部分是應用程式如何使用表格的本質部分,以及查詢的執行方式。在「全域作用中」表格中,因為表格記錄可以同時寫入多個區域的表格,所以必須達到表格綱要的一致性。若要這樣做,可以防止綱要變更,讓所有區域立即一致表格的綱要。為了簡化、效能及可預測性,Oracle NoSQL Cloud Service 需要針對任何參與區域複寫的表格凍結綱要。因此,在將單一表格轉換成「全域作用中」表格之前,必須先凍結表格綱要,而且不允許進一步變更綱要。如果必須在建立區域複本之後變更全域作用中表格的綱要,您必須先刪除所有區域複本、更改表格的綱要,然後重新新增區域複本。Oracle NoSQL Cloud 服務會以寄件者區域的最新資料重新植入所有區域複本。因此,建議表格中至少有一個 JSON 資料欄,因為它在綱要中提供更多彈性,並且避免需要更改綱要。
在全域有效表格中定義識別
-
區域表格複本中的記錄識別在所有表格的區域複本中必須是唯一的。自然鍵 (識別資料表中每筆記錄的全域唯一識別碼) 才能在「全域現用」資料表中作為識別,前提是必須先確保所有區域資料表複本的唯一性。
-
在「全域作用中」表格中使用系統產生的識別時,應使用 UUID 。在大多數情況下,不應使用識別資料欄,因為不保證在所有區域表格複本之間是唯一的。
原則與使用者權限
表格的 IAM 原則專屬於寄件者區域。
當使用者新增單一表格或「全域作用中」表格的複本時,接收者區域中不會新增任何原則或使用者權限。來源區域中想要建立及管理複本的使用者,也必須具備接收者區域的必要權限。否則,您會在使用者新增區域表格複本時收到錯誤。
建立區域表複本後,從發送方區域將任何資料修改複製到接收方區域並不需要任何使用者權限。這表示無論使用者權限為何,所有其他表格複本都會複製一個複本表格中的資料變更。下方列出建立及管理區域表格複本所需的權限。
新增複本:
想要管理表格複本的使用者,必須在寄件者區域和所有現有的接收者區域都具備 NOSQL_TABLE_ALTER 權限。若要建立新複本的使用者,必須在接收者區域中擁有 NOSQL_TABLE_CREATE 權限 (必須建立複本)。當您建立區域表格複本時,接收者區域中不會建立傳送者區域中表格的現有讀取和寫入權限。想要在接收端區域中建立新複本的使用者,負責為他們建立的每個區域表格複本建立表格讀取和寫入權限。
刪除複本:
在傳送方區域和所有現有的接收方區域中,想要管理表格複本的使用者必須具備 NOSQL_TABLE_ALTER 權限。若要刪除複本的使用者,必須在接收者區域 (必須刪除複本) 中具備 NOSQL_TABLE_DROP 權限。
建立索引:
若要在區域表格複本中建立索引的使用者,必須具備 NOSQL_INDEX_CREATE 權限。
Drop Index - 刪除索引:
若要刪除區域表格複本中索引的使用者,必須具備 NOSQL_INDEX_DROP 權限。
更新表格限制 /TTL/:
若要管理表格複本的使用者,在所有區域表格複本中都必須具備 NOSQL_TABLE_ALTER 權限。
讀取、寫入和 ACID 交易
建立「全域作用中」表格之後,您可以使用現有的資料存取 API 或 DML 敘述句,對表格執行讀取或寫入作業。
為了獲得最佳延遲,您的應用程式通常會從本機區域複本讀取。本機區域複本中的資料也會包含從其他區域表格複本複製的資料更新。每當您在「全域作用中」表格執行寫入作業 (INSERT、UPDATE 或 DELETE) 時,將會以非同步方式跨多個區域複製變更。也就是說,當您在寄件者區域中寫入資料列時,會在寄件者區域中完全執行寫入作業,而無須等待複本區域更新。如果多個區域更新具有相同主索引鍵的資料列,則會套用規則以決定要將哪個區域的更新視為最終更新。在所有這類情況下,此內建衝突解決規則都將導致以最新時戳更新,以贏得並確認資料庫。同時從多個區域更新 TTL 值時,也會套用此規則。
ACID 交易是區域的區域。當交易確認時,在發生寫入的區域中,保證只有單元、一致、隔離以及持久性。區域表格複本的一致性模型語意與非複製表格的語意相同。區域表複本的一致性不是絕對的。絕對一致性是您執行讀取作業之單一區域的本機區域。將資料從寄件者區域複寫至接收者區域的讀取一律保持一致。
來自寄件者區域的寫入會在某個時間延遲內的所有接收者區域間進行複製。此時間延遲可跨多個區域複寫變更,包括從傳送者區域的區域表格複本接收資料所花費的時間,以及在接收者區域完成寫入作業所花費的時間。最後,接收者區域會從傳送者區域取得更新,接收者區域永遠不會錯過傳送者區域中發生的交易更新。所有區域表格複本最終都會收到寫入並變得持久。
複本延遲總覽
每當您在「全域作用中」表格執行寫入作業 (INSERT、UPDATE 或 DELETE) 時,將會以非同步方式跨多個區域複製變更。
也就是說,當您在寄件者區域中寫入資料列時,會在寄件者區域中完全執行寫入作業,而無須等待複本區域更新。網路延遲會在將變更複製到接收端區域時建立時間延遲。跨多個區域複製變更的延遲包括從複本接收寫入並將其套用至接收端區域所花費的時間。如果傳送方區域沒有表格的應用程式寫入,則服務會使用偵測機制來計算延遲的近似值,且延遲統計資料仍可在接收方區域中使用。
如需「複本延遲」測量結果的詳細資訊,請參閱複本延遲的詳細資訊。
建立「全域作用中」表格的簡介
建立「全域作用中」表格的處理作業會從建立單一表格開始,然後將它轉換成「全域作用中」表格
下面列出建立「全域作用中」表格的步驟。
-
建立單一表格。
-
將表格的綱要狀態從可變變更為已凍結。
-
決定您要新增表格區域複本的區域。新增區域複本時,系統會自動在讀取容量、寫入容量及儲存容量欄位中填入寄件者區域的對應值。您可以變更表格的讀取容量和寫入容量。
-
雲端服務會在接收者區域中建立表格。如果來源區域中的表格有資料,就會開始將資料從寄件者區域複製到接收者區域。當資料從寄件者區域複製到接收者區域時,初始化百分比會從 0 增加到 100。您可以在 OCI 主控台的表格資訊底下檢視初始化百分比的值,如下所示。在初始化程序完成之前,不允許在新區域表格複本中進行 DML 作業。
