

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

# 支援的 Apache Cassandra 讀取和寫入一致性層級和相關成本
<a name="consistency"></a>

本節中的主題說明 Amazon Keyspaces （適用於 Apache Cassandra) 中的讀取和寫入操作支援哪些 Apache Cassandra 一致性層級。

**Topics**
+ [寫入一致性層級](#WriteConsistency)
+ [讀取一致性層級](#ReadConsistency)
+ [不支援的一致性層級](#UnsupportedConsistency)

## 寫入一致性層級
<a name="WriteConsistency"></a>

 Amazon Keyspaces 會跨多個可用區域複寫所有寫入操作三次，以提供耐用性和高可用性。在使用`LOCAL_QUORUM`一致性層級進行確認之前，寫入會永久儲存。對於每個 1 KB 寫入，您需要為使用佈建容量模式的資料表支付 1 個寫入容量單位 (WCU)，或為使用隨需模式的資料表支付 1 個寫入請求單位 (WRU)。

您可以使用 `cqlsh`將目前工作階段中所有查詢的一致性設定為`LOCAL_QUORUM`使用下列程式碼。

```
CONSISTENCY LOCAL_QUORUM;
```

若要以程式設計方式設定一致性層級，您可以使用適當的 Cassandra 用戶端驅動程式來設定一致性。例如，4.x 版 Java 驅動程式可讓您在 `app config` 檔案中設定一致性層級，如下所示。

```
basic.request.consistency = LOCAL_QUORUM
```

如果您使用的是 3.x 版 Java Cassandra 驅動程式，您可以透過新增 來指定工作階段的一致性層級`.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM)`，如下列程式碼範例所示。

```
Session session = Cluster.builder()  
                      .addContactPoint(endPoint)  
                      .withPort(portNumber)  
                      .withAuthProvider(new SigV4AuthProvider("us-east-1"))  
                      .withSSL()
                      .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM)
                      .build()  
                      .connect();
```

若要設定特定寫入操作的一致性層級，您可以在使用 Java 驅動程式使用`QueryBuilder.insertInto``setConsistencyLevel`引數呼叫 時定義一致性。

## 讀取一致性層級
<a name="ReadConsistency"></a>

Amazon Keyspaces 支援三種讀取一致性層級：`ONE`、 `LOCAL_ONE`和 `LOCAL_QUORUM`。在`LOCAL_QUORUM`讀取期間，Amazon Keyspaces 會傳回回應，反映先前所有成功寫入操作的最新更新。使用一致性層級 `ONE`或 `LOCAL_ONE`可以改善讀取請求的效能和可用性，但回應可能不會反映最近完成寫入的結果。

對於使用 `ONE`或 `LOCAL_ONE` 一致性的每個 4 KB 讀取，您需要為使用佈建容量模式的資料表支付 0.5 個讀取容量單位 (RCUs)，或為使用隨需模式的資料表支付 0.5 個讀取請求單位 (RRUs)。對於使用`LOCAL_QUORUM`一致性的每個 4 KB 讀取，您需要為使用佈建容量模式的資料表支付 1 個讀取容量單位 (RCU)，或為使用隨需模式的資料表支付 1 個讀取請求單位 (RRU)。


**針對每 4 KB 讀取，根據每個資料表的讀取一致性和讀取容量輸送量模式計費**  

| 一致性層級 | 佈建 | 隨需 | 
| --- | --- | --- | 
| ONE | 0.5 RCUs | 0.5 RRUs | 
| LOCAL\$1ONE | 0.5 RCUs | 0.5 RRUs | 
| LOCAL\$1QUORUM | 1 個 RCU | 1 個 RRU | 

若要為讀取操作指定不同的一致性，當您使用 Java 驅動程式時，`QueryBuilder.select`請使用`setConsistencyLevel`引數呼叫 。

## 不支援的一致性層級
<a name="UnsupportedConsistency"></a>

Amazon Keyspaces 不支援下列一致性層級，並會導致例外狀況。


**不支援的一致性層級**  

| Apache Cassandra | Amazon Keyspaces | 
| --- | --- | 
| EACH\$1QUORUM | 不支援 | 
| QUORUM | 不支援 | 
| ALL  | 不支援 | 
| TWO | 不支援 | 
| THREE | 不支援 | 
| ANY | 不支援 | 
| SERIAL | 不支援 | 
| LOCAL\$1SERIAL | 不支援 | 