This is the Trace Id: 6a195b97708c2f0461e7a782016c9582
メイン コンテンツへスキップ
Azure

データベース シャーディングとは?

データベース シャーディングは、グローバルな分散システム間でソリューションのパフォーマンスと可用性を向上させる水平スケーリングの方法です。

データベース シャーディングを定義する

データベース シャーディングとは、大規模なデータベースをシャードと呼ばれる、より小さく管理しやすいセグメントに分割するプロセスを指します。アプリケーションとシステムがパフォーマンスや可用性に影響を与えることなく、増加するデータとユーザー ボリュームを処理できるように、水平方向のスケーリングがサポートします。組織はシャーディング戦略を使用して、現代のクラウド環境でのデータベースのスケーリングに関連するストレージの制約やその他の課題を克服できます。

  • データベース シャーディングは、共有なしアーキテクチャ (SNA) で実行される独立したシャードにデータベースを分割する水平スケーリングの方法として定義されます。
  • データはシャード キーを使用してシャードに分割され、アプリケーションは要求を適切なシャードにルーティングできます。
  • データは通常、数値、ハッシュ関数、検索ディレクトリ、または地理的な場所を使用してシャード間で分割されます。
  • データベース シャーディングの利点には、クエリ パフォーマンスの向上、水平スケーラビリティのサポート、フォールト トレランスの向上があります。
  • シャーディングのユース ケースには、銀行、eコマース、ソーシャル メディア プラットフォームが含まれます。これらは、多くの場合、データやユーザーの急増に対処する必要があります。

データベース シャーディングのしくみは?

データベース シャーディングは、シャードと呼ばれる小さな独立した部分に分割することで、大規模なデータベースを水平方向にスケーリングするために使用される手法です。各シャードは、同じスキーマを維持しながら、データ全体の個別のサブセットを含む個別のデータベースとして動作します。これにより、シャードは別々のサーバーで実行されていても、まとめて 1 つの論理データベースを形成できます。

データベース シャーディングは、共有なしアーキテクチャ (SNA) に従います。これは分散コンピューティング モデルであり、各シャードは、処理、メモリ、またはストレージ リソースを他のシャードと共有することなく独自に動作します。

シャード キー (データ内の特定のフィールドまたはフィールドの組み合わせ) によって、各シャードに格納されるデータが決まります。アプリケーションは、データの読み取りまたは書き込みを行う必要がある場合、シャード キーを使用して要求を適切なシャードにルーティングします。

シャーディング戦略

組織は、複数のシャードに分散されたデータをさまざまな方法で管理します。一般的な戦略をいくつか次に示します:

  • 範囲ベースまたは動的シャーディング: データは、シャード キー内の値の範囲で分割されます。たとえば、eコマース データベース内の 1 つのシャードに顧客 ID 番号 1~1,000,000 を割り当て、別のシャードに顧客 ID 番号 1,000,001~ 2,000,000 を割り当てることができます。この方法は範囲クエリに対して効率的ですが、特定の範囲にアクセスする頻度が高い場合、分布が不均等になる可能性があります。
  • ハッシュ ベースのシャーディング:データは、ハッシュ関数と呼ばれる数式を各シャード キーに適用することで、シャード間で均等に分散されます。この方法は、オーバーロードを防ぐのに役立ちますが、関連するデータを複数のシャードに分散させ、範囲クエリの効率を低下させる可能性があります。
  • ディレクトリベースまたは検索ベースのシャーディング: シャード マップが、どのシャード キーがどのデータに対応するかを示します。この戦略では、必要に応じてシャード キーをすばやく追加できる柔軟性が提供されますが、複雑さと潜在的なオーバーヘッドが増加します。
  • 地理的シャーディング: データは地理的な場所に基づいてパーティション分割されるため、リージョンごとのユーザーの待機時間が短縮され、データ所在地の要件がサポートされます。多くのプラットフォームでは、回復性を高めるために、地理的シャーディングとデータベース レプリケーションを組み合わせています。

データベースについての詳細情報。

データベース シャーディングの主な利点は何ですか?

データベース シャーディングでは、シャード キーとシャーディング戦略、およびクエリ ルーティングの最適化を慎重に選択する必要があります。データベース シャーディングの主な利点を次に示します:

  • クエリパフォーマンスの向上: 複数のシャードにデータを分散することで、データベースは各クエリの実行に必要なデータセットをより迅速に取得できます。これにより、応答時間が短縮されます。
  • 水平方向のスケーラビリティのサポート: 単一のサーバーでリソース容量をスケールアップするのではなく、組織はスケールアウトしてシャード (およびサーバー) を追加することで、増大するデータとワークロードのボリュームに対応できます。スケールアップとスケールアウトの詳細情報。
  • フォールト トレランスの強化: シャーディングでは SNA アプローチが採用されているため、各シャードは他のシャードから分離されます。1 つのシャードに問題が発生しても、他のシャードには影響しないため、システムの信頼性が向上します。シャード間のデータ レプリケーションにより、可用性がさらに保護されます。
  • コスト効率の向上: 多くの場合、データ シャードは、高価なハイエンド サーバーを必要とする大規模なデータベースよりもハードウェアとソフトウェアの要件が少なくなります。

AI ワークロードの最適化支援: 複雑なモノリシック データベースは、AI によるデータへのアクセス、予測の作成、時間の経過と共に学習する能力を低下させる可能性があります。シャーディングは、AI がより効果的に機能できる分散型でデータが豊富な環境の作成をサポートします。

データベース シャーディングの業界固有の例

データベース シャーディングは、データやユーザー トラフィックの急増や予測不可能なスパイクが発生するクラウドベースのソリューションで特に有効です。次のユース ケースでは、シャーディングをさまざまな業界に適用する方法を示します:

  • eコマース: 小売プラットフォームでは、顧客と注文データがシャードに分割され、ピーク時の製品検索とスムーズなチェックアウト エクスペリエンスを確保します。
  • 金融サービス: 銀行取引やその他の金融取引の記録は、日付または口座番号で分割され、効率的なクエリと、安全でスケーラブルなストレージが可能になります。
  • オンライン ゲーム: プレイヤーまたはセッション データはリージョンとユーザー ID で分割され、シャード間での負荷の分散と、世界中のユーザーの待機時間 (データが目的に到達するために必要な時間) が最小限に抑えられます。
  • ソーシャル メディア: ソーシャル メディア プラットフォームは、ユーザー プロファイルとアクティビティ フィードのデータをユーザー ID または時間の範囲で分割します。このアプローチにより、プラットフォームは最近の投稿に迅速にクエリを実行し、数百万人の同時ユーザーをサポートできます。
  • サービスとしてのソフトウェア (SaaS): 複数のテナントを持つ SaaS アプリは、一般的にテナント ID でデータを分割します。これにより、顧客データが分離され、ユーザー ベースの拡大に伴う管理が簡素化されます。または、テナントのワークロードまたは地理的な場所で分割することもできます。

ビッグ データ分析のしくみについて説明します。

データベース シャーディングの未来

複数の独立したサーバーにデータを分散することで、シャーディングは単一サーバーの負荷を軽減し、ボトルネックを最小限に抑え、システムの可用性と応答性を向上させます。最新のクラウド環境でデータベース シャーディングを使用する利点は、AI やその他の関連テクノロジが進化し続けるにつれて増す一方です。

注目すべき傾向は次のとおりです:

AI 支援のシャーディング ワークフロー

自動化されたシャード キーの選択、ワークロードの再調整、クエリ ルーティングなどのインテリジェントな機能が、より主流になります。

利点: シンプルで最適化された運用と、かつてないスケーラビリティ

ゼロ ダウンタイム リシャーディング

最新のデータ プラットフォームでは、データのダウンタイムや複雑なデータ移行を必要としないシャード キーの変更がますますサポートされるようになります。

利点: ワークロードの変化に応じたシャーディング戦略の更新に関する柔軟性の向上

シャーディングとサーバーレス データベースの組み合わせ

サーバーレス データベースは、シャードごとに個別にサーバーをプロビジョニングおよび管理します。また、イベントドリブン クエリに基づいて、オンデマンドで容量をスケールアップまたはスケールダウンします。

利点: 運用オーバーヘッドの軽減

適応型ポリシー駆動の地理的シャーディング

自動化されたシャーディング ワークフローでは、コードに埋め込まれた地域固有のポリシー ルールに基づいて、地理的シャード間でデータが自動的にルーティングされます。利点: 規制要件やプライバシー要件の変化への迅速な対応

クラウド コンピューティングについての詳細をご確認ください。

よくあるご質問

  • データベース シャーディングは、複数のサーバー間で大規模なデータベースを水平方向にスケーリングするプロセスであり、それぞれがデータ全体の個別のサブセットを持つシャードをホストします。シャーディングは、単一の大規模なサーバーに依存するのではなく、クエリとストレージを複数のマシンに分散することで、増大するデータ ボリュームとユーザー トラフィックを効率的に処理するために使用されます。
  • シャーディングとパーティション分割の両方は、大規模なデータベースをより小さなサブセットに分割することで、データベースの運用を最適化します。ただし、パーティション分割は同じサーバー上でデータを分割するのに対して、シャーディングは複数のサーバーにデータを分散します。レプリケーションとは、冗長性を確保するために、複数のサーバーに同じデータセットの複数のコピーを保持することを指します。 
  • はい。データベース シャーディングにより、アプリケーションのパフォーマンスとスケーラビリティが向上します。シャード間でデータとワークロードを分散することで、シャーディングはクエリの応答時間を短縮し、フォールト トレランスが向上します。組織はアプリを水平方向にスケーリングすることもできます。シャード キーとシャード戦略の選択は、データ シャーディングの最適化に不可欠です。
  • はい。Azure やその他のクラウド プラットフォームでは、データベース シャーディングの組み込みサポートが提供されています。たとえば、Azure SQL Database には、シャードの作成と管理を簡略化するクライアント ライブラリなど、データベースのスケーリングを最適化するためのツールがいくつか用意されています。