

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

# 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`  | 可変精度の 10 進数を表します。 | 
|  `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` 型の列が 1 つ以上含まれているテーブルでは、そのテーブルのすべての列は `counter` 型の列でなければなりません。

カウンタの更新が失敗した場合 (タイムアウトや Amazon Keyspaces との接続の喪失など)、カウンタ値の更新の有無がクライアントに認識されません。更新が再試行された場合、カウンタ値への更新が 2 回目に適用されることがあります。

### 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`  | エポック (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`  | 順序を設定した一連のリテラル要素 (1 つ以上) を表します。 | 

コレクション型でコレクション列を宣言し、その後に山括弧で囲んだ別のデータ型 (たとえば、`TEXT` または `INT`) を使用します。次の例のように`TEXT` の `SET` で列を作成することも、`TEXT` および `INT` のキーと値のペアの `MAP` を作成することもできます。

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

*非フリーズ*コレクションでは、個々のコレクション要素を更新できます。クライアント側のタイムスタンプと有効期限 (TTL) 設定は、個々の要素ごとに保存されます。

`FROZEN` コレクション型にキーワードを使用すると、コレクションの値は 1 つの不変の値にシリアル化され、Amazon Keyspaces ではそれらを `BLOB` のように扱われます。これは*フリーズ*コレクションです。`INSERT` または `UPDATE` ステートメントはフリーズされたコレクション全体を上書きします。フリーズコレクション内の個々の要素は更新できません。

クライアント側のタイムスタンプと有効期限 (TTL) の設定は、個々の要素ではなく、フリーズされたコレクション全体に適用されます。`Frozen` コレクション列は `PRIMARY KEY` のテーブルの一部にすることができます。

フリーズコレクションはネストできます。たとえば、次の例のように、`MAP` が `FROZEN` キーワードを使用している場合、`SET` 内の `MAP` を定義できます。

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

Amazon Keyspaces では、デフォルトで最大 8 レベルのフリーズコレクションをネストできます。詳細については、「[Amazon Keyspaces サービスクォータ](quotas.md#table)」を参照してください。Apache Cassandra との機能の違いの詳細については、「[`FROZEN` collections](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`  | IPv4 形式または IPv6 形式の IP アドレスを表す文字列。 | 

### 静的
<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をサポートしています。コレクションやその他の既存の UDT など、任意の有効な Amazon Keyspaces データ型を使用して UDTsを作成できます。キースペースに UDTs を作成し、それを使用してキースペース内の任意のテーブルの列を定義できます。

構文の詳細については、「[ユーザー定義タイプ (UDTs)](cql.ddl.type.md)」を参照してください。UDTs「」を参照してください[Amazon Keyspaces でのユーザー定義型 (UDT)](udts.md)。

キースペースごとにサポートされている UDTs の数、サポートされているネストレベル、および UDTs「」を参照してください[Amazon Keyspaces のユーザー定義タイプ (UDTsクォータとデフォルト値](quotas.md#quotas-udts)。

## Amazon Keyspaces データ型の JSON エンコード
<a name="cql.data-types.JSON"></a>

Amazon Keyspaces の JSON データ型マッピングは Apache Cassandra のものと同じです。次の表では、`INSERT JSON` ステートメントで Amazon Keyspaces に許容されるデータ型と、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 ビットの整数をオーバーフローする可能性があります。 | 