

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

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

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

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

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

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

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

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

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

推奨されるベストプラクティスを以下に示します：
+ データ階層化は、データセット全体の最大 20% に定期的にアクセスするワークロードや、SSD 上のデータにアクセスする際に増加するレイテンシーを許容できるアプリケーションに最適です。
+ データ階層化ノードで利用可能な SSD 容量を使用する場合は、値のサイズをキーサイズよりも大きくすることをお勧めします。値のサイズは 128 MB を超えることはできません。128 MB を超えると、ディスクに移動されません。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-west-3`、`eu-central-1`、`ap-northeast-1`、`ap-southeast-1`、`ap-southeast-2`、`ap-south-1`、`ca-central-1`、`sa-east-1` のリージョンで使用できる r6gd ファミリーのものである必要があります。
+ r6gd クラスターは、r6gd を使用しない限りスナップショットを別のクラスターに復元できません。
+ データ階層化クラスターのスナップショットを Amazon S3 にエクスポートすることはできません。
+ 分岐なしの保存はサポートされていません。
+ データ階層化クラスター (r6gd ノードタイプを使用するクラスターなど) からデータ階層化を使用しないクラスター (r6g ノードタイプを使用するクラスターなど) へのスケーリングはサポートされていません。
+ データ階層化では、`volatile-lru`、`allkeys-lru` および `noeviction` の maxmemory ポリシーのみがサポートされます。
+ 128 MiB を超える項目は SSD に移動されません。

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

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

# データ階層化のモニタリング
<a name="data-tiering-monitoring"></a>

MemoryDB は、データ階層化を使用するクラスターのパフォーマンスをモニタリングするために特別に設計されたメトリクスを提供します。SSD と比較した DRAM 内の項目の比率をモニタリングするには、[MemoryDB のメトリック](metrics.memorydb.md) で ‭`CurrItems` メトリクスを使用できます。パーセンテージは `(CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter)` のように計算できます。

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

 メモリ内の項目のパーセンテージが 5% を下回った場合は、[MemoryDB クラスターのスケーリング](scaling-cluster.md)を検討することをお勧めします。詳細については、「[MemoryDB のメトリック](metrics.memorydb.md)」の*データ階層化を使用する MemoryDB クラスターのメトリクス*を参照してください。

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

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

クラスターを作成する場合は、r6gd ファミリーから ‭db.r6gd.xlarge‭ などのノードタイプを選択し、データ階層化を使用します。‬‬‬‬‬‬ ノードタイプを選択すると、データ階層化が自動的に有効になります。

クラスター作成の詳細については、[ステップ 2: クラスターを作成する](getting-started.md#getting-started.createcluster) を参照してください。

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

AWS CLI を使用してクラスターを作成する場合は、r6gd ファミリーから db.r6gd.xlarge などのノードタイプを選択し、`--data-tiering` パラメータを設定してデータ階層化を使用します。

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

Linux、macOS、Unix の場合:

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey  \
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering
```

Windows の場合:

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg
   --data-tiering
```

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

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",        
        "ACLName": "my-acl",
        "DataTiering":"true",
        "AutoMinorVersionUpgrade": true
    }
}
```

# スナップショットからクラスターにデータを復元する
<a name="data-tiering-enabling-snapshots"></a>

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

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

データ階層化を有効にして新しいクラスターにスナップショットを復元するには (コンソール)「[スナップショットからの復元 (コンソール)](snapshots-restoring.md#snapshots-restoring-CON)」の手順に従います。

データ階層化を有効にするには r6gd ファミリーからノードタイプを選択する必要があることに注意してください。

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

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

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

Linux、macOS、Unix の場合:

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey 
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering \
   --snapshot-name my-snapshot
```

Windows の場合:

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg ^
   --data-tiering ^
   --snapshot-name my-snapshot
```

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

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",
        "ACLName": "my-acl",       
        "DataTiering": "true"
}
```