DBアーキテクチャ - ntuf/Tips GitHub Wiki

アーキテクチャ 特徴 利点 欠点 主な用途 具体的なサービスと使用例
Master-Slave レプリケーション マスターが書き込み、スレーブが読み込みを行う データの冗長性確保、高速な読み取りが可能 マスター障害時にはスレーブの昇格が必要で、ダウンタイムが発生する可能性 読み取り負荷の分散、バックアップ MySQLのレプリケーション (例: WordPressサイトのスケーリング)
シャーディング (Sharding) データを複数のノードに分散して格納 データ量の増加に対応可能、スケーラビリティが高い データの分割が複雑になり、クエリが難しくなる 高トラフィックのWebサービス、ECサイト MongoDB (例: eBayの大規模トランザクション処理)、Cassandra (例: Instagramのメッセージシステム)
データレイク (Data Lake) 構造化・非構造化データをそのまま保存 データ形式の自由度が高く、さまざまな種類のデータをそのまま保存可能.大量のデータを低コストで保存できる。 データの整備が必要で、検索速度が遅くなることがある ログ・動画・音声などのデータ分析 Amazon S3 (例: Netflixの視聴履歴分析)、Azure Data Lake (例: IoTデータ蓄積)
データウェアハウス (Data Warehouse) 構造化データの集計や分析に特化 高速なクエリ性能、データの一元管理が可能 バッチ処理が主体で、リアルタイム更新は難しい場合がある。大規模データではコストが高くなることがある BIツールによる分析、経営データの集計 Amazon Redshift (例: ユーザー行動分析)、Snowflake (例: デジタルマーケティングの効果測定)
NewSQL SQLの利便性とNoSQLのスケーラビリティを両立 一貫性の維持が可能、分散アーキテクチャに対応 新興技術のためエコシステムが発展途上であり、学習コストが高い トランザクション処理の多いシステム、金融系サービス CockroachDB (例: Bank of Americaの決済システム)
NoSQL スキーマレスで非構造化データに対応 柔軟なスキーマ設計、水平スケールが容易で、大規模データの分散管理に強い 複雑なクエリが苦手、データの整合性を担保しづらい ソーシャルメディア、IoTデータの蓄積 Cassandra (例: Facebookのメッセージ送信システム)
インメモリデータベース データをメモリ上に格納し、高速アクセスを実現 圧倒的な高速処理が可能、キャッシュとしても利用可能 メモリ障害時にデータ損失のリスクがある リアルタイム分析、キャッシュ、セッション管理 Redis (例: Twitterのタイムラインキャッシュ)、Memcached (例: YouTubeの動画視聴履歴キャッシュ)
方式 読み込み負荷軽減 書き込み負荷軽減 設計の難易度 代表的なサービス例
レプリケーション ◎(得意) ✖(苦手) SNS, ECサイト(商品情報)
シャーディング ◎(得意) ◎(得意) Facebook, Amazon(注文管理)
パーティショニング ◯(普通) △(やや苦手) 証券取引所、ログ管理
クエリキャッシュ ◎(得意) ✖(苦手) Twitter, ECサイト(人気商品)