過去問ドリル

LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問6

性能・拡張性の設計/性能の拡張

注文履歴を記録する単一の巨大なテーブルに書き込みが集中し、1台のプライマリデータベースの書き込み性能が限界に達している。読み取りの割合は小さい。書き込みのスループットを台数に応じて伸ばす方式として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)

正解:C

解説

水平シャーディングは、同じ構造のテーブルの行をシャードキー(顧客IDなど)に基づいて複数のデータベースへ分散する方式で、書き込みも各シャードに分かれるため、台数に応じて書き込みのスループットを伸ばせます。代わりに、シャードをまたぐ結合やトランザクションが難しくなり、キーの選び方が偏るとアクセスが特定のシャードに集中する点に注意が必要です。リードレプリカは読み取りを分散する手段で、書き込みはすべてプライマリが受け、レプリカでも同じ変更を適用するため書き込みの限界は解消しません。垂直シャーディングは機能やテーブル単位で分けるため、1つのテーブルに書き込みが集中する状況には効果がありません。

選択肢ごとの解説

  • A誤り。リードレプリカは読み取りの分散には有効ですが、書き込みはすべてプライマリが受けるため、書き込みの限界は解消しません。
  • B誤り。機能単位での分割は複数のテーブルに負荷が分散している場合に有効ですが、1つのテーブルに書き込みが集中している状況には効きません。
  • C正しい。行をキーで複数のデータベースに分けることで書き込みも分散され、台数に応じて書き込みのスループットを伸ばせます。
  • D誤り。キャッシュは読み取りの負荷軽減と応答時間の短縮に効きますが、書き込みは最終的にデータベースへ行う必要があります。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く