

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

# Amazon Kinesis Data Streams の用語と概念
<a name="key-concepts"></a>

Amazon Kinesis Data Streams の使用を開始する前に、そのアーキテクチャと用語について説明します。

**Topics**
+ [Kinesis Data Streams の概要レベルのアーキテクチャを確認する](#high-level-architecture)
+ [Kinesis Data Streams の用語に精通する](#terminology)

## Kinesis Data Streams の概要レベルのアーキテクチャを確認する
<a name="high-level-architecture"></a>

以下の図に、Kinesis Data Streams のアーキテクチャの概要を示します。*プロデューサー*は継続的にデータを Kinesis Data Streams にプッシュし、*コンシューマー*はリアルタイムでデータを処理します。コンシューマー (Amazon EC2 で実行されているカスタムアプリケーションや Amazon Data Firehose 配信ストリームなど) は、Amazon DynamoDB、Amazon Redshift、Amazon S3 などの AWS サービスを使用して結果を保存できます。

![\[Kinesis Data Streams のアーキテクチャの概要図\]](http://docs.aws.amazon.com/ja_jp/streams/latest/dev/images/architecture.png)


## Kinesis Data Streams の用語に精通する
<a name="terminology"></a>

### Kinesis Data Streams
<a name="stream"></a>

*Kinesis data stream* は、[シャード](#shard)のセットです。各シャードにはデータレコードのシーケンスがあります。各データレコードには、Kinesis Data Streams によって[シーケンス番号](#sequence-number)が割り当てられます。

### データレコード
<a name="data-record"></a>

[Kinesis data stream](#stream) によって保存されるデータの単位は、*データレコード*です。データレコードは、[シーケンス番号](#sequence-number)、[パーティションキー](#partition-key)、データ BLOB (変更不可のバイトシーケンス) で構成されます。Kinesis Data Streams ではいずれの方法でも BLOB のデータが検査、解釈、または変更されることはありません。データ BLOB は最大 1 MB です。

### 容量モード
<a name="stream-capacity-mode"></a>

データストリーム*容量モード*は、容量の管理方法と、データストリームの使用に対する課金方法を決定します。現在、Amazon Kinesis Data Streams では、データストリームの**オンデマンドモード**と**プロビジョンドモード**のどちらかを選択できます。詳細については、「[適切なストリームモードを選ぶ](how-do-i-size-a-stream.md)」を参照してください。

**オンデマンド**モードでは、Kinesis Data Streams は必要なスループットを提供するために、シャードを自動的に管理します。使用した実際のスループットに対してのみ課金されます。Kinesis Data Streams は、ワークロードのスループットニーズが上昇または低下したときに自動的に対応します。詳細については、[オンデマンド標準モードの機能とユースケース](how-do-i-size-a-stream.md#ondemandmode)を参照してください。

**プロビジョンド**モードでは、データストリームのシャードカウントを指定する必要があります。データストリームの総容量は、シャードの容量の合計です。必要に応じて、データストリームのシャードの数を増減することができ、シャードカウントに対して時間料金が発生します。詳細については、[プロビジョンドモード機能とユースケース](how-do-i-size-a-stream.md#provisionedmode)を参照してください。

### 保持期間
<a name="retention"></a>

*保持期間*は、データレコードがストリームに追加された後にデータレコードにアクセスできる時間の長さです。ストリームの保持期間は、デフォルトで作成後 24 時間に設定されます。保持期間は、[IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html) 操作を使用して最大 8,760時間 (365 日) まで延長し、[DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html) 操作を使用して最小 24 時間まで短縮することができます。24 時間を超える保持期間が設定されたストリームには追加料金が適用されます。詳細については、「[Amazon Kinesis Data Streams の料金](https://aws.amazon.com/kinesis/pricing/)」を参照してください。

### プロデューサー
<a name="producers"></a>

*プロデューサー*は、Amazon Kinesis Data Streams にレコードを配置します。たとえば、ストリームにログデータを送信するウェブサーバーはプロデューサーです。

### コンシューマー
<a name="consumers"></a>

*コンシューマー*は、Amazon Kinesis Data Streams からレコードを取得して処理します。これらのコンシューマーは [Amazon Kinesis Data Streams アプリケーション](#enabled-application) と呼ばれます。

### Amazon Kinesis Data Streams アプリケーション
<a name="enabled-application"></a>

*Amazon Kinesis Data Streams application* はストリームのコンシューマーで、一般的に EC2 インスタンスのフリートで実行されます。

開発可能なコンシューマーには、共有ファンアウトコンシューマーと拡張ファンアウトコンシューマーの 2 種類あります。両者間の相違点を確認する方法、各種類のコンシューマーを作成する方法については、[Amazon Kinesis Data Streams からデータを読み取る](building-consumers.md)を参照してください。

Kinesis Data Streams アプリケーションの出力を別のストリームの入力にすることで、リアルタイムにデータを処理する複雑なトポロジを作成できます。アプリケーションは、他のさまざまな AWS サービスにデータを送信することもできます。複数のアプリケーションが 1 つのストリームを使用して、各アプリケーションが同時にかつ独立してストリームからデータを消費できます。

### シャード
<a name="shard"></a>

*シャード*は、ストリーム内の一意に識別されたデータレコードのシーケンスです。ストリームは複数のシャードで構成され、各シャードが容量の 1 単位になります。各シャードは、読み取りで最大 5 トランザクション/秒、最大合計データ読み取り速度 2 MB/秒、書き込みで最大 1,000 レコード/秒、最大合計データ書き込み速度 1 MB/秒をサポートできます (パーティションキーを含む)。ストリームのデータ容量は、ストリームに指定したシャードの数によって決まります。ストリームの総容量はシャードの容量の合計です。

データ転送速度が増加した場合、ストリームに割り当てられたシャードカウントを増やしたり、減らしたりできます。詳細については、[ストリームをリシャーディングする](kinesis-using-sdk-java-resharding.md)を参照してください。

### パーティションキー
<a name="partition-key"></a>

*パーティションキー*は、ストリーム内のデータをシャード単位でグループ化するために使用されます。Kinesis Data Streams では、ストリームに属するデータレコードを複数のシャードに配分します。この際、各データレコードに関連付けられたパーティションキーを使用して、配分先のシャードを決定します。パーティションキーは Unicode 文字列で、各キーの最大長は 256 文字に制限されています。MD5 ハッシュ関数を使用して、パーティションキーを 128 ビットの整数値にマッピングし、関連付けられたデータレコードをシャードにマッピングします。後者のマッピングにはシャードのハッシュキー範囲を使用します。アプリケーションは、ストリームにデータを配置するときに、パーティションキーを指定する必要があります。

### シーケンス番号
<a name="sequence-number"></a>

各データレコードには、シャード内のパーティションキーごとに一意の*シーケンス番号*があります。`client.putRecords` または `client.putRecord` を使用してストリームに書き込むと、Kinesis Data Streams によってシーケンス番号が割り当てられます。同じパーティションキーのシーケンス番号は、通常徐々に増加されます。書き込みリクエスト間の期間が長くなるほど、シーケンス番号は大きくなります。

**注記**  
シーケンス番号は、同じストリーム内の一連のデータのインデックスとして使用することはできません。一連のデータを論理的に区別するには、パーティションキーを使用するか、データセットごとに個別のストリームを作成します。

### Kinesis Client Library
<a name="client-library"></a>

Kinesis Client Library をアプリケーションにコンパイルすることで、耐障害性を維持しながらストリームからデータを消費できます。Kinesis Client Library により、シャードごとにその実行と処理用のレコードプロセッサが確保されます。また、ストリームからのデータの読み取りが簡素化されます。Kinesis Client Library は、Amazon DynamoDB テーブルを使用してデータ消費に関連するメタデータを保存します。また、データを処理するアプリケーションごとに 3 つのテーブルを作成します。詳細については、「[Kinesis Client Library を使用する](kcl.md)」を参照してください。

### アプリケーション名
<a name="application-name"></a>

Amazon Kinesis Data Streams アプリケーションの名前によって、アプリケーションが識別されます。各アプリケーションには、アプリケーションで使用される AWS アカウントとリージョンを対象とする一意の名前が必要です。この名前は、Amazon DynamoDB では制御テーブルと Amazon CloudWatch メトリクスの名前空間の名前として使用されます。

### サーバー側の暗号化
<a name="server-side-encryption-concept"></a>

Amazon Kinesis Data Streams は、プロデューサーがストリームに入力するときに、機密データを自動的に暗号化できます。Kinesis Data Streams は暗号化に [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/) マスターキーを使用します。詳細については、[Amazon Kinesis Data Streams のデータ保護](server-side-encryption.md)を参照してください。

**注記**  
暗号化されたストリームに対して読み書きを行うために、プロデューサーおよびコンシューマーアプリケーションにはマスターキーへのアクセス許可が必要です。プロデューサーおよびコンシューマーアプリケーションにアクセス許可を付与する方法については、[ユーザー生成の KMS キーを使用するための許可](permissions-user-key-KMS.md)を参照してください。

**注記**  
サーバー側の暗号化を使用すると AWS Key Management Service 、(AWS KMS) コストが発生します。詳細については、[AWS Key Management Service の料金](https://aws.amazon.com/kms/pricing)を参照してください。