私はこれまで多くの NoSQL データベースと SQL データベースを見てきました。これらのデータベースの長所と短所を測定するためのさまざまなパラメーターがあり、スケーラビリティもその 1 つです。これらのデータベースを水平方向にスケーリングする場合と垂直方向にスケーリングする場合の違いは何でしょうか。
ベストアンサー1
水平スケーリングとは、リソース プールにマシンを追加することでスケーリングすることを意味し、垂直スケーリングとは、既存のマシンにパワー (CPU、RAM) を追加することでスケーリングすることを意味します。
これを覚える簡単な方法は、サーバー ラック上のマシンを想像することです。水平方向にマシンを追加し、垂直方向にマシンにリソースを追加します。
データベースの世界では、水平スケーリングは多くの場合、データのパーティション分割に基づいて行われます。つまり、各ノードにはデータの一部のみが含まれます。垂直スケーリングでは、データは単一のノードに存在し、スケーリングはマルチコアを通じて行われます。つまり、そのマシンの CPU と RAM リソース間で負荷を分散します。
水平スケーリングでは、既存のプールにマシンを追加することで動的にスケーリングする方が簡単な場合が多くあります。垂直スケーリングは、多くの場合、単一のマシンの容量に制限され、その容量を超えてスケーリングすると、ダウンタイムが発生することが多く、上限が設定されます。
水平スケーリングの良い例は、Cassandra、MongoDB、Google クラウド スパナ垂直スケーリングの良い例は、MySQL - Amazon RDS (MySQL のクラウド バージョン) です。これは、小さなマシンから大きなマシンに切り替えることで、垂直スケーリングを簡単に行う方法を提供します。このプロセスには、多くの場合、ダウンタイムが伴います。
インメモリデータグリッドなどギガスペースXAP、一貫性等は、ディスクにバインドされていないという理由だけで、水平スケーリングと垂直スケーリングの両方に対して最適化されることがよくあります。パーティショニングによる水平スケーリングと、マルチコア サポートによる垂直スケーリングです。
この件については、以前の投稿で詳しく読むことができます。スケールアウトとスケールアップそしてNOSQL 代替案の背後にある共通原則