シェアードエブリシング (シェアードエブリシング) とは | 意味や読み方など丁寧でわかりやすい用語解説

作成日: 更新日:

シェアードエブリシング (シェアードエブリシング) の読み方

日本語表記

シェアードエブリシング (シェアードエブリシング)

英語表記

Shared Everything (シェアードエブリシング)

シェアードエブリシング (シェアードエブリシング) の意味や用語解説

「シェアードエブリシング」は、複数の独立した処理ノード(サーバー)が、同一の共有ストレージを介してデータにアクセスするアーキテクチャモデルを指す。特にデータベースシステムにおいて、その設計思想を分類する際に用いられる概念の一つである。このモデルでは、各ノードはそれぞれ独自のCPUとメモリを保有し、独立したデータベースインスタンス(プロセス群やメモリ領域)を実行するが、実際のデータが格納されるディスクストレージはすべてのノードで共有される。つまり、データへのアクセスは「すべて共有される」という特徴を持つ。 このアーキテクチャの詳細について説明する。シェアードエブリシングのシステムでは、複数のサーバーマシンが高速なネットワーク(インターコネクトと呼ばれることも多い)で相互に接続され、さらにこれらのサーバーが共通のストレージエリアネットワーク(SAN)やネットワークアタッチトストレージ(NAS)といった共有ストレージシステムに接続される。各サーバーは、その共有ストレージ上の同じデータベースファイルに同時にアクセスする。例えば、Oracle Real Application Clusters (RAC) などがこのシェアードエブリシングアーキテクチャの代表例である。 このモデルの主要なメリットはいくつか挙げられる。まず、データの整合性維持が比較的容易である点である。すべてのノードが同一のデータソースを参照するため、データの分散管理に伴う複雑さが少なく、単一のデータソースであるかのように振る舞うことが可能となる。これにより、アプリケーション側でデータの同期や整合性を考慮する必要が軽減される。次に、運用管理の面での利便性がある。データが中央の共有ストレージに集約されているため、バックアップ、リカバリ、ストレージの拡張といったデータ管理タスクが一元的に行える。特定のノードが故障しても、データ自体は共有ストレージに存在するため、残りのノードが処理を引き継ぐことが可能であり、システムの高可用性を実現しやすい。また、新しいノードを追加することで処理能力を向上させる、いわゆるスケールアウトも可能である。 しかしながら、シェアードエブリシングアーキテクチャにはいくつかのデメリットや課題も存在する。最大の課題の一つは、共有ストレージがシステム全体のボトルネックになりやすいことである。すべてのノードからのデータアクセス要求が共有ストレージに集中するため、ストレージのIO性能やネットワーク帯域が限界に達すると、システム全体の処理性能が頭打ちになる。ノード数を増やしすぎると、かえって共有ストレージへの競合が激しくなり、性能向上どころか性能劣化を招く可能性もある。 また、各ノードが自身のメモリ内にデータのキャッシュを持つ場合、キャッシュコヒーレンシ(キャッシュの一貫性)の問題が発生する。あるノードがデータを更新した場合、他のノードのキャッシュにある古いデータが有効でないことを認識し、新しいデータを反映させる必要がある。これを実現するためには、ノード間でキャッシュの状態を同期するための複雑なプロトコルや、データへのアクセスを調整するためのロックメカニズムが必須となる。これらの同期処理やロック管理は、ノード間の通信オーバーヘッドを発生させ、システム全体の性能を低下させる要因となる。 さらに、共有ストレージ自体が単一障害点(Single Point of Failure: SPOF)となるリスクがある。共有ストレージシステムが故障した場合、たとえ複数のノードが無事であっても、データベースへのアクセスが不可能となり、システム全体が停止してしまう。このリスクを回避するためには、共有ストレージ自体を冗長化したり、より高価で堅牢なストレージシステムを導入したりする必要があり、これがシステム全体のコストを押し上げる要因となる。インターコネクトも同様にボトルネックやSPOFになりうる。 スケーラビリティについても、無限にノードを追加できるわけではない。前述の共有ストレージのボトルネックやキャッシュコヒーレンシのオーバーヘッドにより、ノード数がある程度を超えると、線形的な性能向上が期待できなくなる。特に、データへの更新頻度が高いトランザクション処理(OLTP)環境では、ロック競合やキャッシュ同期のコストが顕著になりやすい。 これらの特性から、シェアードエブリシングは、データの整合性が非常に重要であり、比較的ノード数が少なく、高い可用性が求められる環境に適している場合が多い。一方で、非常に高いスケーラビリティや、データアクセスが極めて分散しているような大規模なデータウェアハウスやWebサービスなどでは、シェアードナッシング(各ノードが自身のストレージを持つ)アーキテクチャの方が適しているとされる。システム設計においては、ワークロードの特性、性能要件、可用性要件、コストなどを総合的に考慮し、最適なアーキテクチャを選択することが肝要である。

シェアードエブリシング (シェアードエブリシング) とは | 意味や読み方など丁寧でわかりやすい用語解説