

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 지원되는 Apache Cassandra 읽기 및 쓰기 일관성 수준 및 관련 비용
<a name="consistency"></a>

이 섹션의 항목에서는 Amazon Keyspaces(Apache Cassandra용)에서 읽기 및 쓰기 작업에 대해 지원되는 Apache Cassandra 일관성 수준에 대해 설명합니다.

**Topics**
+ [쓰기 일관성 수준](#WriteConsistency)
+ [읽기 일관성](#ReadConsistency)
+ [지원되지 않는 일관성 수준](#UnsupportedConsistency)

## 쓰기 일관성 수준
<a name="WriteConsistency"></a>

 Amazon Keyspaces는 내구성과 고가용성을 위해 여러 가용 영역에 모든 쓰기 작업을 세 번 복제합니다. 쓰기는 `LOCAL_QUORUM` 일관성 수준을 사용하여 승인되기 전에 안정적으로 저장됩니다. 1KB 쓰기당 프로비저닝된 용량 모드를 사용하는 테이블에는 1WCU(쓰기 용량 단위), 온디맨드 모드를 사용하는 테이블에는 1WRU(쓰기 요청 단위)가 청구됩니다.

`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`)을 지원합니다. `LOCAL_QUORUM` 읽기 중에 Amazon Keyspaces는 이전에 성공한 모든 쓰기 작업의 최신 업데이트를 반영하는 응답을 반환합니다. 일관성 수준 `ONE` 또는 `LOCAL_ONE`를 사용하면 읽기 요청의 성능과 가용성을 개선할 수 있지만, 응답에 최근 완료된 쓰기 결과가 반영되지 않을 수 있습니다.

`ONE` 또는 `LOCAL_ONE` 일관성을 사용하는 읽기 사용량 4KB마다 프로비저닝된 용량 모드를 사용하는 테이블에는 0.5RCU(읽기 용량 단위), 온디맨드 모드를 사용하는 테이블에는 0.5RRU(읽기 요청 단위)가 청구됩니다. `LOCAL_QUORUM` 일관성을 사용하는 읽기 사용량 4KB마다 프로비저닝된 용량 모드를 사용하는 테이블에는 1RCU(읽기 용량 단위), 온디맨드 모드를 사용하는 테이블에는 1RRU(읽기 요청 단위)가 청구됩니다.


**읽기 4KB당 테이블별 읽기 일관성 및 읽기 용량 처리량 모드를 기준으로 요금 청구**  

| 일관성 수준 | 프로비저닝됨 | 온디맨드 | 
| --- | --- | --- | 
| ONE | 0.5RCU | 0.5RRU | 
| LOCAL\$1ONE | 0.5RCU | 0.5RRU | 
| LOCAL\$1QUORUM | 1RCU | 1RRU | 

읽기 작업의 일관성을 다르게 지정하려면 Java 드라이버를 사용할 때 `setConsistencyLevel` 인수를 사용하여 `QueryBuilder.select`을 호출합니다.

## 지원되지 않는 일관성 수준
<a name="UnsupportedConsistency"></a>

Amazon Keyspaces에서는 다음과 같은 일관성 수준을 지원하지 않으므로 예외가 발생합니다.


**지원되지 않는 일관성 수준**  

| Apache Cassandra | Amazon Keyspaces | 
| --- | --- | 
| EACH\$1QUORUM | 지원되지 않음 | 
| QUORUM | 지원되지 않음 | 
| ALL  | 지원되지 않음 | 
| TWO | 지원되지 않음 | 
| THREE | 지원되지 않음 | 
| ANY | 지원되지 않음 | 
| SERIAL | 지원되지 않음 | 
| LOCAL\$1SERIAL | 지원되지 않음 | 