데이터 계층화 - Amazon MemoryDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

데이터 계층화

r6gd 패밀리의 노드 유형을 사용하는 클러스터는 메모리와 로컬 SSD(solid state drives) 스토리지 간에 데이터를 계층화합니다. 데이터 계층화는 데이터를 메모리에 저장하는 것 외에도 각 클러스터 노드에서 저렴한 SSD (Solid State Drive) 를 활용하여 Redis OSS 워크로드를 위한 새로운 가격 대비 성능 옵션을 제공합니다. 다른 노드 유형과 마찬가지로 r6gd 노드에 기록된 데이터는 다중 AZ 트랜잭션 로그에 안정적으로 저장됩니다. 데이터 계층화는 전체 데이터 세트의 최대 20%까지 정기적으로 액세스하는 워크로드와 SSD에서 데이터에 액세스할 때 추가 지연 시간을 허용할 수 있는 애플리케이션에 이상적입니다.

데이터 계층화가 있는 클러스터에서 MemoryDB는 저장하는 모든 항목의 마지막 액세스 시간을 모니터링합니다. 사용 가능한 메모리(DRAM)가 모두 사용되면 MemoryDB는 최근최소사용(LRU) 알고리즘을 사용하여 자주 액세스하지 않는 항목을 메모리에서 SSD로 자동으로 이동합니다. 이후에 SSD의 데이터에 액세스하면 MemoryDB가 요청을 처리하기 전에 자동 및 비동기식으로 다시 메모리로 이동합니다. 데이터의 하위 집합에만 정기적으로 액세스하는 워크로드가 있는 경우 데이터 계층화는 용량을 비용 효율적으로 확장할 수 있는 최적의 방법입니다.

데이터 계층화를 사용하면 키 자체는 항상 메모리에 남아 있지만 LRU는 메모리 대 디스크의 값 배치를 제어합니다. 일반적으로 데이터 계층화를 사용하는 경우 키 크기가 값 크기보다 작은 것이 좋습니다.

데이터 계층화는 애플리케이션 워크로드에 미치는 성능 영향을 최소화하도록 설계되었습니다. 예를 들어 500바이트 문자열 값을 가정하면 SSD에 저장된 데이터에 대한 읽기 요청 및 메모리의 데이터에 대한 읽기 요청과 비교하여 평균 450마이크로초의 지연 시간을 추가로 기대할 수 있습니다.

가장 큰 데이터 계층화 노드 크기(db.r6gd.8xlarge)를 사용하면 단일 500노드 클러스터에 대략 500TB까지 저장할 수 있습니다(읽기 복제본 1개를 사용하는 경우는 250TB). 데이터 계층화의 경우, MemoryDB는 노드당(DRAM) 메모리의 19%를 비데이터 사용을 위해 예약합니다. 데이터 계층화는 MemoryDB에서 지원되는 모든 Redis OSS 명령 및 데이터 구조와 호환됩니다. 이 기능을 사용하려면 클라이언트 측 변경 사항이 필요하지 않습니다.

모범 사례

다음 모범 사례를 따르는 것이 좋습니다.

  • 데이터 계층화는 전체 데이터 세트의 최대 20%까지 정기적으로 액세스하는 워크로드와 SSD에서 데이터에 액세스할 때 추가 지연 시간을 허용할 수 있는 애플리케이션에 이상적입니다.

  • 데이터 계층화 노드에서 사용 가능한 SSD 용량을 사용하는 경우 값 크기가 키 크기보다 큰 것이 좋습니다. 값 크기는 128MB를 초과할 수 없습니다. 그렇지 않으면 디스크로 이동되지 않습니다. DRAM과 SSD 간에 항목이 이동하면 키는 항상 메모리에 남아 있고 값만 SSD 계층으로 이동합니다.

제한 사항

데이터 계층화에는 다음과 같은 제한 사항이 있습니다.

  • 사용하는 노드 유형은 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-1sa-east-1과 같은 리전에서 사용할 수 있는 r6gd 패밀리의 노드 유형이어야 합니다.

  • r6gd 클러스터를 사용하지 않는 한 r6gd 클러스터의 스냅샷을 다른 클러스터로 복원할 수 없습니다.

  • 데이터 계층화 클러스터를 위해 스냅샷을 Amazon S3로 내보낼 수 없습니다.

  • Forkless 저장은 지원되지 않습니다.

  • 데이터 계층화 클러스터(예: r6gd 노드 유형을 사용하는 클러스터)에서 데이터 계층화를 사용하지 않는 클러스터(예: r6g 노드 유형을 사용하는 클러스터)로 확장은 지원되지 않습니다.

  • 데이터 계층화는 volatile-lru,allkeys-lrunoeviction 메모리 사용량 제한 정책만 지원합니다.

  • 128MiB보다 큰 항목은 SSD로 이동되지 않습니다.

데이터 계층화 요금

R6gD 노드는 총 용량(메모리 + SSD)의 5배 더 많으며 R6g 노드에 비해 최대 사용률로 실행될 때 보관 비용의 60% 이상의 절감 효과를 얻을 수 있습니다(메모리만 해당). 자세한 내용은 MemoryDB 요금 단원을 참조하세요.

모니터링

MemoryDB는 데이터 계층화를 사용하는 성능 클러스터를 모니터링하도록 특별히 설계된 지표를 제공합니다. SSD와 비교하여 DRAM의 항목 비율을 모니터링하려면 MemoryDB에 대한 지표에서 CurrItems 지표를 사용할 수 있습니다. 백분율은 (CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter)와(과) 같이 계산할 수 있습니다. 메모리에 있는 항목의 비율이 5% 미만으로 감소하면 MemoryDB 클러스터 크기 조정을 고려하는 것이 좋습니다.

자세한 내용은 MemoryDB에 대한 지표에서 데이터 계층화를 사용하는 MemoryDB 클러스터의 지표를 참조하세요.

데이터 계층화 사용

클러스터를 생성할 때 db.r6gd.xlarge와 같은 r6gd 패밀리의 노드 유형을 선택하여 데이터 계층화를 사용합니다. 해당 노드 유형을 선택하면 데이터 계층화가 자동으로 사용됩니다.

클러스터 생성에 대한 자세한 내용은 1단계: 클러스터 생성 섹션을 참조하세요.

를 사용하여 클러스터를 생성할 때는 r6gd 제품군에서 노드 유형 (예: db.r6gd.xlarge) 을 선택하고 매개변수를 설정하여 데이터 계층화를 사용합니다. AWS CLI--data-tiering

r6gd 패밀리의 노드 유형을 선택하는 경우 데이터 계층화를 선택 해제할 수 없습니다. --no-data-tiering 파라미터를 설정하는 경우 작업이 실패합니다.

Linux, macOS, Unix의 경우:

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

Windows의 경우:

aws memorydb create-cluster ^ --cluster-name my-cluster ^ --node-type db.r6gd.xlarge ^ --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": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "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 } }

데이터 계층화가 활성화된 상태에서 스냅샷에서 클러스터로 데이터 복원

(콘솔), (AWS CLI) 또는 (MemoryDB API) 를 사용하여 데이터 계층화가 활성화된 상태에서 스냅샷을 새 클러스터로 복원할 수 있습니다. r6gd 패밀리의 노드 유형을 사용하여 클러스터를 생성하는 경우 데이터 계층화가 활성화됩니다.

데이터 계층화가 활성화된 상태로 스냅샷에서 클러스터로 데이터 복원(콘솔)

데이터 계층화가 활성화된 새 클러스터(콘솔)로 스냅샷을 복원하려면 스냅샷에서 복원(콘솔)의 단계를 따르세요.

데이터 계층화를 활성화하려면 r6gd 패밀리의 노드 유형을 선택해야 합니다.

를 사용하여 클러스터를 생성할 때 기본적으로 r6gd 제품군에서 노드 유형 (예: db.r6gd.xlarge) 을 선택하고 매개변수를 설정하여 데이터 계층화를 사용합니다. AWS CLI --data-tiering

r6gd 패밀리의 노드 유형을 선택하는 경우 데이터 계층화를 선택 해제할 수 없습니다. --no-data-tiering 파라미터를 설정하는 경우 작업이 실패합니다.

Linux, macOS, Unix의 경우:

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

Linux, macOS, Unix의 경우:

aws memorydb create-cluster ^ --cluster-name my-cluster ^ --node-type db.r6gd.xlarge ^ --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": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "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" }