使用 CQL 創建和管理多區域表 - Amazon Keyspaces (適用於 Apache Cassandra)

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

使用 CQL 創建和管理多區域表

您可以使用卡桑德拉查詢語言(CQL)創建和管理 Amazon Keyspaces 中的多區域密鑰空間和表。

本節提供如何使用 CQL 建立和管理多區域資料表的範例。您在多區域密鑰空間中創建的所有表都會自動從密鑰空間繼承多區域設置。如需有關 CQL 的詳細資訊,請參閱 Amazon Keyspaces CQL 語言參考。

如需有關支援的組態和功能的詳細資訊,請參閱Amazon Keyspaces 多區域複寫使用注意事項

建立多區域金鑰空間 (CQL)

若要建立多區域金鑰空間,請使用NetworkTopologyStrategy來指定要在 AWS 區域 其中複製金鑰空間的金鑰空間。您必須包括您目前的區域和至少一個額外的區域。下面的 CQL 語句就是這樣的一個例子。

CREATE KEYSPACE mykeyspace WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'us-east-1':'3', 'ap-southeast-1':'3','eu-west-1':'3' };

密鑰空間中的所有表都使用與密鑰空間相同的複製策略。您無法在資料表層級變更複寫策略。

NetworkTopologyStrategy— 每個區域的複寫係數為三 AWS 區域,因為 Amazon Keyspaces 預設會在同一個區域內的三個可用區域複寫資料。

注意

建立多區域金鑰空間時,Amazon Keyspaces space 會在您的帳戶中建立名稱AWSServiceRoleForAmazonKeyspacesReplication的服務連結角色。此角色可讓 Amazon Keyspaces 代表您將寫入複寫到多區域表格的所有複本。如需進一步了解,請參閱 使用角色進行 Amazon Keyspaces 多區域複寫

您可以使用 CQL 陳述式來查詢索引system_multiregion_info鍵空間中的tables資料表,以程式設計方式列出區域和您指定的多區域資料表的狀態。下面的代碼是這樣的一個例子。

SELECT * from system_multiregion_info.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

陳述式的輸出如下所示:

keyspace_name | table_name | region | status ----------------+----------------+----------------+-------- mykeyspace | mytable | us-east-1 | ACTIVE mykeyspace | mytable | ap-southeast-1 | ACTIVE mykeyspace | mytable | eu-west-1 | ACTIVE

使用默認設置(CQL)創建多區域表

若要使用預設設定建立多區域表格,您可以使用下列範例。

CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode':{ 'throughput_mode':'PAY_PER_REQUEST' }, 'point_in_time_recovery':{ 'status':'enabled' }, 'encryption_specification':{ 'encryption_type':'AWS_OWNED_KMS_KEY' }, 'client_side_timestamps':{ 'status':'enabled' } };

建立具有佈建容量模式和 auto 擴展 (CQL) 的多區域表

若要在佈建模式中建立具有 auto 擴展功能的多區域表格,您必須先CUSTOM_PROPERTIES為表格定義來指定容量模式。指定佈建的容量模式後,您可以使用來設定表格的 auto 調整設定AUTOSCALING_SETTINGS

如需有關 auto 擴展設定、目標追蹤原則、目標值和選用設定的詳細資訊,請參閱使用 CQL 建立具有自動調整比例的新資料表

建立多區域表格時,您也可以為表格的每個複本指定不同的讀取容量和讀取 auto 調整設定。您指定的設定會覆寫指定之表格的一般設定 AWS 區域。但是,寫入容量會在所有複本之間保持同步,以確保有足夠的容量可以跨所有區域複寫寫入。

若要定義特定區域中表格複本的讀取容量,您可以將下列參數設定為表格的一部分replica_updates

  • 區域

  • 佈建的讀取容量單位 (選用)

  • 讀取容量的自動縮放設定 (選用)

下列範例顯示佈建模式下多區域表格的CREATE TABLE陳述式。一般的寫入和讀取容量 auto 調整設定相同。但是,讀取 auto 縮放設定會指定 60 秒的額外冷卻時間,然後再擴展或縮減表格的讀取容量。此外,區域美國東部 (維吉尼亞北部) 的讀取容量 auto 調整設定高於其他複本的讀取容量自動調整設定。此外,目標值設定為 70%,而不是 50%。

CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 5, 'write_capacity_units': 5 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } }, 'replica_updates': { 'us-east-1': { 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 20, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 70 } } } } } };

更新多區域表格 (CQL) 的佈建容量和 auto 擴展設定

您可以使ALTER TABLE用更新現有表格的容量模式和 auto 調整設定。如果您要更新目前處於隨選容量模式的資料表,則需要capacity_mode這項功能。如果您的表格已經處於佈建容量模式,則可以省略此欄位。

如需有關 auto 擴展設定、目標追蹤原則、目標值和選用設定的詳細資訊,請參閱使用 CQL 建立具有自動調整比例的新資料表

在相同的陳述式中,您也可以更新資料表的replica_updates屬性,更新特定區域中資料表複本的讀取容量和 auto 調整設定。下面的語句是這樣的一個例子。

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } }, 'replica_updates': { 'us-east-1': { 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 20, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 70 } } } } } };

檢視多區域表格 (CQL) 的佈建容量和 auto 調整設定

若要檢視多區域表格的 auto 調整比例組態,請使用下列指令。

SELECT * FROM system_multiregion_info.autoscaling WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

此命令的輸出如下所示:

keyspace_name | table_name | region | provisioned_read_capacity_autoscaling_update | provisioned_write_capacity_autoscaling_update ----------------+------------+----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- mykeyspace | mytable | ap-southeast-1 | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}} mykeyspace | mytable | us-east-1 | {'minimum_units': 5, 'maximum_units': 20, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 70, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}} mykeyspace | mytable | eu-west-1 | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}}

關閉多區域表格 (CQL) 的 auto 調整

您可以使用ALTER TABLE來關閉現有表格的 auto 縮放比例。請注意,您無法關閉個別表格複本的 auto 調度資源調整功能。

在下列範例中,表格讀取容量的 auto 調整功能已關閉。

ALTER TABLE mykeyspace.mytable WITH AUTOSCALING_SETTINGS = { 'provisioned_read_capacity_autoscaling_update': { 'autoscaling_disabled': true } };
注意

若要刪除應用 Application Auto Scaling 所使用的服務連結角色,您必須停用帳戶中所有資料表的自動調整功能。 AWS 區域

手動設定多區域表格的佈建容量 (CQL)

如果您必須關閉多區域表格的 auto 動調整規模,您可以使用ALTER TABLE手動為複本表格佈建表格的讀取容量。

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 }, 'replica_updates': { 'us-east-1': { 'read_capacity_units': 2 } } };
注意

我們建議對使用佈建容量的多區域表格使用 auto 擴展。如需更多詳細資訊,請參閱 使用 Amazon Keyspaces 中的多區域表