Articles

Sharding

Shardingは、大きなデータベーステーブルの行または列を複数の小さなテーブルに分割することにより、データベース管理システムを最適化する 新しいテーブルは”シャード”(またはパーティション)と呼ばれ、新しいテーブルには同じスキーマがありますが一意の行があります(“水平シャーディング”の場合)、または元のテーブルのスキーマの適切なサブセットであるスキーマがあります(“垂直シャーディング”の場合)。

シャーディングは、複数のコンピュータにデータを分散するために、大きなテーブルの行を複数の小さなテーブルに分離します。
シャーディングでは、”シャード”(またはパーティション)と呼ばれる新しいテーブルが作成されます。 新しい各テーブルには、同じスキーマがありますが一意の行があります(”水平シャーディング”の場合)、または元のテーブルのスキーマの適切なサブセットである

なぜシャーディングが使用されるのですか?

シャーディングは、スケーラブルなデータベースアーキテクチャで共通の概念です。 より大きなテーブルをシャードすることで、論理シャードと呼ばれる新しいデータチャンクを複数のノードに格納して、水平方向のスケーラビリティとパフォーマ 論理シャードが別のノードに格納されると、それは物理シャードと呼ばれます。

単一のマシン上でデータベースを実行すると、最終的には任意のクエリに適用できるコンピューティングリソースの量の限界に達し、効率的に作業できる最大量のデータに達することは明らかです。 水平方向にスケールアウトすることで、柔軟なデータベース設計を可能にし、パフォーマンスを向上させることができます。

  • 超並列処理を使用すると、クラスター全体のすべてのコンピューティングリソースをクエリごとに利用できます。
  • 個々のシャードは論理テーブル全体よりも小さいため、クエリに応答するときに各マシンがスキャンする必要がある行数が少なくなります。

水平シャーディングは、クエリがグループ化されることが多い行のサブセットを返す傾向がある場合に効果的です。 たとえば、短い日付範囲に基づいてデータをフィルター処理するクエリは、日付範囲が必然的にサーバーのサブセットのみにクエリを制限するため、水平シャー

垂直シャーディングは、クエリがデータの列のサブセットのみを返す傾向がある場合に有効です。 たとえば、一部のクエリが名前のみを要求し、他のクエリがアドレスのみを要求する場合、名前とアドレスを別々のサーバーにシャードすることができます。

また、シャードされたデータベースは、より高いレベルの可用性を提供できます。 シャードされていないデータベースで停止が発生した場合、アプリケーション全体が使用できなくなります。 シャーディングデータベースでは、不足しているデータのチャンクに依存しているアプリケーションの部分のみが使用できません。 実際には、シャード化されたデータベースは、バックアップシャードを追加のノードにレプリケートすることによって、このような停止の影響をさらに軽減することがよくあります。

シャーディングとパーティショニングの違いは何ですか?

シャーディングと分割は、大きなデータセットを小さなサブセットに分割することです。 違いは、シャーディングはデータが複数のコンピュータに分散されていることを意味し、パーティショニングは分散されていないことです。 パーティション分割とは、単一のデータベースインスタンス内のデータのサブセットをグループ化することです。 多くの場合、シャーディングおよび分割という用語は、特に「水平」および「垂直」という用語が先行する場合には、同義的に使用されることさえある。”したがって、”水平シャーディング”と”水平分割”は同じことを意味することができます。

関連トピック

メモリ内計算

エッジコンピューティング

グリッドコンピューティング

さらに読む

Hazelcast IMDG3.12はCP Subsystemを導入

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です