功能差異:Amazon Keyspaces 與阿帕奇卡桑德拉 - Amazon Keyspaces (適用於 Apache Cassandra)

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

功能差異:Amazon Keyspaces 與阿帕奇卡桑德拉

以下是 Amazon Keyspaces 間和 Apache 卡桑德拉之間的功能差異。

阿帕奇卡桑德拉APIs,操作和數據類型

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

異步創建和刪除密鑰空間和表

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

身份驗證和授權

Amazon Keyspaces(阿帕奇卡桑德拉)使用 AWS Identity and Access Management (IAM)用於用戶身份驗證和授權,並支持等效的授權策略作為 Apache 卡桑德拉。因此,Amazon Keyspaces 不支持 Apache 卡桑德拉的安全配置命令。

批次

Amazon Keyspaces 支援未記錄的批次命令,批次中最多可提供 30 個命令。批次中只允許使用無條件INSERTUPDATE、或DELETE指令。不支援記錄的批次。

叢集組態

Amazon Keyspaces 是無伺服器的,因此無需設定叢集、主機或 Java 虛擬機器 (JVMs)。Cassandra 的壓縮,壓縮,緩存,垃圾收集和綻放過濾的設置不適用於 Amazon Keyspaces,如果指定將被忽略。

連線

您可以使用現有的 Cassandra 驅動程序與 Amazon Keyspaces 進行通信,但您需要以不同的方式配置驅動程序。Amazon Keyspaces 每秒每個TCP連線最多支援 3,000 個CQL查詢,但驅動程式可建立的連線數目沒有限制。

大多數開源卡桑德拉驅動程序建立了一個連接池卡桑德拉,並通過該連接池進行負載平衡查詢。Amazon Keyspaces 會向驅動程式公開 9 個對等 IP 位址,而大多數驅動程式的預設行為是建立與每個對等 IP 位址的單一連線。因此,使用預設設定的驅動程式的最大CQL查詢輸送量為每秒 27,000 個CQL查詢。

若要增加此數目,我們建議您增加驅動程式在其連線集區中維護的每個 IP 位址的連線數目。例如,將每個 IP 位址的最大連線數設定為 2,將驅動程式的最大輸送量加倍至每秒 54,000 個CQL查詢。

最佳做法是,我們建議將驅動程式設定為每個連線每秒使用 500 個CQL查詢,以允許額外負荷並改善散佈。在這個案例中,規劃每秒 18,000 個CQL查詢需要 36 個連線。針對 9 個端點的 4 個連線設定驅動程式,可提供 36 個連線,每秒執行 500 個要求。如需有關連線最佳作法的更多資訊,請參閱最佳化無伺服器環境的用戶端驅動程式連線

與VPC端點連線時,可用的端點可能較少。這表示您必須增加驅動程式組態中的連線數目。如需有關VPC連線最佳作法的更多資訊,請參閱如何透過 Amazon Keyspaces 中的VPC端點設定連線

IN關鍵字

Amazon Keyspaces 支持SELECT語句中的IN關鍵字。 IN與不支UPDATEDELETE。在SELECT陳述式中使用IN關鍵字時,會依照索引鍵在陳述SELECT式中呈現的順序傳回查詢結果。在卡桑德拉,結果按字母順序排序。

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

CQL查詢輸送量調整

Amazon Keyspaces 每秒每個TCP連線最多支援 3,000 個CQL查詢,但驅動程式可建立的連線數目沒有限制。

大多數開源卡桑德拉驅動程序建立了一個連接池卡桑德拉,並通過該連接池進行負載平衡查詢。Amazon Keyspaces 會向驅動程式公開 9 個對等 IP 位址,而大多數驅動程式的預設行為是建立與每個對等 IP 位址的單一連線。因此,使用預設設定的驅動程式的最大CQL查詢輸送量將是每秒 27,000 個CQL查詢。

若要增加此數目,我們建議您增加驅動程式在其連線集區中維護的每個 IP 位址的連線數目。例如,將每個 IP 位址的最大連線數設定為 2,會將驅動程式的最大輸送量增加一倍至每秒 54,000 個CQL查詢。

如需有關連線最佳作法的更多資訊,請參閱最佳化無伺服器環境的用戶端驅動程式連線

與VPC端點連線時,可用端點較少。這表示您必須增加驅動程式組態中的連線數目。如需VPC端點連線最佳做法的詳細資訊,請參閱如何透過 Amazon Keyspaces 中的VPC端點設定連線

FROZEN集合

Cassandra 中的FROZEN關鍵字序列化集合數據類型的多個組件成一個單一的不可變值,該值被視為一個。BLOB INSERTUPDATE陳述式會覆寫整個集合。

預設情況下,Amazon Keyspaces 最多支援五個層級的凍結集合。如需詳細資訊,請參閱Amazon Keyspaces 服務配額

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

當您使用具有用戶端時間戳記的凍結集合時,如果寫入作業的時間戳記與未過期或標記的現有資料行的時間戳記相同,Amazon Keyspace 不會執行比較。相反,它可以讓服務器確定最新的作家,最新的作家獲勝。

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

輕量型交易

Amazon Keyspaces(對於 Apache 卡桑德拉)完全支持比較和設置功能,和DELETE命令 INSERTUPDATE,這是所謂的輕量級交易(LWTs)在 Apache 卡桑德拉。作為無服務器產品,Amazon Keyspaces(適用於 Apache Cassandra)在任何規模下提供一致的性能,包括輕量級交易。使用 Amazon Keyspaces 時,使用輕量型交易不會造成效能損失。

負載平衡

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

分頁

Amazon Keyspaces 會根據其讀取來處理請求的資料列數,而不是結果集中傳回的資料列數來分頁結果。因此,某些頁面所包含的列數可能比您在篩選查PAGESIZE詢中指定的少。此外,Amazon Keyspaces 會在讀取 1 MB 的資料後自動分頁結果,為客戶提供一致的 10 毫秒讀取效能。如需詳細資訊,請參閱在 Amazon Keyspaces 中分頁結果

在具有靜態列的表中,Apache Cassandra 和 Amazon Keyspaces 在多頁查詢中的每個頁面的開頭建立分區的靜態列值。當表具有較大的數據行時,由於 Amazon Keyspaces 分頁行為的結果,範圍讀取操作結果可以為 Amazon Keyspaces 返回更多頁面的可能性比 Apache Cassandra 更高。因此,Amazon Keyspaces 的可能性較高,靜態資料行的並行更新可能導致靜態資料行值在讀取結果集的不同頁面中不同。

磁碟分割程式

Amazon Keyspaces 中的默認分區程序是卡桑德拉兼容。Murmur3Partitioner此外,您可以選擇使用 Amazon Keyspaces DefaultPartitioner 或卡桑德拉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 開源卡桑德拉驅動程序所需的系統表。用戶端可見的系統資料表包含已驗證使用者專屬的資訊。系統表由 Amazon Keyspaces 完全控制,並且是唯讀的。如需詳細資訊,請參閱Amazon Keyspaces 中的系統密鑰空間

系統表格的唯讀存取權是必要的,您可以IAM使用存取原則進行控制。如需詳細資訊,請參閱使用政策管理存取權。您必須針對系統表格定義以標籤為基礎的存取控制原則,視您是否使用 AWS SDK或卡桑德拉查詢語言(CQL)通過卡桑德拉驅動程序和開發人員工具API調用。若要進一步瞭解系統表格的標籤式存取控制,請參閱 基於標籤的 Amazon Keyspaces 資源訪問

如果您使用 Amazon VPC端點存取 Amazon Keyspaces,您會在system.peers表格中看到 Amazon Keyspaces 有權查看的每個 Amazon VPC 端點的項目。因此,您的 Cassandra 驅動程序可能會在表中發出有關控制節點本身的警告消息system.peers您可以放心地忽略此警告。

時間戳記

在 Amazon Keyspaces 間中,與 Apache Cassandra 中的默認時間戳兼容的單元格級時間戳是一種選擇加入功能。

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