

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

# Storage
<a name="storage"></a>

 Neptune は、プロパティグラフデータのディクショナリガベージコレクション (GC) をサポートしています。これは、`neptune_streams` がアクティブでないときに `neptune_lab_mode` [パラメータ](parameters.md)を介して有効にできます。このバックグラウンドジョブを有効にすると、未使用のディクショナリエントリがクリーンアップされ、データの増加率が低下する可能性があります。この機能は、soft\$1delete (明示的に削除せずにエントリを削除済みとしてマークする) と有効 (明示的にエントリを削除する) の 2 つのモードで実行できます。GC プロセスは、CPU やバッファキャッシュなどのリソースのクエリスレッドと競合することでシステムパフォーマンスに影響を与える可能性があり、最大同時実行数は 16 スレッドです。

 Neptune は、インラインサーバー生成 ID もサポートしています。このエッジ 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`、インデックス内のスペースを新しい挿入用に解放します。ディクショナリ GC が有効な場合、`VolumeBytesUsed` の増加率は、有効でない場合よりも低くなる可能性があります。

 ディクショナリガベージコレクションはバックグラウンドで実行され、すべてのグラフとディクショナリデータをスキャンして、使用されていない用語を見つけます。データの約 6% が変更されると、起動時に新しい実行がトリガーされます。GC は、CPU、バッファキャッシュ、元に戻すログ生成、書き込み I/O オペレーションなどのサーバーリソースのクエリスレッドと競合するため、クエリスループットが低下する可能性があります。GC はクエリによってアクティブに操作されないデータをスキャンするため、ライターノードのバッファキャッシュに影響を与える可能性があります。GC が新しい削除を実行すると、クラスターは追加の書き込み I/O オペレーションを表示し、GC が消去を実行するとパージする必要がある UNDO ログの生成量が増加し、これによって `UndoLogListSize` メトリクスの値が高くなる可能性もあります。

 GC は、 `soft_delete`と の 2 つのモードで実行できます`enabled`。`soft_delete` モードで実行すると、未使用のディクショナリエントリは削除済み (soft\$1delete) とマークされますが、明示的には削除されません。このモードは、バックグラウンドオペレーションがオンになった後のパフォーマンス特性を理解するためにも使用できます。`enabled` モードを使用すると、エントリは明示的に削除されます (「ハード」削除）。`enabled` モードに切り替える前に、一定期間 GC を `soft_delete` モードで実行することをお勧めします。

 ディクショナリ GC は、最大同時実行数 16 をサポートします (16 個以上のコアを搭載するマシンの場合)。デフォルトでは 1 つのスレッドで実行されますが、初めて有効にすると、より高い同時実行数で実行できます。ディクショナリ GC スレッド (1 つまたは複数) は、クエリスレッドと同等の優先度で実行され、ライターのリソースと同等に競合します。

 ディクショナリ GC は、`DictionaryGCMode` キーを設定することで `neptune_lab_mode` [パラメータ](parameters.md)を介して有効にできます。`disabled` (デフォルト)、`soft_delete`、または `enabled` の 3 つの値を使用できます。例えば、次のコードサンプルでは、`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 設定[パラメータ](parameters.md) `neptune_enable_inline_server_generated_edge_id` を使用して有効にできます。この機能は、エンジンリリース [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 が設定されたデータを挿入しようとするクエリに対してエラーが表示されます。

 インラインサーバー生成エッジ ID 機能は、クラスターレベルのパラメータ `neptune_enable_inline_server_generated_edge_id` を `1` に設定することで有効にできます。インスタンスの再起動が必要です。次の例では、サーバーで生成されたエッジ 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": []
        }
    }
}
```