記憶體內層總覽
記憶體內層級是叢集層級設定,會使用專用節點。閱讀本頁面之前,請先瞭解執行個體、叢集和節點。我們也建議您熟悉限制。
Bigtable 記憶體內層是 Bigtable 節點中的整合式記憶體層,可根據存取模式和效能需求,透過單一 API 順暢且符合成本效益地分層資料。Bigtable 記憶體內層採用遠端直接記憶體存取 (RDMA),可大幅縮短回應時間、減少資源使用率不均的情形,並確保對延遲時間敏感的資料享有高處理量。詳情請參閱「瞭解效能」。
記憶體內級別的使用時機
建議您在下列用途啟用記憶體內層:
- 延遲時間要求小於 1 毫秒:讀取延遲時間必須小於 1 毫秒的工作負載,通常會透過在資料庫前端採用自行管理的快取解決方案來解決。
- 高處理量點讀取:應用程式對特定資料子集有高讀取流量處理量需求。
- 熱點緩解:高處理量工作負載,可能包含流量高峰或特定資料列索引鍵上的熱點。
- 成本最佳化:將大量讀取作業卸載至更具成本效益的記憶體內層,減少 Bigtable 節點數量。
記憶體內層的運作方式
記憶體內層級支援由混合型儲存空間節點提供。這些專用節點可擴充 Bigtable 的運算和儲存空間分解功能,納入可垂直擴充處理量的記憶體層。Bigtable 最多可能需要 30 分鐘,才能佈建專門的記憶體內層節點。在這段期間,Bigtable 會繼續提供永久儲存空間的流量。
您可以在叢集層級啟用記憶體內層。
記憶體內層的運作方式如下:
- 取得記憶體層中的資料:記憶體內層提供讀取快取行為。資料列會透過您為記憶體內層設定的應用程式設定檔,進入記憶體層並執行讀取作業。如果資料列已在記憶體內層,任何應用程式設定檔的寫入作業都會更新記憶體層。
- 淘汰和撤銷政策:記憶體內層級會在資料列層級採用最近最少使用 (LRU) 淘汰政策,並套用存留時間 (TTL) 撤銷政策,盡可能提高記憶體內層級命中率。
- Negative caching:記憶體內層會記住資源是否遺失一段時間,以防止後端超載。
- 安全性:記憶體內層支援靜態資料加密和傳輸中資料加密 (TLS)。
- 複製:在多叢集執行個體中,不同叢集的記憶體層級不會同步。由於每個記憶體層級會根據收到的讀取流量,獨立決定要將哪些資料載入記憶體,因此不同叢集的記憶體層級可能含有不同的資料列索引鍵。Bigtable 會從本機叢集的 SSD 層將資料載入記憶體。寫入資料列後,系統最終會根據最終一致性的標準 Bigtable 複製模型,在所有記憶體層級中更新該資料列。
- 垂直自動調度資源:記憶體內層支援節點層級的垂直自動調度資源,可與 Bigtable 自動調度資源搭配使用。
記憶體內層經過最佳化,可高效能存取目前資料。為了維持這項效能,記憶體層級只會保留資料列的最新時間戳記版本。如果要求的是舊版資料 (也稱為歷來儲存格),系統會自動略過記憶體層級,並從永久儲存空間提供資料。
資料一致性
Bigtable 可確保記憶體內層資料與 SSD 或不常存取儲存空間層的永久資料一致。這種混合架構可讓 Bigtable 在所有儲存層級提供一致的儲存模型,無論資料實際位於 RAM 還是永久儲存空間,您都能透過相同的語意介面存取資料。啟用 Bigtable 記憶體內層後,您可以在叢集層級保留讀取寫入一致性。
垂直資源調度
啟用記憶體內層後,每個節點都能使用垂直資源調度功能,修改記憶體內層的處理量。啟用記憶體內層級後,每個節點的基礎容量為每秒 40,000 次讀取。為因應點讀取流量激增,節點可以自動調度資源,每秒最多可增加 40,000 次讀取,每個節點每秒最多可達 120,000 次讀取。
這項垂直資源調度功能與 Bigtable 自動調度資源功能整合。如果叢集中所有節點的記憶體內層容量達到上限,且已啟用自動調度資源功能,Bigtable 會自動佈建額外節點,進一步提高記憶體內層處理量。
節點的垂直調度資源功能只適用於記憶體內層每秒讀取次數,無論是否啟用叢集層級自動調度資源功能,都能正常運作。如果垂直資源調度超過每秒 40,000 次讀取的基本用量,則會將節點每小時費用乘以調節係數來計費。詳情請參閱定價和限制。
限制
記憶體內層級有下列限制:
- 記憶體內層需要 SSD 儲存空間。
- 記憶體內層級僅支援單一資料列層級點讀取作業。
- 記憶體內層不提供資料掃描,也不支援 SQL 查詢。
- 記憶體內層應用程式設定檔僅支援單一叢集轉送。
- 記憶體內層級會將資料列大小限制為每個資料列索引鍵 1 MiB。Bigtable 會從永久儲存空間讀取超過這項限制的資料列。
記憶體內層級需要下列版本的 Bigtable 用戶端程式庫:
- Java 2.77.0 以上版本
- BOM 26.80.0 以上版本
- Go 1.52.0 以上版本
不支援其他用戶端程式庫。
如果叢集已啟用客戶自行管理的加密金鑰 (CMEK),則不支援記憶體內層級。
記憶體內層的每個叢集最多只能有 10 個節點。
後續步驟
- 瞭解如何啟用記憶體內層