

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

# Keyspaces
<a name="cql.ddl.keyspace"></a>

與一或多個應用程式相關的*鍵空間*群組相關資料表。在關聯式資料庫管理系統 (RDBMS) 方面，金鑰空間大致類似於資料庫、資料表空間或類似建構。

**注意**  
在 Apache Cassandra 中，金鑰空間會決定如何在多個儲存節點之間複寫資料。不過，Amazon Keyspaces 是一項全受管服務：其儲存層的詳細資訊會代表您管理。因此，Amazon Keyspaces 中的鍵空間僅為邏輯建構，與基礎實體儲存無關。

如需 Amazon Keyspaces 金鑰空間配額限制和限制的相關資訊，請參閱 [Amazon Keyspaces 配額 （適用於 Apache Cassandra)](quotas.md)。

**Topics**
+ [建立 KEYSPACE](#cql.ddl.keyspace.create)
+ [ALTER KEYSPACE](#cql.ddl.keyspace.alter)
+ [DROP KEYSPACE](#cql.ddl.keyspace.drop)
+ [USE](#cql.ddl.keyspace.use)

## 建立 KEYSPACE
<a name="cql.ddl.keyspace.create"></a>

使用 `CREATE KEYSPACE`陳述式建立新的金鑰空間。

**語法**

```
create_keyspace_statement ::= 
    CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name
    WITH options
```

其中：
+ `keyspace_name` 是要建立的金鑰空間名稱。
+ *選項*是下列一或多個項目：
  + `REPLICATION` – 表示金鑰空間複寫策略的映射：
    + `SingleRegionStrategy` – 適用於單一區域金鑰空間。(必要)
    + `NetworkTopologyStrategy` – 指定至少兩個 AWS 區域。每個區域的複寫係數為 3。(選用)
  + `DURABLE_WRITES` – 寫入 Amazon Keyspaces 一律耐用，因此不需要此選項。不過，如果指定，則值必須為 `true`。
  + `TAGS` – 建立時要附加至資源的鍵/值對標籤清單。(選用)

**範例**

建立金鑰空間，如下所示。

```
CREATE KEYSPACE my_keyspace
    WITH REPLICATION = {'class': 'SingleRegionStrategy'} and TAGS ={'key1':'val1', 'key2':'val2'} ;
```

若要建立多區域金鑰空間，請指定`NetworkTopologyStrategy`並包含至少兩個 AWS 區域。每個區域的複寫係數為 3。

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

## ALTER KEYSPACE
<a name="cql.ddl.keyspace.alter"></a>

您可以使用下列*選項*的 `ALTER KEYSPACE WITH`陳述式
+ `REPLICATION` – 使用此選項將新 AWS 區域 複本新增至金鑰空間。您可以將新區域新增至單一區域或多區域金鑰空間。
+ `TAGS` – 使用此選項從鍵空間新增或移除標籤。

**語法**

```
alter_keyspace_statement ::= 
    ALTER KEYSPACE keyspace_name
    WITH options
```

其中：
+ `keyspace_name` 是要變更的金鑰空間名稱。
+ *選項*為下列其中一項：
  + `ADD | DROP TAGS` – 要從鍵空間新增或移除的鍵值對標籤清單。
  + `REPLICATION` – 表示金鑰空間複寫策略的映射；
    + `class`– 將金鑰空間`NetworkTopologyStrategy`定義為多區域金鑰空間。
    + `region`– AWS 區域 為此金鑰空間指定一個額外的 。每個區域的複寫係數為 3。
    + `CLIENT_SIDE_TIMESTAMPS` – 預設值為 `DISABLED`。您只能將狀態變更為 `ENABLED`。

**範例**

修改金鑰空間，如下列範例所示，以新增標籤。

```
ALTER KEYSPACE my_keyspace ADD TAGS {'key1':'val1', 'key2':'val2'};
```

若要將第三個區域新增至多區域金鑰空間，您可以使用下列陳述式。

```
ALTER KEYSPACE my_keyspace
WITH REPLICATION = {
    'class': 'NetworkTopologyStrategy',
    'us-east-1': '3',
    'us-west-2': '3',
    'us-west-1': '3'
} AND CLIENT_SIDE_TIMESTAMPS = {'status': 'ENABLED'};
```

## DROP KEYSPACE
<a name="cql.ddl.keyspace.drop"></a>

使用 `DROP KEYSPACE`陳述式移除金鑰空間，包括其所有內容，例如資料表。

**語法**

```
drop_keyspace_statement ::= 
    DROP KEYSPACE [ IF EXISTS ] keyspace_name
```

其中：
+ *keyspace\$1name* 是要捨棄的金鑰空間名稱。

**範例**

```
DROP KEYSPACE my_keyspace;
```

## USE
<a name="cql.ddl.keyspace.use"></a>

使用 `USE`陳述式來定義目前的金鑰空間。這可讓您參考繫結至特定金鑰空間的物件，例如資料表和類型，而無需使用包含金鑰空間字首的完整名稱。

**語法**

```
use_statement ::= 
    USE keyspace_name
```

其中：
+ *keyspace\$1name* 是要使用的金鑰空間名稱。

**範例**

```
USE my_keyspace;
```