Apache Cassandra 作為交易性資料庫的演進與實踐

引言

Apache Cassandra 作為一種高可用、可擴展的分散式資料庫,長期以來以無領導者架構與強一致性模型著稱。然而,其傳統設計在處理交易性需求時存在諸多限制,例如模式變更困難、跨分片事務限制與參照完整性缺失等。近年來,Apache Foundation 推出 Cassandra Track,透過引入交易性元數據、分佈式事務與存儲附加索引等創新技術,逐步將 Cassandra 擴展為支援嚴格可串行隔離(Strict Serializable Isolation)的交易性資料庫。本文將深入解析其技術演進與應用實踐。

技術定義與核心特性

交易性資料庫的定義

交易性資料庫(Transactional Database)需符合 ACID 屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)與持久性(Durability)。傳統 Cassandra 透過 Lightweight Transactions(LWT)實現部分交易語義,但其跨分片事務限制與缺乏參照完整性機制,使其難以直接支援複雜業務邏輯。Cassandra Track 的目標是透過技術創新,使 Cassandra 支援完整的交易性語義。

核心改進技術

  1. 交易性元數據(Transactional Metadata)

    • 以 Paxos 協議取代 Gossip 協議,建立串列化日誌(Serialized Log)確保集群狀態變更的順序性與一致性。
    • 引入 Epoch 值管理集群狀態,所有節點協調後更新 Epoch,避免狀態分歧。
    • 支援交易性 DDL(如 CREATE TABLEDROP TABLE),確保模式變更快速且同步。
  2. 分佈式事務(Distributed Transactions)

    • 支援跨表格、跨分片事務,解決單分片事務限制。
    • 提供嚴格可串行隔離(Strict Serializable Isolation),允許開發者設計符合業務邏輯的資料模型。
    • 支援多區域拓撲(Multi-Region),交易可於任一區域啟動,無需指定主區域。
  3. 存儲附加索引(Storage-Attached Indexes, SII)

    • 索引與資料共存於同一節點,避免分散式索引的複雜性。
    • 支援列索引與前綴查詢,提升結構化資料查詢效率。
    • 用於文件類型查詢(如 SELECT * FROM files WHERE file_type = 'text')。

實際應用案例:類似文件系統的資料庫

資料模型設計

  • 三個表格:usersfoldersfiles,均啟用交易性模式(transactional_mode = 'f')。
  • 使用 SII 索引 file_type 支援類型查詢。

交易性操作

  • 插入數據

    • 檢查用戶是否存在(SELECT 並存儲至變數 existing_user)。
    • 若不存在,插入用戶、文件夾與文件(INSERT)。
    • 使用 BEGIN TRANSACTION、條件判斷(IF)與 COMMIT 確保原子性。
  • 刪除數據

    • 交易性刪除用戶、文件夾與文件,確保參照完整性(Referential Integrity)。

查詢驗證

  • 使用 SII 索引查詢特定類型文件(如 SELECT * FROM files WHERE file_type = 'jpeg')。

技術優勢與挑戰

優勢

  • 提升易用性與安全性:交易性 DDL 與分佈式事務使 Cassandra 更易支援複雜業務邏輯。
  • 產業影響:成為唯一支援 PB 級資料、嚴格可串行隔離、跨雲端部署的分散式資料庫。
  • 性能優化:Taxus B2 實現使交易性元數據性能為原 LWT 實現的兩倍,並支援單回合通信(Single Round Trip)。

挑戰

  • 跨分片事務的協調成本:即使 V2 版本改善至 2 個回合,仍需處理多節點通信與狀態同步。
  • 索引功能的限制:二次索引(Secondary Index)功能不完整,需依賴 SII 來提升查詢效率。
  • 交易模式的選擇:需根據業務需求平衡一致性與效能,例如避免跨分區寫入以降低協調負載。

未來改進方向

  1. 交易性 DDL 的線性收斂:確保模式變更(CREATE TABLEDROP TABLE)支援 Liquibase 等工具,並透過 Epoch 值管理表格版本。
  2. 跨表格與分片事務的簡化:減少應用層狀態機(State Machine)的複雜性,提升開發效率。
  3. 自動化外鍵約束:未來可能支援自動化外鍵機制,進一步強化參照完整性。
  4. 性能優化:測試交易涉及的鍵集合規模,優化多條件(Multiple Predicates)的交易邏輯,並支援多結果集查詢(Multi-Result Select)。

總結

Apache Cassandra 透過交易性元數據、分佈式事務與存儲附加索引等技術,逐步實現從非交易性資料庫向交易性資料庫的轉型。其核心價值在於提供嚴格可串行隔離、跨分片事務支援與高效索引機制,使開發者能以類似 SQL 的資料管理體驗處理 PB 級資料。未來,隨著交易性 DDL 與自動化外鍵約束的完善,Cassandra 將進一步強化其在高一致性場景(如金融交易)的應用價值。