本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
功能差異:Amazon Keyspaces 與 Apache Cassandra
以下是 Amazon Keyspaces 和 Apache Cassandra 之間的功能差異。
主題
Apache Cassandra APIs、操作和資料類型
Amazon Keyspaces 支援所有常用的 Cassandra 資料平面操作,例如建立金鑰空間和資料表、讀取資料和寫入資料。若要查看目前支援的項目,請參閱支援的 Cassandra APIs、操作、函數和資料類型。
非同步建立和刪除鍵空間和資料表
Amazon Keyspaces 會執行資料定義語言 (DDL) 操作,例如非同步建立和刪除金鑰空間、資料表和類型。若要了解如何監控資源的建立狀態,請參閱 檢查 Amazon Keyspaces 中的金鑰空間建立狀態和 檢查 Amazon Keyspaces 中的資料表建立狀態。如需 CQL 語言參考中的 DDL 陳述式清單,請參閱 Amazon Keyspaces 中的 DDL 陳述式 (資料定義語言)。
身分驗證和授權
Amazon Keyspaces (適用於 Apache Cassandra) 使用 AWS Identity and Access Management (IAM) 進行使用者身分驗證和授權,並支援與 Apache Cassandra 同等的授權政策。因此,Amazon Keyspaces 不支援 Apache Cassandra 的安全組態命令。
批次
Amazon Keyspaces 支援批次中最多 30 個命令的未記錄批次命令。批次中只允許無條件 UPDATE、 INSERT或 DELETE命令。不支援已記錄的批次。
叢集組態
Amazon Keyspaces 是無伺服器,因此沒有叢集、主機或 Java 虛擬機器 (JVMs) 可設定。Cassandra 的壓縮、壓縮、快取、垃圾收集和花粉篩選設定不適用於 Amazon Keyspaces,如果指定,則會予以忽略。
連線
您可以使用現有的 Cassandra 驅動程式與 Amazon Keyspaces 通訊,但您需要以不同的方式設定驅動程式。Amazon Keyspaces 每秒支援每個 TCP 連線最多 3,000 個 CQL 查詢,但驅動程式可以建立的連線數量沒有限制。
大多數開放原始碼 Cassandra 驅動程式會建立與 Cassandra 的連線集區,並透過該連線集區載入平衡查詢。Amazon Keyspaces 向驅動程式公開 9 個對等 IP 地址,大多數驅動程式的預設行為是建立與每個對等 IP 地址的單一連線。因此,使用預設設定的驅動程式 CQL 查詢輸送量上限為每秒 27,000 個 CQL 查詢。
若要增加此數字,建議您增加驅動程式在其連線集區中維護的每個 IP 地址的連線數量。例如,將每個 IP 地址的最大連線數設定為 2,將驅動程式的最大傳輸量加倍至每秒 54,000 個 CQL 查詢。
最佳實務是,建議設定驅動程式以使用每個連線每秒 500 個 CQL 查詢,以允許額外負荷並改善分佈。在此案例中,規劃每秒 18,000 個 CQL 查詢需要 36 個連線。將驅動程式設定為 9 個端點的 4 個連線,可提供每秒執行 500 個請求的 36 個連線。如需連線最佳實務的詳細資訊,請參閱最佳化無伺服器環境的用戶端驅動程式連線。
與 VPC 端點連線時,可用的端點可能較少。這表示您必須增加驅動程式組態中的連線數量。如需 VPC 連線最佳實務的詳細資訊,請參閱如何在 Amazon Keyspaces 中透過 VPC 端點設定連線。
IN
關鍵字
Amazon Keyspaces 支援 SELECT
陳述式中的IN
關鍵字。 UPDATE
和 IN
不支援 DELETE
。在 SELECT
陳述式中使用IN
關鍵字時,查詢的結果會依照在SELECT
陳述式中顯示金鑰的順序傳回。在 Cassandra 中,結果會以文字方式排序。
使用 時 ORDER BY
,不支援使用停用分頁進行完整重新排序,並在頁面中排序結果。IN
關鍵字不支援配量查詢。IN
關鍵字TOKENS
不支援 。Amazon Keyspaces 會透過建立子查詢來使用IN
關鍵字處理查詢。每個子查詢都算作每個 TCP 連線每秒限制 3,000 個 CQL 查詢的連線。如需詳細資訊,請參閱在 Amazon Keyspaces 的查詢中使用 IN運算子搭配 SELECT陳述式。
FROZEN
集合
Cassandra 中的FROZEN
關鍵字會將集合資料類型的多個元件序列化為單一不可變值,該值被視為 BLOB
。 INSERT
和 UPDATE
陳述式會覆寫整個集合。
根據預設,Amazon Keyspaces 最多支援 8 個層級的巢狀處理,以用於凍結集合。如需詳細資訊,請參閱Amazon Keyspaces 服務配額。
Amazon Keyspaces 不支援在條件式UPDATE
或SELECT
陳述式中使用整個凍結集合的不等式比較。Amazon Keyspaces 中集合和凍結集合的行為相同。
當您使用凍結集合搭配用戶端時間戳記時,如果寫入操作的時間戳記與未過期或已淘汰的現有資料欄時間戳記相同,Amazon Keyspaces 不會執行比較。反之,它可讓伺服器判斷最新的寫入器,而最新的寫入器會獲勝。
如需凍結集合的詳細資訊,請參閱集合類型。
輕量型交易
Amazon Keyspaces (適用於 Apache Cassandra) 完全支援在 INSERT、 UPDATE和 DELETE命令上比較和設定功能,這稱為 Apache Cassandra 中的輕量型交易 (LWTs)。Amazon Keyspaces (適用於 Apache Cassandra) 是無伺服器產品,可在任何規模提供一致的效能,包括輕量型交易。使用 Amazon Keyspaces 時,使用輕量型交易不會造成效能懲罰。
負載平衡
system.peers
資料表項目對應至 Amazon Keyspaces 負載平衡器。為了獲得最佳結果,我們建議您使用循環配置負載平衡政策,並調校每個 IP 的連線數,以符合應用程式的需求。
分頁
Amazon Keyspaces 會根據讀取處理請求的資料列數來分頁結果,而不是結果集中傳回的資料列數。因此,某些頁面可能包含的資料列可能少於您在 PAGE SIZE 中為篩選查詢指定的資料列。此外,Amazon Keyspaces 會在讀取 1 MB 的資料後自動分頁結果,為客戶提供一致的單位數毫秒讀取效能。如需詳細資訊,請參閱在 Amazon Keyspaces 中分頁結果。
在具有靜態資料欄的資料表中,Apache Cassandra 和 Amazon Keyspaces 都會在多頁查詢中每個頁面的開頭建立分割區的靜態資料欄值。當資料表具有大型資料列時,由於 Amazon Keyspaces 分頁行為,範圍讀取操作結果傳回 Amazon Keyspaces 頁面的可能性會高於 Apache Cassandra。因此,Amazon Keyspaces 中同時更新靜態資料欄的可能性較高,可能會導致範圍讀取結果集的不同頁面中的靜態資料欄值不同。
分割區
Amazon Keyspaces 中的預設分割區是與 Cassandra 相容的 Murmur3Partitioner
。此外,您可以選擇使用 Amazon Keyspaces DefaultPartitioner
或 Cassandra 相容 RandomPartitioner
。
使用 Amazon Keyspaces,您可以安全地變更帳戶的分割區,而無需重新載入 Amazon Keyspaces 資料。組態變更完成後,大約需要 10 分鐘,用戶端下次連線時會自動看到新的分割區設定。如需詳細資訊,請參閱在 Amazon Keyspaces 中使用分割區。
已準備的陳述式
Amazon Keyspaces 支援將準備好的陳述式用於資料處理語言 (DML) 操作,例如讀取和寫入資料。Amazon Keyspaces 目前不支援將準備好的陳述式用於資料定義語言 (DDL) 操作,例如建立資料表和金鑰空間。DDL 操作必須在預備陳述式之外執行。
刪除範圍
Amazon Keyspaces 支援刪除範圍內的資料列。範圍是分割區內一組連續的資料列。您可以使用 WHERE 子句在 DELETE 操作中指定範圍。您可以指定範圍為整個分割區。
此外,您可以使用關聯運算子 (例如,'>'、'<'),或包含分割區索引鍵並省略一或多個叢集資料欄,來指定範圍為分割區內連續資料列的子集。使用 Amazon Keyspaces,您可以在單一操作中刪除範圍內最多 1,000 個資料列。
範圍刪除不會隔離。正在進行範圍刪除時,其他操作可以看到個別的資料列刪除。
系統表
Amazon Keyspaces 會填入 Apache 2.0 開放原始碼 Cassandra 驅動程式所需的系統資料表。用戶端可見的系統資料表包含已驗證使用者唯一的資訊。系統資料表完全由 Amazon Keyspaces 控制,且為唯讀。如需詳細資訊,請參閱Amazon Keyspaces 中的系統金鑰空間。
系統資料表的唯讀存取權是必要的,您可以使用 IAM 存取政策來控制它。如需詳細資訊,請參閱使用政策管理存取權。您必須根據透過 Cassandra 驅動程式和開發人員工具使用 AWS SDK 或 Cassandra 查詢語言 (CQL) API 呼叫,以不同的方式定義系統資料表的標籤型存取控制政策。若要進一步了解系統資料表的標籤型存取控制,請參閱 根據標籤的 Amazon Keyspaces 資源存取。
如果您使用 Amazon VPC 端點存取 Amazon Keyspaces,您會在system.peers
資料表中看到 Amazon Keyspaces 有權查看的每個 Amazon VPC 端點的項目。因此,您的 Cassandra 驅動程式可能會發出有關system.peers
資料表中控制節點本身的警告訊息。您可以安全地忽略此警告。
時間戳記
在 Amazon Keyspaces 中,與 Apache Cassandra 中的預設時間戳記相容的儲存格層級時間戳記是一項選擇加入功能。
子USING TIMESTAMP
句和WRITETIME
函數只有在資料表的用戶端時間戳記開啟時才能使用。若要進一步了解 Amazon Keyspaces 中的用戶端時間戳記,請參閱 Amazon Keyspaces 中的用戶端時間戳記。
使用者定義的類型 (UDTs)
Amazon Keyspaces 中的 UDTs 不支援不等式運算子。
若要了解如何在 UDTs,請參閱 Amazon Keyspaces 中的使用者定義類型 (UDTs)。
若要檢閱每個金鑰空間支援的 UDTs 數量、支援的巢狀層級,以及其他與 UDTs 相關的預設值和配額,請參閱 Amazon Keyspaces 中使用者定義類型 (UDTs) 的配額和預設值。