從 Apache Cassandra 遷移至 Bigtable
本文將逐步說明如何將資料從 Apache Cassandra 遷移至 Bigtable,並將中斷情況降至最低。本文說明如何使用開放原始碼工具 (例如 Cassandra to Bigtable Proxy 介面卡或適用於 Java 的 Cassandra to Bigtable 用戶端) 執行遷移作業。開始之前,請務必先熟悉適用於 Cassandra 使用者的 Bigtable。
選擇遷移方法
您可以採用下列其中一種做法,從 Apache Cassandra 遷移至 Bigtable:
- Cassandra to Bigtable Proxy Adapter 可讓您將以 Cassandra 為基礎的應用程式連線至 Bigtable,不必變更 Cassandra 驅動程式。如果應用程式只需要稍微修改程式碼,就很適合採用這種方法。
- 適用於 Java 的 Cassandra to Bigtable 用戶端可讓您直接與 Bigtable 整合,並取代 Cassandra 驅動程式。這種做法非常適合需要高效能和彈性的應用程式。
Cassandra 至 Bigtable 代理伺服器介面卡
透過 Cassandra to Bigtable Proxy 介面卡,您可以將以 Cassandra 為基礎的應用程式連線至 Bigtable。Proxy 介面卡可做為與線路相容的 Cassandra 介面,讓應用程式使用 CQL 與 Bigtable 互動。使用 Proxy 介面卡時,您不必變更 Cassandra 驅動程式,設定調整幅度也很小。
如要設定及設定 Proxy 轉接程式,請參閱「Cassandra to Bigtable proxy adapter」。
如要瞭解哪些 Cassandra 版本支援 Proxy Adapter,請參閱「支援的 Cassandra 版本」。
限制
Cassandra 至 Bigtable 代理程式轉接程式僅支援特定資料類型、函式、查詢和子句。
詳情請參閱「Cassandra to Bigtable Proxy - Limitations」。
Cassandra 鍵空間
Cassandra keyspace 會儲存資料表,並以類似 Bigtable 執行個體的方式管理資源。Cassandra 到 Bigtable 的 Proxy 配接器會以透明方式處理鍵空間命名,因此您可以使用相同的鍵空間進行查詢。不過,您必須建立新的 Bigtable 執行個體,才能以邏輯方式將資料表分組。您也必須另外設定 Bigtable 複製功能。
DDL 支援
Cassandra to Bigtable Proxy 配接器支援資料定義語言 (DDL) 作業。您可以使用 DDL 作業,透過 CQL 指令直接建立及管理資料表。建議您採用這種方式設定結構定義,因為這與 SQL 類似,但您不需要在設定檔中定義結構定義,然後執行指令碼來建立資料表。
以下範例說明 Cassandra to Bigtable Proxy 配接器如何支援 DDL 作業:
如要使用 CQL 建立 Cassandra 資料表,請執行
CREATE TABLE指令:CREATE TABLE keyspace.table ( id bigint, name text, age int, PRIMARY KEY ((id), name) );如要在表格中新增資料欄,請執行
ALTER TABLE指令:ALTER TABLE keyspace.table ADD email text;如要刪除資料表,請執行
DROP TABLE指令:DROP TABLE keyspace.table;
詳情請參閱「DDL Support for Schema Creation (Recommended Method)」。
支援 DML
Cassandra 至 Bigtable 的 Proxy 轉接程式支援資料操作語言 (DML) 作業,例如 INSERT、DELETE、UPDATE 和 SELECT。
如要執行原始 DML 查詢,除了數值以外的所有值都必須加上單引號,如下列範例所示:
SELECT * FROM keyspace.table WHERE name='john doe';INSERT INTO keyspace.table (id, name) VALUES (1, 'john doe');
實現零停機時間遷移
您可以搭配使用 Cassandra to Bigtable Proxy 配接器、開放原始碼的 Zero Downtime Migration (ZDM) Proxy 工具和 Cassandra 資料遷移工具,以最短的停機時間遷移資料。
下圖顯示使用 Proxy 配接器從 Cassandra 遷移至 Bigtable 的步驟:
如要將 Cassandra 遷移至 Bigtable,請按照下列步驟操作:
- 將 Cassandra 應用程式連線至 ZDM 代理工具。
- 啟用對 Cassandra 和 Bigtable 的雙重寫入。
- 使用 Cassandra 資料遷移工具大量移動資料。
- 驗證遷移作業。驗證完成後,即可終止與 Cassandra 的連線,並直接連線至 Bigtable。
將 Proxy 轉接器與 ZDM Proxy 工具搭配使用時,支援下列遷移功能:
- 雙重寫入:在遷移期間維持資料可用性
- 非同步讀取:擴大及壓力測試 Bigtable 執行個體
- 自動驗證及回報資料:確保整個程序中的資料完整性
- 資料對應:對應欄位和資料類型,以符合製作標準
如要練習將 Cassandra 遷移至 Bigtable,請參閱「使用雙重寫入 Proxy 從 Cassandra 遷移至 Bigtable」程式碼研究室。
適用於 Java 的 Cassandra 至 Bigtable 用戶端
您可以直接與 Bigtable 整合,並取代 Cassandra 驅動程式。透過適用於 Java 的 Cassandra 至 Bigtable 用戶端程式庫,您可以使用 CQL 將以 Cassandra 為基礎的 Java 應用程式與 Bigtable 整合。
如需建構程式庫,以及在應用程式程式碼中加入依附元件的操作說明,請參閱「適用於 Java 的 Cassandra to Bigtable 用戶端」。
以下範例說明如何使用 Java 適用的 Cassandra to Bigtable 用戶端設定應用程式:
瞭解效能
Bigtable 專為高處理量、低延遲和大規模擴充性而設計。這項服務每秒可處理數百萬個要求,資料量可達 PB 級。使用 Cassandra to Bigtable Java 用戶端或 Cassandra to Bigtable Proxy Adapter 從 Cassandra 遷移時,請瞭解下列效能影響:
用戶端和 Proxy 負擔
這兩種遷移方式的效能負擔都很小。這些代理程式可做為 Cassandra Query Language (CQL) 與 Bigtable Data API 之間的轉譯層,並經過最佳化,可提升效率。
使用 Cassandra 集合類型時的效能
如果 Cassandra 資料模型使用對應、集合或清單等集合型別來實作動態結構定義,Bigtable 就能有效處理這些模式。Java 適用的 Proxy 配接器和用戶端都會將這些集合作業對應至 Bigtable 的基礎資料模型,非常適合用於稀疏和寬廣的資料集。
這些集合中的元素層級作業效率極高。包括下列動作:
- 讀取或寫入對應中的單一值。
- 在集合中新增或移除元素。
- 將元素附加或前置於清單。
Bigtable 會針對個別集合元素最佳化這類點運算,效能與標準純量資料欄的運算相同。
為工作負載執行基準測試
Bigtable 的效能會因工作負載、結構定義設計、資料存取模式和叢集設定而異。如要取得準確的使用情況效能指標,並確保 Bigtable 符合特定需求,建議您使用其中一種遷移方法,針對 Bigtable 基準測試 Cassandra 工作負載。
如要進一步瞭解 Bigtable 效能最佳做法,請參閱「瞭解效能」。
其他 Cassandra 開放原始碼工具
由於 Cassandra 到 Bigtable 代理伺服器配接器與 CQL 的線路相容性,您可以在 Cassandra 開放原始碼生態系統中使用其他工具。這些工具包括:
- Cqlsh: 透過 Proxy 轉接程式,CQL Shell 可讓您直接連線至 Bigtable。您可以使用 CQL 進行偵錯及快速查詢資料。
- Cassandra 資料遷移工具 (CDM): 這項工具以 Spark 為基礎,適合遷移大量 (最多數十億列) 歷來資料。這項工具提供驗證、差異報表和重播功能,且與 Proxy 轉接程式完全相容。