Database Sharding _3
Database Sharding とは、"Shared-Nothing" のアプローチである
Database Sharding, The "Shared-Nothing" Approach
Database Sharding は、それぞれが CPU とメモリとディスクを持つ、複数の独立したサーバー全体をカバーするスケーラビリティのための方式を提供する。高度なデータベース・パフォーマンスを達成するための、従来からの方式と比較して、それらのアプローチがもたらすような、数多くの典型的な制約に苦しまないで済むことになる。 "shared-nothing" データベース実装のコンセプトは、15 年以上にもわたって研究中であり、ディスカッションが継続されている。しかし。この何年かの間にデータ量が急速に増大してきたため、ビジネス・アプリケーション市場が一般的な必要性を見いだそうとしているのが、それらの機能であると思われる。
Database Sharding の基本的なコンセプトは、非常に簡単なものである。つまり、大規模なデータベースを、複数のサーバー全体に分散された、小規模なデータベースに分解するものである。そのコンセプトについて、以下の図に示す:
Figure 2. Database Sharding takes large databases and breaks them down into smaller databases.
Database Sharding の "shared-nothing" における明白なアドバンテージは、数多くのサーバーがネットワークに加えられるときでも、ほとんどリニアに成長していく、改善されたスケーラビリティである。そして、小規模なデータベースへと分解していく、sharding ソリューションについて検討するとき、見落としてはならない、いくつかのアドバンテージが存在する:
-
Smaller databases are easier to manage. プロダクション環境におけるデータベースは、通常のバックアップや、データベースの最適化などの共通のタスクに対して、完全に管理されなてはならない。 大規模なシングル・データベースを用いて、限られた時間の中だけで、それらのルーチンタスクを達成することは、きわめて困難なものになり得る。 ルーチン化されたテーブルとインデックスの最適化は、何時間あるいは何日かにまたがる場合もあり、定期的なメンテナンスを実施できなくしてしまうこともある。 この sharding アプローチを用いることにより、それぞれの "shard" を個別にメンテナンスすることが可能となり、はるかに処理しやすいシナリオの提供と、平行したメンテナンス・タスクの実施が可能となる。
-
Smaller databases are faster. そのプロセスが、ネットワーク上に配置された多数の shard とサーバーをまたいで処理されるため、sharding のスケーラビリティは見た目にも明らかなものとなる。 それほど明白なものではないが、それぞれの shard データベースのサイズが小さいため、大規模なシングル・データベースを凌ぐパフォーマンスを実現するという事実もある。 サーバー上で個々の shard データベースをホストすることで、ディスク上のデータとメモリの比率が大きく改善され、ディスク I/O が低減される。それは、リソース競合の低減および、結合パフォーマンスの向上、インデックス検索の高速化、データベース・ロックの結果である。 したがって、shard されたシステムのスケールが、キャパシティにおける新しいレベルの能力をもたらすだけではなく、それぞれのトランザクションにおけるパフォーマンスも向上する。
-
Database Sharding can reduce costs. 大半の Database Sharding 実装においては、より低コストのオープンソース・データベースの利用もしくは、商用のデータベースの "workgroup" バージョンの利用が可能となる。 さらに、 sharding では、ハイエンドのマルチ CPU サーバーや SAN と比較して、よりはるかに低価格の普及品マルチコア・サーバ-を利用できる。多大なライセンス費用や、ソフトウェア・メンテナンス、ハードウェア投資において全体的なコストの低減が図られる。 他のソリューションとの比較において、70% 以上の低減が実現する場合もある。
Database Sharding が、数多くの組織において利用可能なソリューションであることに、疑いの余地はない。そして、このテクノロジーを実装している、数多くの大手オンライン・ベンダー(Amazon、eBay、Google など)により、Database Sharding はサポートされている。
<続く>
Database Sharding _1
Database Sharding _2
Database Sharding _3
Database Sharding _4
Database Sharding _5






















































































leave a comment