功能差異:Amazon Keyspaces 與 Apache Cassandra - Amazon Keyspaces (適用於 Apache Cassandra)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

功能差異:Amazon Keyspaces 與 Apache Cassandra

以下是 Amazon Keyspaces 和 Apache Cassandra 之間的功能差異。

Apache Cassandra APIs、 操作和資料類型

Amazon Keyspaces 支援所有常用的 Cassandra 資料平面操作,例如建立金鑰空間和資料表、讀取資料和寫入資料。若要查看目前支援的項目,請參閱支援的 CassandraAPIs、操作、函數和資料類型

非同步建立和刪除鍵空間和資料表

Amazon Keyspaces 會執行資料定義語言 (DDL) 操作,例如以非同步方式建立和刪除金鑰空間、資料表和類型。若要了解如何監控資源的建立狀態,請參閱 檢查 Amazon 密鑰空間中的 Keyspaces 間創建狀態檢查 Amazon Keyspaces 中的表格創建狀態。如需CQL語言參考中的DDL陳述式清單,請參閱 DDL Amazon Keyspaces 中的 陳述式 (資料定義語言)

身分驗證和授權

Amazon Keyspaces (適用於 Apache Cassandra) 使用 AWS Identity and Access Management (IAM) 進行使用者身分驗證和授權,並支援與 Apache Cassandra 同等的授權政策。因此,Amazon Keyspaces 不支援 Apache Cassandra 的安全組態命令。

批次

Amazon Keyspaces 支援批次中最多 30 個命令的未記錄批次命令。批次中只允許無條件 UPDATEINSERTDELETE命令。不支援已記錄的批次。

叢集組態

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關鍵字。 UPDATEIN不支援 DELETE。在 SELECT 陳述式中使用IN關鍵字時,查詢的結果會依照SELECT陳述式中金鑰的顯示順序傳回。在 Cassandra 中,結果會以文字方式排序。

使用 時 ORDER BY,不支援使用停用分頁進行完整重新排序,並在頁面中排序結果。IN 關鍵字不支援配量查詢。IN關鍵字TOKENS不支援 。Amazon Keyspaces 會透過建立子查詢來使用IN關鍵字處理查詢。每個子查詢都算作每秒每個連線限制 3,000 個CQL查詢的TCP連線。如需詳細資訊,請參閱在 Amazon Keyspaces 查詢中使用IN運算符與SELECT語句

FROZEN 集合

Cassandra 中的FROZEN關鍵字會將集合資料類型的多個元件序列化為單一不可變值,該值被視為 BLOBINSERTUPDATE陳述式會覆寫整個集合。

根據預設,Amazon Keyspaces 最多支援 8 個層級的凍結集合巢狀化。如需詳細資訊,請參閱Amazon Keyspaces 服務配額

Amazon Keyspaces 不支援在條件式UPDATESELECT陳述式中使用整個凍結集合的不等式比較。Amazon Keyspaces 中集合和凍結集合的行為相同。

當您使用凍結集合搭配用戶端時間戳記時,如果寫入操作的時間戳記與未過期或已淘汰的現有資料欄的時間戳記相同,Amazon Keyspaces 不會執行比較。反之,它可讓伺服器判斷最新的寫入器,而最新的寫入器會獲勝。

如需凍結集合的詳細資訊,請參閱 集合類型

輕量型交易

Amazon Keyspaces (適用於 Apache Cassandra) 完全支援在 INSERTUPDATEDELETE命令上比較和設定功能,這些命令在 Apache Cassandra 中稱為輕量型交易 (LWTs)。Amazon Keyspaces (適用於 Apache Cassandra) 是無伺服器產品,可在任何規模提供一致的效能,包括輕量型交易。使用 Amazon Keyspaces 時,使用輕量型交易不會造成效能懲罰。

負載平衡

system.peers 資料表項目對應至 Amazon Keyspaces 負載平衡器。為了獲得最佳結果,我們建議您使用循環配置負載平衡政策,並調校每個 IP 的連線數,以符合應用程式的需求。

分頁

Amazon Keyspaces 會根據讀取處理請求的資料列數來分頁結果,而不是結果集中傳回的資料列數。因此,某些頁面可能包含的資料列可能少於您在 中PAGESIZE為篩選查詢指定的資料列。此外,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,您會看到 Amazon Keyspaces 有權查看的每個 Amazon VPC端點system.peers資料表中的項目。因此,您的 Cassandra 驅動程式可能會發出有關system.peers資料表中控制節點本身的警告訊息。您可以安全地忽略此警告。

時間戳記

在 Amazon Keyspaces 中,與 Apache Cassandra 中的預設時間戳記相容的儲存格層級時間戳記是一項選擇加入功能。

USING TIMESTAMP句和WRITETIME函數只有在資料表的用戶端時間戳記開啟時才能使用。若要進一步了解 Amazon Keyspaces 中的用戶端時間戳記,請參閱 Amazon Keyspaces 間中的客戶端時間戳

使用者定義的類型 (UDTs)

Amazon Keyspaces 不支援 UDTs的不等式運算子。

若要了解如何在 Amazon Keyspaces UDTs中使用 ,請參閱 Amazon Keyspaces 中的使用者定義類型 (UDTs)

若要檢閱每個金鑰空間UDTs支援多少個金鑰空間、支援的巢狀層級,以及與 相關的其他預設值和配額UDTs,請參閱 Amazon Keyspaces 中使用者定義類型 (UDTs) 的配額和預設值