データベースのスケーラビリティとは何か?
このページでは、データベースのスケーラビリティについて理解を深めていただくために、以下の項目を取り上げます:
データベースのスケーラビリティとは?データベースのスケーラビリティとは、データベースがより多くの負荷を処理する能力だけでなく、アプリケーションに対するビジネス上の要求が高まるにつれてパフォーマンスを向上させる能力のことです。スケーリングとは、より大きな需要に対応するためにリソースを拡大することだけを意味するのではなく、需要が減少した場合には縮小することも意味することに注意してください。
データベースのスケーリングに失敗すると、3つの典型的な結果が生じる:CPU/メモリの過負荷、ストレージの容量超過、ネットワークの過負荷によるデータトラフィックの低下です。これらの問題のいずれか1つ、またはそれらの組み合わせが、アプリケーションをダウンさせ、ビジネスに深刻な影響を与える可能性があります。
このページでは、2種類のスケーリング、それぞれの課題、そしてそれらの課題を克服するための推奨ソリューションを取り上げます。最後に、スケーラビリティの観点からNoSQLとリレーショナルデータベースを比較し、なぜCouchbaseがスケーラビリティにとって最良の選択であるかを示します。
水平スケーリングと垂直スケーリング
データベースには、より多くのリソースが必要とされる場合に、その可用性と動作を向上させる2つの方法がある:垂直スケーリングと水平スケーリング。
水平スケーリングとは何か?
ホリゾンタル・スケーリングは、非リレーショナル・システムで有効であり、増加した負荷を共有するためにノードを追加することを指す。これらのノードは複数のサーバーにまたがるクラスターの一部であり、データは結合を介して接続することができる。水平スケーリングはスケールアウトとも呼ばれる。
垂直スケーリングとは何か?
バーティカル・スケーリングとは、1台のサーバーで稼働しているデータベースにより多くの物理的または仮想的なリソースを追加することを指します。これは、CPUパワー、メモリ、ストレージ容量を追加することで実現できます。垂直スケーリングはスケールアップとも呼ばれます。
水平スケーリングと垂直スケーリング、どちらが良いですか?
どのようなスケーリングを選ぶべきかは、用途や克服すべき特定の課題によって異なる。考慮すべき要素
- 垂直スケーリングは、大規模なスケールアップを必要とせず、コンピュート・リソースの変更以上にシステム全体の変更を最小限に抑えたい場合に、最初の選択肢として適している。
- より多くのリソースを得るためにマシンを切り替える場合、垂直方向のスケーリングにダウンタイムが必要になることがある。
- 最終的には、コンピュート・リソースが拡大するにつれて、垂直スケーリングを使用してデータベースを拡張し、維持する方が高くつく可能性があります。
このような問題に直面した場合、あるいは、さまざまな成長シナリオに対応できるようにシステムを将来的に強化したい場合は、水平スケーリングが有効です。
- 水平スケーリングは、1台のサーバーが故障した場合の影響を軽減するため、耐障害性と可用性を向上させることができます。
- 水平スケーリングには、アプリケーションのアーキテクチャやコードの変更が必要になる可能性がありますが、Couchbaseのような自動スケーリング機能を提供する最新のデータベースであれば、影響は軽減されます。
データベースのスケーラビリティの課題
データベースのスケーリングは複雑な場合があり、遭遇する課題は多くの要因によって異なります。最初の課題は、リレーショナル・データベース上で動作するレガシー・アプリケーションを持っていることかもしれません。この場合、物理/仮想リソースをさらに投入するか、水平スケーリングをサポートするデータベース上で動作するようにアプリケーションを再設計するかのどちらかを選択しなければなりません。
最新のアプリケーションをスケーリングするもう1つの課題は、さまざまな負荷に応じてコストを管理することです。使用量が少ないときと多いときで、コンピュート・リソースに同じ料金を支払うことは避けたい。コストと需要を一致させたいのです。
3つ目の課題は、水平にスケールされたデータベースは保守や管理が複雑になることです。Couchbase Capella™は、レプリケーションとシャーディングをサポートし、完全に管理されたDatabase-as-a-Service(DBaaS)であるため、このような場合に理想的なソリューションです。 多次元スケーリング.
データベースのスケーラビリティを向上させるには
レプリケーションとシャーディングの両方をサポートすることで、水平スケーリングを向上させることができる。
レプリケーション
レプリケーションとは、データベースやデータベース・ノードのコピーを作成するスケーリングの一形態である。あるノードがダウンしても、そのデータのコピーを別のノードから取り出すことができる。レプリケーションのもう1つの利点は、異なる場所の異なるノードにリクエストを送ることができるため、特定のノードにかかる負荷が軽減されることです。
Couchbaseのいくつかの重要なコンポーネントは、複数のCouchbaseインスタンスがマスターノードとして機能し、互いにデータをレプリケートすることができるマスターマスターレプリケーショントポロジに基づいています:
- Couchbase は以下を使用します。 レプリケーション・ストリーム を使用してノード間でデータを複製する。レプリケーション・ストリームとは、2つのノード間の連続的な双方向データ・ストリームのことである。
- Couchbase バケットにデータを保存これは、関連するデータをグループ化した論理コンテナである。各バケットは、そのデータを1つまたは複数の他のノードにレプリケートするように設定できる。
- クロスデータセンターレプリケーション(XDCR) は、データセンター間のレプリケーションを可能にするCouchbaseの機能です。XDCRは、異なるリージョンやアベイラビリティゾーンにあるCouchbaseクラスタ間のレプリケーションを可能にします。
- マスターマスターレプリケーショントポロジでは、複数のノードが同時に同じデータを更新すると競合が発生する可能性があります。Couchbaseは 紛争解決メカニズム これは、競合を解決するためにドキュメントのバージョニングとタイムスタンプに依存している。
シャーディング
シャーディングはパーティショニングとも呼ばれ、複数のノード間でデータを移動させる原理に基づいている。レプリケーションとは異なり、シャーディングではコピーを作成するのではなく、データを分割する。 データベースのシャーディング は、データセット全体をシャードと呼ばれる複数のグループに分割する。いったん分割されると、各シャードは独立して、通常はクラスターと呼ばれる複数のサーバーに保存できる。各シャードは独立してアクセスできるため、データへのアクセスが高速になり、処理、コンピューティング、ストレージにより多くのリソースを利用できるようになる。
シャーディングはより高速なパフォーマンスを可能にするが、同時に複雑さももたらす。この複雑さにはリバランシングの概念も含まれる。リバランシングとは、データを均等に分散させるために、時間をかけてシャード間でデータを移動させることである。
詳しくは Couchbaseのシャーディングに関するこのガイド.
NoSQLとリレーショナル・データベースのスケーラビリティ
NoSQLデータベースは、垂直方向にも水平方向にも拡張できるため、リレーショナル・データベースよりも本質的にスケーラブルだ。また、複数のサーバーにまたがって大量のデータを処理できるように設計された分散アーキテクチャを備えています。
オラクルなどの従来のリレーショナル・データベース管理システム(RDBMS)は、可用性よりも一貫性に重点を置いている。逆に、NoSQLデータベースは一貫性よりも可用性を選択し、より大量のユーザーとデータをサポートすることに重点を置いている。また、一部のノードがダウンしても、データ分散はより耐障害性に優れている。
結論
スケーリング要求の一歩先を行くには、定期的に負荷テストを行い、アプリケーションとビジネスニーズに最適なスケーリング方法をサポートするデータベースを選択することです。複雑さよりもコストを、一貫性よりも稼働時間を選ぶなど、水平方向と垂直方向の両方のスケーリングアプローチには妥協が必要であることを知っておいてください。
Couchbaseを使用したデータベースのスケーリングについては、以下のリソースを参照してください:
- 多次元データベースのスケーリング - Couchbaseサービス、リバランシング、ステータス、イベント、ジョブの詳細
- なぜNoSQLデータベースを選ぶのか? - NoSQLとは何か、どのように機能するのか、NoSQLデータベースは何に適しているのか。
- サーバーレス・データベース - 開発者にとっての利点、アプリケーションにとってのデータ永続性、サポートされるアプリケーション
- Couchbase Capella DBaaS - Couchbaseを使い始め、データベース管理をなくす最も簡単で最速の方法