

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

# 스토리지
<a name="storage"></a>

 Neptune은 속성 그래프 데이터에 대한 딕셔너리 폐영역 회수(GC)를 지원하며, `neptune_streams`가 활성화되지 않은 경우 `neptune_lab_mode` [파라미터를](parameters.md) 통해 활성화할 수 있습니다. 활성화되면이 백그라운드 작업은 사용되지 않는 딕셔너리 항목을 정리하여 잠재적으로 데이터 증가율을 줄일 수 있습니다. 이 기능은 soft\$1delete(명시적 제거 없이 삭제된 것으로 항목 표시)과 enabled(명시적으로 항목 삭제)의 두 가지 모드로 실행할 수 있습니다. GC 프로세스는 CPU 및 버퍼 캐시와 같은 리소스에 대한 쿼리 스레드와 경합하여 시스템 성능에 영향을 미칠 수 있으며 최대 16개의 스레드 동시성으로 실행할 수 있습니다.

 또한 Neptune은 인라인 서버 생성 엣지 ID를 지원하며, neptune\$1streams가 활성화되지 않은 경우 구성 [파라미터](parameters.md)를 통해 활성화할 수 있습니다. 이 기능이 활성화되면 서버는 예약된 접두사 "neptune\$1reserved"를 사용하여 사용자 정의 ID가 없는 엣지에 대해 고유한 인라인 ID를 생성합니다. 이러한 인라인 ID는 딕셔너리에 저장되지 않으므로 스토리지 효율성이 향상될 수 있습니다.

**Topics**
+ [Neptune 딕셔너리 폐영역 회수](storage-gc.md)
+ [Neptune 인라인 서버 생성 엣지 ID](storage-edge-id.md)

# Neptune 딕셔너리 폐영역 회수
<a name="storage-gc"></a>

 Neptune은 속성 그래프 데이터에 대한 `neptune_lab_mode` [파라미터를](parameters.md) 통해 활성화할 수 있는 딕셔너리 폐영역 회수(GC)를 지원합니다. `neptune_streams`가 활성화되지 않은 경우 속성 그래프 데이터만 있는 클러스터에 대해 활성화할 수 있습니다. `neptune_streams`가 활성화되어 있거나 만료되지 않은 `neptune_streams` 데이터가 있는 경우 기능이 자동으로 비활성화됩니다. 이 기능을 활성화하려면 라이터 인스턴스를 재부팅해야 합니다. 이 기능은 엔진 릴리스 [1.4.3.0](https://docs.aws.amazon.com/releases/release-1.4.3.0.xml)부터 사용할 수 있습니다.

 활성화하면 사용하지 않는 딕셔너리 항목이 백그라운드 작업에 의해 정리됩니다. 를 줄이지 않고 `VolumeBytesUsed`인덱스에서 새 삽입을 위한 공간을 확보합니다. `VolumeBytesUsed`의 성장률은 딕셔너리 GC를 활성화하면 그렇지 않은 경우에 비해 낮을 수 있습니다.

 딕셔너리 폐영역 회수는 백그라운드에서 실행되며 모든 그래프 및 딕셔너리 데이터를 스캔하여 사용하지 않는 용어를 찾습니다. 데이터의 약 6%가 변경되면 시작 시 새 실행이 트리거됩니다. GC는 CPU, 버퍼 캐시, 실행 취소 로그 생성 및 쓰기 I/O 작업과 같은 서버 리소스의 쿼리 스레드와 경쟁하여 쿼리 처리량을 잠재적으로 줄일 수 있습니다. GC는 쿼리에 의해 적극적으로 참조되지 않는 데이터를 스캔하므로, 작성자 노드의 버퍼 캐시에 영향을 미칠 수 있습니다. GC가 새 삭제를 수행하면 클러스터에 추가 쓰기 I/O 작업이 표시되고 제거할 실행 취소 로그가 더 많아져 `UndoLogListSize` 지표 값이 높아질 수도 있습니다.

 GC는 `soft_delete` 및의 두 가지 모드로 실행할 수 있습니다`enabled`. `soft_delete` 모드에서 실행하면 미사용 사전 항목이 삭제됨(soft\$1delete)으로 표시되지만 명시적으로 삭제되지는 않습니다. 이 모드는 백그라운드 작업을 켠 후 성능 특성을 이해하는 데에도 사용할 수 있습니다. `enabled` 모드를 사용하면 항목이 명시적으로 삭제됩니다('하드' 삭제). `soft_delete` 모드로 전환하기 전에 일정 기간 동안 `enabled` 모드에서 GC를 실행하는 것이 좋습니다.

 딕셔너리 GC는 최대 16개의 동시성을 지원합니다(코어가 16개 이상인 시스템에서). 기본적으로 단일 스레드로 실행되지만 처음 활성화하면 더 높은 동시성으로 실행할 수 있습니다. 딕셔너리 GC 스레드(들)는 쿼리 스레드와 동일한 우선 순위로 실행되며 라이터의 리소스와 동등하게 경쟁합니다.

 딕셔너리 GC는 `DictionaryGCMode` 키를 설정하여 `neptune_lab_mode` [파라미터를](parameters.md) 통해 활성화할 수 있습니다. 이 키는 `disabled`(기본값), `soft_delete`, `enabled`의 세 가지 값을 가질 수 있습니다. 예를 들어, 다음 코드 샘플은 `DictionaryGCMode`를 `soft_delete`로 설정합니다.

```
neptune_lab_mode = 'DictionaryGCMode=soft_delete'
```

 동시성 [파라미터](parameters.md)인 `DictionaryGCConcurrency`는 선택 사항이며 1부터 16 사이의 값을 가질 수 있습니다. 최소 16과 코어 수보다 높은 값으로 설정된 경우 동시성은 해당 값으로 제한됩니다.

```
neptune_lab_mode = 'DictionaryGCMode=soft_delete,DictionaryGCConcurrency=2'
```

 사용 가능한 데이터가 있으면 서버가 시작된 후 백그라운드에서 딕셔너리 GC 작업이 활성화됩니다. 엔진 상태에는 딕셔너리 GC의 현재 상태가 표시됩니다. 아래 표시된 예제 출력은 딕셔너리 GC가 `soft_delete` 모드에 있고 동시성 2로 실행 중임을 보여줍니다. 백그라운드 작업이 실행 중인 경우 사용되지 않는 딕셔너리 항목을 적극적으로 스캔하여 삭제하거나 새 GC 라운드를 트리거하기 위해 새 삭제 집합을 대기할 수 있습니다.

```
{"status":"healthy",...,"labMode":{"ObjectIndex":"disabled","DictionaryGC":"{Mode=enabled,Concurrency=2}"},...}
```

 다음 조건 중 하나라도 충족되면 딕셔너리 GC가 일시 중지됩니다.
+  활성 대량 로드입니다.
+  사용 가능한 메모리는 15Gb 미만입니다.
+  `UndoLogListSize`가 1,000,000보다 높습니다.

# Neptune 인라인 서버 생성 엣지 ID
<a name="storage-edge-id"></a>

 Neptune은 인라인 서버 생성 엣지 ID를 지원합니다. `neptune_streams`가 활성화되지 않은 경우 `neptune_enable_inline_server_generated_edge_id` [파라미터](parameters.md)를 통해 활성화할 수 있습니다. 이 기능은 엔진 릴리스 [1.4.3.0](https://docs.aws.amazon.com/releases/release-1.4.3.0.xml)부터 Gremlin 쿼리에 사용할 수 있으며 향후 릴리스에서 OpenCypher 쿼리에 사용할 수 있습니다.

 엣지 ID는 엣지의 고유 식별자입니다. 엣지를 삽입할 때 엣지 ID를 제공할 수 있습니다. ID가 제공되지 않은 경우 서버는 기본적으로 UUID 기반 ID를 생성하여 엣지에 할당합니다. 사용자 정의 ID와 마찬가지로 UUID 기반 서버 생성 ID는 딕셔너리에 저장됩니다.

 `neptune_enable_inline_server_generated_edge_id` 기능이 활성화되면 서버는 쿼리에 ID가 제공되지 않을 때 고유한 인라인 ID를 생성합니다. 인라인 엣지 ID는 딕셔너리에 저장되지 않으므로 스토리지 효율성이 향상됩니다. 서버 생성 인라인 ID는 예약된 접두사 `neptune_reserved`로 시작합니다.

**주의**  
 Neptune은 서버에서 생성된 인라인 ID의 `'neptune_reserved'` 접두사를 예약합니다. 예약된 접두사로 시작하는 사용자 정의 ID로 데이터를 삽입하려고 시도하는 쿼리에 대해 오류가 표시됩니다.

 클러스터 파라미터 `neptune_enable_inline_server_generated_edge_id`를 `1`로 설정하여 인라인 서버 생성 엣지 ID 기능을 활성화할 수 있습니다. 인스턴스를 재부팅해야 합니다. 다음 예제에서는 서버 생성 엣지 ID 기능을 활성화합니다.

```
"ParameterName=neptune_enable_inline_server_generated_edge_id,ParameterValue=1,ApplyMethod=pending-reboot"
```

 기능이 활성화되어 있는지 확인하려면 엔진 상태의 기능을 확인할 수 있습니다. `neptune_streams`가 활성화되면 이 기능이 자동으로 비활성화됩니다. 다음 예제 출력은 활성화된 기능의 엔진 상태를 보여줍니다.

```
"features":{"InlineServerGeneratedEdgeId":"enabled"}
```

 다음 Gremlin 예제에서는 인라인 서버 생성 엣지 ID 기능이 활성화된 경우 사용자 정의 ID 없이 엣지를 추가합니다.

```
curl - X POST--url https: //<neptune-cluster-endpoint>:8182/gremlin/ --data '{"gremlin":"g.withSideEffect(\"Neptune#disablePushdownOptimization\", true).addV().property(id, \"a\").addV().property(id, \"b\").addE(\"el\").to(V(\"a\"))"}'
{
    "requestId": "b6b84605-53ad-4c04-baf1-7f0f31a3aeaf",
    "status": {
        "message": "",
        "code": 200,
        "attributes": {
            "@type": "g:Map",
            "@value": []
        }
    },
    "result": {
        "data": {
            "@type": "g:List",
            "@value": [{
                "@type": "g:Edge",
                "@value": {
                    "id": "neptune_reserved_231850767",
                    "label": "el",
                    "inVLabel": "vertex",
                    "outVLabel": "vertex",
                    "inV": "a",
                    "outV": "b"
                }
            }]
        },
        "meta": {
            "@type": "g:Map",
            "@value": []
        }
    }
}
```