

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

# ElastiCache のデータ階層化
<a name="data-tiering"></a>

レプリケーショングループを構成し、r6gd ファミリーのノードタイプを使用する ElastiCache for Valkey または ElastiCache for Redis OSS クラスターでは、メモリとローカル SSD (ソリッドステートドライブ) ストレージの間でデータが階層化されます。データ階層化は、データをメモリに保存するだけでなく、各クラスターノードで低コストのソリッドステートドライブ (SSD) を利用することで、Valkey または Redis OSS ワークロードにコストパフォーマンスの高い新たなオプションを提供します。これは、データセット全体の最大 20% に定期的にアクセスするワークロードや、SSD 上のデータにアクセスする際に増加するレイテンシーを許容できるアプリケーションに最適です。

データ階層化を行う ElastiCache クラスターでは、ElastiCache は保存するすべての項目の最終アクセス時間をモニタリングします。使用可能なメモリ (DRAM) が完全に消費されると、ElastiCache は Least Recently Used (LRU) アルゴリズムを使用して、アクセス頻度の低い項目をメモリから SSD に自動的に移動します。その後、SSD 上のデータにアクセスすると、ElastiCache はリクエストを処理する前に自動的かつ非同期的にデータをメモリに戻します。データのサブセットにのみ定期的にアクセスするワークロードがある場合、データ階層化は容量を優れたコスト効率でスケールするための最適な方法となります。

データ階層化を使用する場合、キー自体は常にメモリに残り、LRU によってメモリとディスクの値の配置が制御されます。一般に、データ階層化を使用する際は、キーサイズを値のサイズよりも小さくすることをお勧めします。

データ階層化は、アプリケーションワークロードへのパフォーマンスの影響を最小限に抑えるように設計されています。例えば、500 バイトの文字列値を想定した場合に、メモリ内のデータへのリクエストと比較すると、SSD に保存されたデータへのリクエストには平均で 300 マイクロ秒のレイテンシーが生じることが予想されます。

最も大きいデータ階層化ノードサイズ (cache.r6gd.16xlarge) では、単一の 500 ノードクラスターに最大 1 ペタバイトを保存できます (1 つのリードレプリカを使用する場合は 500 TB)。データ階層化は、ElastiCache でサポートされているすべての Valkey または Redis OSS コマンドおよびデータ構造と互換性があります。この機能を使用するためのクライアント側の変更は必要ありません。

**Topics**
+ [ベストプラクティス](#data-tiering-best-practices)
+ [制限](#data-tiering-prerequisites)
+ [料金](#data-tiering-pricing)
+ [モニタリング](#data-tiering-monitoring)
+ [データ階層化の使用](#data-tiering-enabling)
+ [データ階層化を有効にして、バックアップからクラスターにデータを復元する](#data-tiering-enabling-snapshots)

## ベストプラクティス
<a name="data-tiering-best-practices"></a>

推奨されるベストプラクティスを以下に示します：
+ データ階層化は、データセット全体の最大 20% に定期的にアクセスするワークロードや、SSD 上のデータにアクセスする際に増加するレイテンシーを許容できるアプリケーションに最適です。
+ データ階層化ノードで利用可能な SSD 容量を使用する場合は、値のサイズをキーサイズよりも大きくすることをお勧めします。DRAM と SSD の間で項目を移動すると、キーは常にメモリに残り、値だけが SSD 階層に移動されます。

## 制限
<a name="data-tiering-prerequisites"></a>

データ階層化には以下の制限があります。
+ データ階層化は、レプリケーショングループの一部であるクラスターでのみ使用できます。
+ 使用するノードタイプは、`us-east-2`、`us-east-1`、`us-west-2`、`us-west-1`、`eu-west-1`、`eu-central-1`、`eu-north-1`、`eu-west-3`、`ap-northeast-1`、`ap-southeast-1`、`ap-southeast-2`、`ap-south-1`、`ca-central-1`、`sa-east-1` のリージョンで使用できる r6gd ファミリーのものである必要があります。
+ Valkey 7.2 以降、または Redis OSS 6.2 以降のエンジンを使用する必要があります。
+ r6gd クラスターのバックアップは、r6gd を使用しなければ別のクラスターに復元できません。
+ データ階層化クラスターのバックアップを Amazon S3 にエクスポートすることはできません。
+ オンライン移行は、r6gd ノードタイプで実行されるクラスターではサポートされていません。
+ データ階層化クラスター (r6gd ノードタイプを使用するクラスターなど) からデータ階層化を使用しないクラスター (r6g ノードタイプを使用するクラスターなど) へのスケーリングはサポートされていません。詳細については、「[ElastiCache のスケーリング](Scaling.md)」を参照してください。
+ 自動スケーリングは、Valkey バージョン 7.2 以降、Redis OSS バージョン 7.0.7 以降のデータ階層化を使用するクラスターでサポートされています。詳細については、[Valkey クラスターと Redis OSS クラスターの自動スケーリング](AutoScaling.md)を参照してください。
+ データ階層化では、`volatile-lru`、`allkeys-lru`、`volatile-lfu`、`allkeys-lfu`、および `noeviction` の maxmemory ポリシーのみがサポートされます。
+ 分岐なしの保存は、Valkey バージョン 7.2 以降、Redis OSS バージョン 7.0.7 以降でサポートされています。詳細については、「[同期とバックアップの実装方法](Replication.Redis.Versions.md)」を参照してください。
+ 128 MiB を超える項目は SSD に移動されません。
+ Valley 8.1 以降では、キーと値のサイズが 40 バイト未満の項目は SSD に移動されません。

## 料金
<a name="data-tiering-pricing"></a>

R6gd ノードは R6g ノード (メモリのみ) と比較して 4.8 倍の合計容量 (メモリ \$1 SSD) を備えており、最大使用率で実行すると 60 % 以上のコスト削減を実現できます。詳細については、[ElastiCache の料金](https://aws.amazon.com/elasticache/pricing/)を参照してください。

## モニタリング
<a name="data-tiering-monitoring"></a>

ElastiCache は、データ階層化を使用するクラスターのパフォーマンスをモニタリングするために特別に設計されたメトリクスを提供します。SSD と比較した DRAM 内の項目の比率をモニタリングするには、「[Valkey と Redis OSS のメトリクス](CacheMetrics.Redis.md)」の `CurrItems` メトリクスを使用できます。パーセンテージは次のように計算できます: (ディメンション: 階層 = メモリ \$1 100 の CurrItems) / (ディメンションフィルターなしの CurrItems)。

 設定されたエビクションポリシーで許可されている場合、メモリ内の項目の割合が 5% を下回ると、ElastiCache は項目のエビクションを開始します。エビクションなしのポリシーで設定されたノードでは、書き込みオペレーションはメモリ不足エラーを受け取ります。

 メモリ内の項目の割合が 5% を下回った場合は、クラスターモードが有効なクラスターのスケールアウト、またはクラスタモードが無効なクラスターのスケールアップを検討することをお勧めします。スケーリングの詳細については、「[Valkey または Redis OSS (クラスターモードが有効) クラスターのスケーリング](scaling-redis-cluster-mode-enabled.md)」を参照してください。データ階層化を使用する Valkey または Redis OSS クラスターのメトリクスの詳細については、「[Valkey と Redis OSS のメトリクス](CacheMetrics.Redis.md)」を参照してください。

## データ階層化の使用
<a name="data-tiering-enabling"></a>

### AWS マネジメントコンソール を使用したデータ階層化の使用
<a name="data-tiering-enabling-console"></a>

レプリケーショングループの一部としてクラスターを作成する場合は、r6gd ファミリーから *cache.r6gd.xlarge* などのノードタイプを選択し、データ階層化を使用します。ノードタイプを選択すると、データ階層化が自動的に有効になります。

クラスター作成の詳細については、[Valkey または Redis OSS 用のクラスターの作成](Clusters.Create.md) を参照してください。

### AWS CLI を使用したデータ階層化の有効化
<a name="data-tiering-enabling-cli"></a>

AWS CLI を使用してレプリケーショングループを作成する場合は、r6gd ファミリーから *cache.r6gd.xlarge* などのノードタイプを選択し、`--data-tiering-enabled` パラメータを設定してデータ階層化を使用します。

r6gd ファミリーからノードタイプを選択する際に、データ階層化をオプトアウトすることはできません。`--no-data-tiering-enabled` パラメータを設定すると、オペレーションは失敗します。

Linux、macOS、Unix の場合:

```
aws elasticache create-replication-group \
   --replication-group-id redis-dt-cluster \
   --replication-group-description "Redis OSS cluster with data tiering" \
   --num-node-groups 1 \
   --replicas-per-node-group 1 \
   --cache-node-type cache.r6gd.xlarge \
   --engine redis \   
   --cache-subnet-group-name default \
   --automatic-failover-enabled \
   --data-tiering-enabled
```

Windows の場合:

```
aws elasticache create-replication-group ^
   --replication-group-id redis-dt-cluster ^
   --replication-group-description "Redis OSS cluster with data tiering" ^
   --num-node-groups 1 ^
   --replicas-per-node-group 1 ^
   --cache-node-type cache.r6gd.xlarge ^
   --engine redis ^   
   --cache-subnet-group-name default ^
   --automatic-failover-enabled ^
   --data-tiering-enabled
```

このオペレーションを実行すると、以下のようなレスポンスが表示されます。

```
{
    "ReplicationGroup": {
        "ReplicationGroupId": "redis-dt-cluster",
        "Description": "Redis OSS cluster with data tiering",
        "Status": "creating",           
        "PendingModifiedValues": {},
        "MemberClusters": [
            "redis-dt-cluster"
        ],
        "AutomaticFailover": "enabled",
        "DataTiering": "enabled",
        "SnapshotRetentionLimit": 0,
        "SnapshotWindow": "06:00-07:00",
        "ClusterEnabled": false,
        "CacheNodeType": "cache.r6gd.xlarge",       
        "TransitEncryptionEnabled": false,
        "AtRestEncryptionEnabled": false
    }
}
```

## データ階層化を有効にして、バックアップからクラスターにデータを復元する
<a name="data-tiering-enabling-snapshots"></a>

(コンソール)、(AWS CLI) または (ElastiCache API) を使用して、データ階層化を有効にした新しいクラスターにバックアップを復元できます。r6gd ファミリーのノードタイプを使用してクラスターを作成すると、データ階層化が有効になります。

### データ階層化を有効にして、バックアップからクラスターにデータを復元する (コンソール)
<a name="data-tiering-enabling-snapshots-console"></a>

**データ階層化を有効にして新しいクラスターにバックアップを復元するには (コンソール)**

1. AWS マネジメントコンソール にサインインして、ElastiCache コンソール ([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)) を開きます。

1. ナビゲーションペインで **[バックアップ]** を選択します。

1. バックアップのリストで、復元元のバックアップ名の左にあるチェックボックスをオンにします。

1. **[復元]** を選択します。

1. **[クラスターの復元]** ダイアログボックスに入力します。すべての [**Required**] (必須) フィールドと、デフォルト値から変更するその他のフィールドに入力します。

   1. **[クラスター ID]** – 必須。新しいクラスターの名前。

   1. **[クラスターモードが有効 (スケールアウト)]** – Valkey または Redis OSS (クラスターモードが有効) クラスターの場合はこれを選択します。

   1. **Node Type** - **cache.r6gd.xlarge** または r6gd ファミリーの他のノードタイプを指定します。

   1. **[シャード数]** – 新しいクラスター (API/CLI: ノードグループ) に必要なシャード数を選択します。

   1. [**Replicas per Shard**] – 各シャードに必要なリードレプリカのノード数を選択します。

   1. [**Slots and keyspaces**] – シャード間でキーを分散する方法を選択します。キーの分散を指定する場合は、各シャードのキー範囲を指定するテーブルを作成します。

   1. [**Availability zone(s)**] – クラスターのアベイラビリティーゾーンの選択方法を指定します。

   1. [**Port**] – 新しいクラスターで別のポートを使用する場合のみ、これを選択します。

   1. [**Choose a VPC**] – このクラスターを作成する VPC を選択します。

   1. **[パラメータグループ]** – 選択したノードタイプの Valkey または Redis OSS オーバーヘッドに十分なメモリを予約するパラメータグループを選択します。

1. すべての設定が正しいことを確認したら、**[作成]** を選択します。

クラスター作成の詳細については、[Valkey または Redis OSS 用のクラスターの作成](Clusters.Create.md) を参照してください。

### データ階層化を有効にして、バックアップからクラスターにデータを復元する (AWS CLI)
<a name="data-tiering-enabling-snapshots-cli"></a>

AWS CLI を使用してレプリケーショングループを作成する場合、*cache.r6gd.xlarge* などの r6gd ファミリーからノードタイプを選択し、`--data-tiering-enabled` パラメータを設定することで、デフォルトでデータ階層化が使用されます。

r6gd ファミリーからノードタイプを選択する際に、データ階層化をオプトアウトすることはできません。`--no-data-tiering-enabled` パラメータを設定すると、オペレーションは失敗します。

Linux、macOS、Unix の場合:

```
aws elasticache create-replication-group \
   --replication-group-id redis-dt-cluster \
   --replication-group-description "Redis OSS cluster with data tiering" \
   --num-node-groups 1 \
   --replicas-per-node-group 1 \
   --cache-node-type cache.r6gd.xlarge \
   --engine redis \   
   --cache-subnet-group-name default \
   --automatic-failover-enabled \
   --data-tiering-enabled \
   --snapshot-name my-snapshot
```

Linux、macOS、Unix の場合:

```
aws elasticache create-replication-group ^
   --replication-group-id redis-dt-cluster ^
   --replication-group-description "Redis OSS cluster with data tiering" ^
   --num-node-groups 1 ^
   --replicas-per-node-group 1 ^
   --cache-node-type cache.r6gd.xlarge ^
   --engine redis ^   
   --cache-subnet-group-name default ^
   --automatic-failover-enabled ^
   --data-tiering-enabled ^
   --snapshot-name my-snapshot
```

このオペレーションを実行すると、以下のようなレスポンスが表示されます。

```
{
    "ReplicationGroup": {
        "ReplicationGroupId": "redis-dt-cluster",
        "Description": "Redis OSS cluster with data tiering",
        "Status": "creating",           
        "PendingModifiedValues": {},
        "MemberClusters": [
            "redis-dt-cluster"
        ],
        "AutomaticFailover": "enabled",
        "DataTiering": "enabled",
        "SnapshotRetentionLimit": 0,
        "SnapshotWindow": "06:00-07:00",
        "ClusterEnabled": false,
        "CacheNodeType": "cache.r6gd.xlarge",        
        "TransitEncryptionEnabled": false,
        "AtRestEncryptionEnabled": false
    }
}
```