

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

# Amazon Keyspaces의 Cassandra 쿼리 언어(CQL) 요소
<a name="cql.elements"></a>

식별자, 상수, 용어, 데이터 유형을 포함하여 Amazon Keyspaces에서 지원하는 Cassandra 쿼리 언어(CQL) 요소에 대해 알아보세요.

**Topics**
+ [identifier](#cql.elements.identifier)
+ [constants](#cql.elements.constants)
+ [term](#cql.elements.term)
+ [데이터 타입](#cql.data-types)
+ [Amazon Keyspaces 데이터 유형의 JSON 인코딩](#cql.data-types.JSON)

## 식별자
<a name="cql.elements.identifier"></a>

식별자(또는 이름)는 테이블, 열, 기타 객체를 식별하는 데 사용됩니다. 식별자를 인용하거나 인용하지 않을 수 있습니다. 다음이 적용됩니다.

```
identifier          ::=  unquoted_identifier | quoted_identifier
unquoted_identifier ::=  re('[a-zA-Z][a-zA-Z0-9_]*')
quoted_identifier   ::=  '"' (any character where " can appear if doubled)+ '"'
```

## 상수
<a name="cql.elements.constants"></a>

다음 상수가 정의됩니다.

```
constant ::=  string | integer | float | boolean | uuid | blob | NULL
string   ::=  '\'' (any character where ' can appear if doubled)+ '\''
              '$$' (any character other than '$$') '$$'
integer  ::=  re('-?[0-9]+')
float    ::=  re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
boolean  ::=  TRUE | FALSE
uuid     ::=  hex{8}-hex{4}-hex{4}-hex{4}-hex{12}
hex      ::=  re("[0-9a-fA-F]")
blob     ::=  '0' ('x' | 'X') hex+
```

## 용어
<a name="cql.elements.term"></a>

용어는 지원되는 값의 종류를 나타냅니다. 용는 다음에 따라 정의됩니다.

```
term                 ::=  constant | literal | function_call | arithmetic_operation | type_hint | bind_marker
literal              ::=  collection_literal | tuple_literal
function_call        ::=  identifier '(' [ term (',' term)* ] ')'
arithmetic_operation ::=  '-' term | term ('+' | '-' | '*' | '/' | '%') term
```

## 데이터 타입
<a name="cql.data-types"></a>

Amazon Keyspaces는 다음 데이터 형식을 지원합니다.

### 문자열 형식
<a name="cql.data-types.string"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `ascii`  | ASCII 문자열을 나타냅니다. | 
|  `text`  | UTF-8 인코딩 문자열을 나타냅니다. | 
|  `varchar`  |  UTF-8 인코딩 문자열(`varchar`은 `text`의 별칭)을 나타냅니다.  | 

### 숫자형
<a name="cql.data-types.numeric"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `bigint`  | 64비트 서명 길이를 나타냅니다. | 
|  `counter`  | 64비트 서명 정수 카운터를 나타냅니다. 자세한 내용은 [카운터](#cql.data-types.numeric.counters) 단원을 참조하십시오. | 
|  `decimal`  | 가변 정밀도 십진수를 나타냅니다. | 
|  `double`  | 64비트 IEEE 754 부동 소수점을 나타냅니다. | 
|  `float`  | 32비트 IEEE 754 부동 소수점을 나타냅니다. | 
|  `int`  |  32비트 서명 정수를 나타냅니다.  | 
|  `varint`  |  \$1/-10^38 범위 내의 정수 값을 나타냅니다.  | 

#### 카운터
<a name="cql.data-types.numeric.counters"></a>

`counter` 열에는 64비트 서명 정수가 포함됩니다. 카운터 값은 [UPDATE](cql.dml.update.md) 문을 사용하여 높이거나 내릴 수 있으며 직접적으로 설정할 수 없습니다. 따라서 `counter` 열은 카운트를 추적하는 데 유용합니다. 예를 들어 카운터를 사용하여 로그 파일의 항목 수 또는 소셜 네트워크에서 게시물 조회수를 추적할 수 있습니다. `counter` 열에 적용되는 제한은 다음과 같습니다.
+ `counter` 유형의 열은 테이블 `primary key`의 일부가 될 수 없습니다.
+ `counter` 유형 열이 하나 이상 포함된 테이블의 경우 해당 테이블의 모든 열이 `counter` 유형이어야 합니다.

카운터 업데이트가 실패하는 경우(예: 시간 초과 또는 Amazon Keyspace와의 연결 끊김) 클라이언트는 카운터 값이 업데이트되었는지 여부를 알 수 없습니다. 업데이트가 다시 시도되면 카운터 값에 대한 업데이트가 다시 적용될 수 있습니다.

### Blob 유형
<a name="cql.data-types.blob"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `blob`  | 임의의 바이트를 나타냅니다. | 

### 부울 유형
<a name="cql.data-types.boolean"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `boolean`  | true 또는 false를 나타냅니다. | 

### 시간 관련 유형
<a name="cql.data-types.time"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `date`  | 형식의 문자열입니다<yyyy>-<mm>-<dd>. | 
|  `timestamp`  | epoch(1970년 1월 1일 00:00:00 GMT) 이후의 날짜 및 시간을 밀리초 단위로 나타내는 64비트 서명 정수. | 
|  `timeuuid`  | [버전 1 UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address))를 나타냅니다. | 

### 컬렉션 유형
<a name="cql.data-types.collection"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `list`  | 정렬된 리터럴 요소 모음을 나타냅니다. | 
|  `map`  | 정렬되지 않은 키-값 페어 모음을 나타냅니다. | 
|  `set`  | 하나 이상의 리터럴 요소의 순서가 지정되지 않은 모음을 나타냅니다. | 

모음 유형 다음에 다른 데이터 유형(예: `TEXT` 또는 `INT`)을 각괄호로 묶어 집합 열을 선언합니다. 다음 예제와 같이 `TEXT`의 `SET`이 있는 열을 만들거나 `TEXT`의 `MAP`과 `INT` 키-값 쌍을 만들 수 있습니다.

```
SET <TEXT>
MAP <TEXT, INT>
```

**비프로즌 수집을 사용하면 각 개별 수집 요소를 업데이트할 수 있습니다. 개별 요소에 대해 클라이언트 측 타임스탬프 및 Time to Live(TTL) 설정이 저장됩니다.

수집 유형에 `FROZEN` 키워드를 사용하면 수집의 값이 변경할 수 없는 단일 값으로 직렬화되며 Amazon Keyspaces는 이를 `BLOB`처럼 취급합니다. 이는 **프로즌 수집입니다. `INSERT` 또는 `UPDATE` 문은 프로즌 수집 전체를 덮어씁니다. 프로즌 수집 내의 개별 요소는 업데이트할 수 없습니다.

클라이언트 측 타임스탬프와 Time to Live(TTL) 설정은 개별 요소가 아닌 프로즌 수집 전체에 적용됩니다. `Frozen` 수집 열은 `PRIMARY KEY` 테이블의 일부일 수 있습니다.

프로즌 수집을 중첩할 수 있습니다. 예를 들어 다음 예제와 같이 `MAP`이 `FROZEN` 키워드를 사용하는 경우 `SET`에서 `MAP`를 정의할 수 있습니다.

```
SET <FROZEN> <MAP <TEXT, INT>>>
```

Amazon Keyspaces는 기본적으로 최대 8개 수준의 동결 수집 중첩을 지원합니다. 자세한 내용은 [Amazon Keyspaces 서비스 할당량](quotas.md#table) 단원을 참조하십시오. Apache Cassandra와의 기능적 차이에 대한 자세한 내용은 [`FROZEN` 컬렉션](functional-differences.md#functional-differences.frozen-collections) 섹션을 참조하십시오. CQL 구문에 대한 자세한 내용은 [CREATE TABLE](cql.ddl.table.md#cql.ddl.table.create) 및 [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter) 섹션을 참조하세요.

### 튜플 유형
<a name="cql.data-types.tuple"></a>

`tuple` 데이터 유형은 한정된 리터럴 요소 그룹을 나타냅니다. `user defined type` 대신 튜플을 사용할 수 있습니다. 튜플에는 `FROZEN` 키워드를 사용할 필요가 없습니다. 튜플은 항상 프로즌 상태이고 요소를 개별적으로 업데이트할 수 없기 때문입니다.

### 기타 유형
<a name="cql.data-types.other"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `inet`  | IP 주소를 IPv4 또는 IPv6 형식으로 나타내는 문자열입니다. | 

### 정적
<a name="cql.data-types.static"></a>

클러스터링 열이 있는 Amazon Keyspaces 테이블에서 `STATIC` 키워드를 사용하여 다양한 유형의 정적 열을 생성할 수 있습니다.

다음 문은 이에 대한 예입니다.

```
my_column INT STATIC
```

정적 열로 작업하기에 대한 자세한 내용은 [Amazon Keyspaces의 정적 열에 대한 용량 소비 추정](static-columns.md) 섹션을 참조하세요.

### 사용자 정의 유형(UDTs)
<a name="cql.data-types.user-defined"></a>

Amazon Keyspaces는 사용자 정의 유형(UDTs 지원합니다. 유효한 Amazon Keyspaces 데이터 형식을 사용하여 컬렉션 및 기타 기존 UDT를 포함한 UDTs. 키스페이스에서 UDTs를 생성하고 이를 사용하여 키스페이스의 모든 테이블에서 열을 정의할 수 있습니다.

CQL 구문에 대한 자세한 내용은 [사용자 정의 유형(UDTs)](cql.ddl.type.md) 섹션을 참조하세요. UDTs[User-defined types (UDTs) in Amazon Keyspaces](udts.md).

키스페이스당 지원되는 UDTs 수, 지원되는 중첩 수준, UDTs와 관련된 기타 기본값 및 할당량을 검토하려면 섹션을 참조하세요[Amazon Keyspaces의 사용자 정의 유형(UDTs)에 대한 할당량 및 기본값](quotas.md#quotas-udts).

## Amazon Keyspaces 데이터 유형의 JSON 인코딩
<a name="cql.data-types.JSON"></a>

Amazon Keyspaces는 Apache Cassandra와 동일한 JSON 데이터 유형 매핑을 제공합니다. 다음 표는 Amazon Keyspaces가 `INSERT JSON` 문에서 허용하는 데이터 유형과 Amazon Keyspaces가 `SELECT JSON` 문과 함께 데이터를 반환할 때 사용하는 데이터 유형을 설명합니다.

`float`, `int`, `UUID`, `date` 등의 단일 필드 데이터 유형의 경우 데이터를 `string`로 삽입할 수도 있습니다. `tuple`, `map`, `list` 등의 복합 데이터 유형 및 수집의 경우 데이터를 JSON이나 인코딩된 `JSON string` 형식으로 삽입할 수도 있습니다.


****  

| JSON 데이터 유형 | `INSERT JSON` 문에서 허용되는 데이터 유형 | `SELECT JSON` 문에서 반환되는 데이터 유형 | 참고 | 
| --- | --- | --- | --- | 
|  `ascii`  | string | string | JSON 문자 이스케이프 `\u`을(를) 사용합니다. | 
|  `bigint`  | integer, string | integer | 문자열은 유효한 64비트 정수여야 합니다. | 
|  `blob`  | string | string | 문자열은 `0x` 다음에 16진수의 짝수로 시작해야 합니다. | 
|  `boolean`  | boolean, string | boolean | 문자열은 `true` 또는 `false`여야 합니다. | 
|  `date`  | string | string | 날짜 형식 `YYYY-MM-DD`, 시간대 UTC. | 
|  `decimal`  | integer, float, string | float | 클라이언트 측 디코더에서 32비트 또는 64비트 IEEE-754 부동 소수점 정밀도를 초과할 수 있습니다. | 
|  `double`  | integer, float, string | float | 문자열은 유효한 정수 또는 부동 소수점이어야 합니다. | 
|  `float`  | integer, float, string | float | 문자열은 유효한 정수 또는 부동 소수점이어야 합니다. | 
|  `inet`  | string | string | IPv4 주소 또는 IPv6 주소. | 
|  `int`  | integer, string | integer | 문자열은 유효한 32비트 정수여야 합니다. | 
|  `list`  | list, string | list | 네이티브 JSON 목록 표현을 사용합니다. | 
|  `map`  | map, string | map | 네이티브 JSON 맵 표현을 사용합니다. | 
|  `smallint`  | integer, string | integer | 문자열은 유효한 16비트 정수여야 합니다. | 
|  `set`  | list, string | list | 네이티브 JSON 목록 표현을 사용합니다. | 
|  `text`  | string | string | JSON 문자 이스케이프 `\u`을(를) 사용합니다. | 
|  `time`  | string | string | 시간대 형식`HH-MM-SS[.fffffffff]`. | 
|  `timestamp`  | integer, string | string | 타임스탬프입니다. 문자열 상수를 사용하면 타임스탬프를 날짜로 저장할 수 있습니다. `YYYY-MM-DD HH:MM:SS.SSS` 형식의 날짜 스탬프가 반환됩니다. | 
|  `timeuuid`  | string | string | 1 UUID를 입력합니다. UUID 형식에 대한 내용은 [constants](#cql.elements.constants)을 참조하세요. | 
|  `tinyint`  | integer, string | integer | 문자열은 유효한 8비트 정수여야 합니다. | 
|  `tuple`  | list, string | list | 네이티브 JSON 목록 표현을 사용합니다. | 
|  `UDT`  | map, string | map | 필드 이름을 키로 하는 기본 JSON 맵 표현을 사용합니다. | 
|  `uuid`  | string | string | UUID 형식에 대한 내용은 [constants](#cql.elements.constants)을 참조하세요. | 
|  `varchar`  | string | string | JSON 문자 이스케이프 `\u`을(를) 사용합니다. | 
|  `varint`  | integer, string | integer | 가변 길이. 클라이언트 측 디코더에서 32비트 또는 64비트 정수가 오버플로될 수 있습니다. | 