

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Apache Cassandra でサポートされている読み取り/書き込み整合性レベルと関連コスト
<a name="consistency"></a>

このセクションのトピックでは、Amazon Keyspaces (Apache Cassandra 向け) における読み取りオペレーションと書き込みオペレーションに対してサポートされている Apache Cassandra 整合性レベルについて説明します。

**Topics**
+ [書き込みの整合性レベル](#WriteConsistency)
+ [読み取りの整合性レベル](#ReadConsistency)
+ [サポートされていない整合性レベル](#UnsupportedConsistency)

## 書き込みの整合性レベル
<a name="WriteConsistency"></a>

 Amazon Keyspaces では、耐久性と高可用性を確保するために、複数のアベイラビリティーゾーンにおいて、全ての書き込みオペレーションが 3 回レプリケートされます。書き込みは、書き込みが承認される前に `LOCAL_QUORUM` 整合性レベルを使用して永続的に保存されます。1 KB の書き込み 1 回につき、プロビジョンドキャパシティモードを使用するテーブルの場合は 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 ドライバーを使用しているときに `setConsistencyLevel` 引数を指定して `QueryBuilder.insertInto` を呼び出すときの整合性を定義します。

## 読み取りの整合性レベル
<a name="ReadConsistency"></a>

Amazon Keyspaces では、`ONE`、`LOCAL_ONE`、`LOCAL_QUORUM` という 3 つの読み取り整合性レベルがサポートされています。Amazon Keyspaces では、`LOCAL_QUORUM` 読み取りの処理中に、過去に成功したすべての書き込みオペレーションから最新の更新が反映されているレスポンスが返されます。整合性レベル `ONE` または `LOCAL_ONE` を使用すると、読み込みリクエストのパフォーマンスと可用性を向上させることができますが、最近完了した書き込みの結果がレスポンスに反映されない可能性があります。

`ONE` または `LOCAL_ONE` の整合性を採用した 4 KB の読み取り 1 回につき、プロビジョンドキャパシティモードを使用するテーブルの場合は 0.5 読み込みキャパシティユニット (RCU)、オンデマンドモードを使用するテーブルの場合は 0.5 読み込みリクエストユニット (RRU) が課金されます。`LOCAL_QUORUM` の整合性を採用した 4 KB の読み取り 1 回につき、プロビジョンドキャパシティモードを使用するテーブルの場合は 1 読み込みキャパシティユニット (RCU)、オンデマンドモードを使用するテーブルの場合は 1 読み込みリクエストユニット (RRU) が課金されます。


**テーブルごとの読み取り整合性と読み取りキャパシティスループットモードに基づいた 4 KB 読み取り 1 回あたりの課金**  

| 整合性レベル | プロビジョン済み | [オンデマンド] | 
| --- | --- | --- | 
| ONE | 0.5 RCU | 0.5 RRU | 
| LOCAL\$1ONE | 0.5 RCU | 0.5 RRU | 
| LOCAL\$1QUORUM | 1 RCU | 1 RRU | 

読み取り操作に別の整合性を指定するには、Java ドライバーを使用しているときに `setConsistencyLevel` 引数を指定して `QueryBuilder.select` を呼び出します。

## サポートされていない整合性レベル
<a name="UnsupportedConsistency"></a>

次の整合性レベルは Amazon Keyspaces ではサポートされていないため、例外が発生します。


**サポートされていない整合性レベル**  

| Apache Cassandra | Amazon Keyspaces | 
| --- | --- | 
| EACH\$1QUORUM | サポートされません | 
| QUORUM | サポートされません | 
| ALL  | サポートされません | 
| TWO | サポートされません | 
| THREE | サポートされません | 
| ANY | サポートされません | 
| SERIAL | サポートされません | 
| LOCAL\$1SERIAL | サポートされません | 