View a markdown version of this page

Storage - Amazon Neptune

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

Storage

Neptune のデータは、NVMe (NVMe) SSD ベースのドライブを使用する単一の仮想ボリュームであるクラスターボリュームに保存されます。クラスターボリュームは、論理ブロックのコレクションで構成されます。これらのセグメントにはそれぞれ 10 ギガバイト (GB) のストレージが割り当てられます。各セグメントのデータは、DB クラスターが存在する 1 つの AWS リージョンの 3 つのアベイラビリティーゾーン (AZs) にレプリケートされます。

Neptune DB クラスターが作成されると、10 GB の単一のセグメントが割り当てられます。データ量が増加し、現在割り当てられているストレージを超えると、Neptune は新しいセグメントを追加してクラスターボリュームを自動的に拡張します。Neptune クラスターボリュームは、中国リージョンと 64 TiB に制限されている AWS GovCloud (米国) リージョンを除く、サポートされているすべてのリージョンで最大サイズ 128 テビバイト (TiB) まで拡張できます。

DB クラスターボリュームには、すべてのユーザーデータ、インデックス、ディクショナリ ( Neptune のグラフデータモデルセクションで説明)、および内部トランザクションログなどの内部メタデータが含まれます。インデックスや内部ログを含め、このグラフデータはすべて、クラスターボリュームの最大サイズを超えることはできません。

I/O 最適化ストレージオプション

Neptune は、ストレージに対して、次の 2 つの料金モデルを提供しています。

  • 標準ストレージ — 標準ストレージは、I/O 使用率が低いか中程度のアプリケーション向けの費用対効果の高いデータベースストレージです。

  • I/O 最適化ストレージ — I/O 最適化ストレージでは、使用したストレージの分のみ料金が発生します。標準ストレージよりもコストが高く、使用した I/O に対する料金は発生しません。

    I/O 最適化ストレージを使用すると、I/O を大量に消費するグラフワークロードの予測可能なコスト、低い I/O レイテンシー、一貫した I/O スループットが得られます。

    詳細については、「I/O 最適化ストレージ」を参照してください。

Neptune ストレージ割り当て

Neptune クラスターボリュームは 128 TiB (またはいくつかのリージョンでは 64 TiB) まで拡大できますが、割り当てられたスペースに対して課金されます。割り当てられる合計容量は、ストレージハイウォーターマークによって決まります。これは、クラスタボリュームの存在中の任意の時点でクラスタボリュームに割り当てられる最大量です。

つまり、 などのドロップクエリを実行するなど、クラスターボリュームからユーザーデータを削除してもg.V().drop()、割り当てられた領域の合計は変わりません。Neptune は、未使用の割り当て領域を自動的に最適化して、将来再利用します。

ユーザーデータに加えて、ディクショナリデータと内部トランザクションログもストレージを消費します。ディクショナリデータは、サポートするグラフデータを削除した後でも保持されますが、データを再導入すると Neptune はそれらのエントリを再利用できます。未使用のディクショナリエントリをクリーンアップするには、 を有効にしますディクショナリガベージコレクション。内部ログは、独自のハイウォーターマークを持つ別のストレージスペースを使用します。期限切れのログは、グラフデータではなく、他のログにのみ再利用されます。ログに割り当てられたスペースは、VolumeBytesUsedCloudWatch メトリクスによって報告された合計に含まれます。

割り当てられたストレージを最小限に保ち、スペースを再利用する方法を ストレージのベストプラクティス で確認してください。

Neptune ストレージ請求

ストレージコストは、前のセクションで説明したストレージのハイウォーターマークに基づいて請求されます。Amazon Neptune は複数のアベイラビリティーゾーンにデータをレプリケートしますが、データの 1 つのコピーに対してのみ料金が発生します。

DB クラスターの現在のストレージハイウォーターマークは、VolumeBytesUsedCloudWatch メトリクス (Amazon CloudWatch を使用した Neptune のモニタリングを参照) を監視して決定できます。

Neptune ストレージコストに影響を与える可能性のあるその他の要因には、データベーススナップショットとバックアップが含まれます。これらはバックアップストレージとして個別に請求され、Neptune ストレージコストに基づきます (「」を参照Neptune バックアップストレージの管理に役立つ CloudWatch メトリクス)。

ただし、クローンを作成した場合、データベースのうち、クローンは DB クラスター自体が使用しているのと同じクラスターボリュームを指しているため、元のデータに対する追加のストレージ料金は発生しません。クローンへのその後の変更では、コピーオンライトプロトコルを使い、その結果、追加のストレージコストが発生します。

Neptune の料金の詳細については、 AWS ウェブサイトのAmazon Neptune の料金」を参照してください。

Neptune ストレージのベストプラクティス

特定の種類のデータは Neptune の永続ストレージを消費するため、ストレージの大きな急増を回避するには、次のベストプラクティスを使用します。

  • グラフデータモデルを設計するときは、プロパティキーとユーザー向けの一時的な値の使用をできるだけ避けてください。

  • データモデルに変更を加える予定の場合は、高速リセット API を使ってDBクラスターのデータをクリアするまでは、新しいモデルを使用して既存の DB クラスターにデータをロードしないでください。多くの場合、新しいモデルを使用するデータを新しい DB クラスターにロードすることが最善策です。

  • 大量のデータで動作するトランザクションでは、それに応じて大きな内部ログが生成され、内部ログスペースのハイウォーターマークが永続的に増加する可能性があります。たとえば、DB クラスター内のすべてのデータを削除する 1 つのトランザクションで、大きな内部ログを生成できます。このログでは、大量の内部ストレージを割り当てる必要があります。これにより、グラフデータに使用できる領域が永続的に削減されます。

    これを回避するには、大きなトランザクションを小さなトランザクションに分割し、関連する内部ログが期限切れになり、後続のログで再利用できるように内部ストレージを解放します。

  • Neptune クラスターボリュームの増加を監視するよう、VolumeBytesUsedCloudWatch メトリクスで CloudWatch アラームを設定できます。これは、データがクラスターボリュームの最大サイズに達している場合に特に役立ちます。詳細については、Using Amazon CloudWatch alarms(Amazon CloudWatch アラームを使用する)を参照してください。

DB クラスターに大量の未使用の割り当て領域がある場合は、そのストレージを縮小できます。これを行うには、グラフ内のすべてのデータをエクスポートし、新しい DB クラスターに再ロードします。DB クラスターからデータをエクスポートする簡単な方法については、Neptune データエクスポートサービスとユーティリティを参照してください。また、Neptune にデータをインポートする簡単な方法については、Neptune バルクローダーを参照してください。

注記

スナップショットの作成と復元はDB クラスターに割り当てられるストレージの量を減らすことはありません。スナップショットはクラスターの基盤となるストレージの元のイメージを保持するためです。使用されている割り当て済みストレージの量があまり多くない場合、割り当てられたストレージ量を収縮する唯一の方法として、グラフデータをエクスポートし、それを新しい DB クラスターに再ロードできます。

Neptune のストレージ、信頼性、高可用性。

Amazon Neptune は、信頼性、耐久性、および耐障害性を持つように設計されています。

Neptune データのコピーは 3 つのアベイラビリティーゾーン (AZs) にわたって維持されるため、データのストレージは耐久性が高く、データ損失の可能性は非常に低くなります。Amazon Neptune は、その中に DB インスタンスがあるかどうかにかかわらず、アベイラビリティーゾーン間でデータを自動的にレプリケートします。レプリケーションの数は、クラスター内の DB インスタンスの数とは関係ありません。

つまり、Neptune はグラフデータの新しいコピーを作成しないため、リードレプリカをすばやく追加できます。代わりに、リードレプリカから、すべてのデータが既に含まれているクラスターボリュームに接続します。同様に、リードレプリカを削除しても、基になるデータは削除されません。

クラスターボリュームとそのデータは、すべての DB インスタンスを削除した後にのみ削除できます。

Neptune はまた、クラスターボリュームを構成するディスクボリュームの障害を自動的に検出します。セグメント内のデータのコピーが破損すると、Neptune はそのセグメントを直ちに修復し、同じセグメント内のデータの他のコピーを使用して、修復されたデータが最新であることを確認します。その結果、Neptune はデータ損失を回避し、ディスク障害から回復するためにpoint-in-time復元を実行する必要性を減らします。