翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Neptune と Neo4j のアーキテクチャの違い
お客様がアプリケーションを Neo4j から Neptune に移行することを最初に検討する場合、多くの場合、インスタンスサイズに基づいて比較を実行 like-to-likeしようとします。ただし、Neo4j と NNeptune のアーキテクチャには根本的な違いがあります。Neo4j は、 all-in-oneデータロード、データ ETL、アプリケーションクエリ、データストレージ、管理オペレーションがすべてEC2インスタンスなどの同じコンピューティングリソースのセットで実行されるアプローチに基づいています。
対照的に、Neptune は、アーキテクチャが責任を分離し、リソースが分離されて動的かつ独立してスケーリングできるように、OLTP焦点を絞ったグラフデータベースです。
Neo4j から Neptune に移行するときは、アプリケーションのデータ耐久性、可用性、スケーラビリティの要件を判断してください。Neptune のクラスターアーキテクチャは、高い耐久性、可用性、スケーラビリティを必要とするアプリケーションの設計を簡素化します。Neptune のクラスターアーキテクチャを理解すれば、これらの要件を満たす Neptune クラスタートポロジを設計できます。
Neo4j のクラスターアーキテクチャ
多くの実稼働アプリケーションでは、Neo4j の因果クラスタリング
コアサーバーは Raft プロトコルを使用してデータを複製することにより、データの耐久性と耐障害性を実現します。
リードレプリカは、トランザクションログ配布を使用して、読み取りスループットの高いワークロードのデータを非同期でレプリケートします。
コアサーバーであれ、リードレプリカであれ、クラスター内のすべてのインスタンスにはグラフデータの完全なコピーが含まれます。
Neptune のクラスターアーキテクチャ
Neptune クラスターは、1 つのプライマリライターインスタンスと最大 15 個のリードレプリカインスタンスで構成されます。クラスター内のすべてのインスタンスは、インスタンスとは別の同じ基盤となる分散ストレージサービスを共有します。
プライマリライターインスタンスは、データベースへのすべての書き込み操作を調整し、垂直方向に拡張できるため、さまざまな書き込みワークロードを柔軟にサポートできます。読み取りオペレーションもサポートします。
-
リードレプリカインスタンスは、基盤となるストレージボリュームからの読み取り操作をサポートし、高い読み取りワークロードに対応するように水平方向に拡張できます。また、プライマリインスタンスのフェイルオーバーターゲットとして機能して、可用性を高めます。
注記
書き込みワークロードが多い場合は、読み取り側がデータの変更に対して一貫性を保てるように、リードレプリカインスタンスをライターインスタンスと同じサイズにスケーリングするのが最善です。
基盤となるストレージボリュームは、データベース内のデータの増加に応じて、ストレージ容量を最大 128 テビバイト (TiB) まで自動的に拡張します。
インスタンスサイズは動的で独立しています。各インスタンスはクラスターの実行中にサイズを変更でき、リードレプリカはクラスターの実行中に追加または削除できます。
Neptune サーバーレス機能では、需要の増減に応じてコンピューティング容量を自動的にスケールアップまたはスケールダウンできます。これにより、管理オーバーヘッドが軽減されるだけでなく、パフォーマンスを低下させたり、過剰なプロビジョニングを行ったりすることなく、需要の大幅な急増に対応するようにデータベースを構成できます。
Neptune クラスターは最大 7 日間停止できます。
Neptune は自動スケーリングもサポートしており、ワークロードに基づいてリーダーインスタンスのサイズを自動的に調整します。
Neptune のグローバルデータベース機能を使用すると、最大 5 つの他のリージョンにクラスターをミラーリングできます。
また、Neptune は、耐障害性を持つように設計されています。
クラスター内のすべてのインスタンスにデータストレージを提供するクラスターボリュームは、単一の で複数のアベイラビリティーゾーン (AZs) にまたがります AWS リージョン。各 AZ には、クラスターデータの完全なコピーが含まれます。
プライマリインスタンスが使用できなくなると、Neptune は一般に 30 秒未満で、データ損失なしで既存のリードレプリカに自動的にフェイルオーバーします。クラスターに既存のリードレプリカがない場合、Neptune は自動的に新しいプライマリインスタンスをプロビジョニングします。これもデータ損失ゼロです。
つまり、Neo4j の因果クラスターからNNeptune に移行すると、高いデータ耐久性と高可用性を実現するためにクラスタートポロジーを明示的に設計する必要がありません。これにより、予想される読み取りおよび書き込みワークロードや、可用性要件の増加に合わせて、いくつかの方法でクラスターのサイズを決定できます。
読み取り操作をスケーリングするには、リードレプリカインスタンスを追加するか、Neptune サーバーレス機能を有効にします。
可用性を向上させるには、クラスター内のプライマリインスタンスとリードレプリカを複数のアベイラビリティーゾーン () に分散しますAZs。
フェイルオーバー時間を短縮するには、プライマリのフェイルオーバーターゲットとして機能するリードレプリカインスタンスを少なくとも 1 つプロビジョニングしてください。各レプリカに優先度を割り当てることで、障害後にリードレプリカインスタンスがプライマリに昇格される順序を決めることができます。フェイルオーバーターゲットには、プライマリに昇格した場合にアプリケーションの書き込みワークロードを処理できるインスタンスクラスがあることを確認するのがベストプラクティスです。