データ階層化 - Amazon MemoryDB

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

データ階層化

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

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

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

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

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

ベストプラクティス

推奨されるベストプラクティスを以下に示します:

  • データ階層化は、データセット全体の最大 20% に定期的にアクセスするワークロードや、 上のデータにアクセスするときに追加のレイテンシーを許容できるアプリケーションに最適ですSSD。

  • データ階層型ノードで使用可能なSSD容量を使用する場合は、値サイズをキーサイズよりも大きくすることをお勧めします。値のサイズは 128 MB を超えることはできません。128 MB を超えると、ディスクに移動されません。項目が DRAMと の間で移動されるとSSD、キーは常にメモリに残り、値のみがSSD階層に移動します。

制限事項

データ階層化には以下の制限があります。

  • 使用するノードタイプは、us-east-2us-east-1us-west-2us-west-1eu-west-1eu-west-3eu-central-1ap-northeast-1ap-southeast-1ap-southeast-2ap-south-1ca-central-1sa-east-1 のリージョンで使用できる r6gd ファミリーのものである必要があります。

  • r6gd クラスターは、r6gd を使用しない限りスナップショットを別のクラスターに復元できません。

  • データ階層化クラスターのスナップショットを Amazon S3 にエクスポートすることはできません。

  • 分岐なしの保存はサポートされていません。

  • データ階層化クラスター (r6gd ノードタイプを使用するクラスターなど) からデータ階層化を使用しないクラスター (r6g ノードタイプを使用するクラスターなど) へのスケーリングはサポートされていません。

  • データ階層化では、volatile-lruallkeys-lru および noeviction の maxmemory ポリシーのみがサポートされます。

  • 128 MiB を超える項目は に移動されませんSSD。

データ階層化の料金

R6gd ノードの合計容量 (メモリ + SSD) は 5 倍であり、R6g ノード (メモリのみ) と比較して最大使用率で実行した場合、ストレージコストを 60% 以上削減できます。詳細については、「MemoryDB の料金‬」を参照してください。‬‬‬‬‬‬

モニタリング

MemoryDB は、データ階層化を使用するクラスターのパフォーマンスをモニタリングするために特別に設計されたメトリクスを提供します。DRAM と比較した の項目の比率をモニタリングするにはSSD、 でCurrItemsメトリクスを使用できますMemoryDB のメトリック。パーセンテージは (CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter) のように計算できます。メモリ内の項目のパーセンテージが 5% を下回った場合は、MemoryDB クラスターのスケーリング を検討することをお勧めします。

詳細については、MemoryDB のメトリック の データ階層化を使用する MemoryDB クラスターのメトリクスを参照してください。

データ階層化の使用

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

クラスター作成の詳細については、ステップ 2: クラスターを作成する を参照してください。

を使用してクラスターを作成するときは 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

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 } }

データ階層化を有効にして、スナップショットからクラスターにデータを復元する

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

データ階層化を有効にして、スナップショットからクラスターにデータを復元する (コンソール)

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

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

を使用してクラスターを作成する場合 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" }