DBOnlineの読者ならシャーディングという言葉をご存知の方が多いでしょう。複数のサーバを使用して単一の論理データベースを構成する手法のことです。特長は、各サーバがハードウェアを共有することなく論理データベースを構成できる点にあります。そのため、必要に応じて後からサーバを追加し、ハードウェアの制限がない大規模なスケールが可能となります。シャーディングはオープンソースのデータベースで使用されるケースが多いですが、Oracle DatabaseでもOracle Database 12c Release 2(以下、12c R2)からシャーディングの機能が提供されました。今回は、Oracle Databaseのシャーディングについて機能と特長をご紹介します。
一般的にシャーディングのメリットとして挙げられるのが「スケーラビリティ」です。シャーディングを構成する各サーバには単一の物理データベース(以下、シャード)が存在します。例えば、システムをスモールスタートしてデータ量やアクセス数の増加に合わせ、後からシャードを追加することができます。また、セール期間など一時的な高負荷が予測されるようなシステムでは、シャードを一定期間だけ追加して後から削除することもできるため、柔軟な構成が可能となります。
サーバを用意してデータベースを都度作成するよりも、ボタン一つで簡単にサーバやデータベースを用意できるクラウド環境で利用するのに適したアーキテクチャと言えます。
12cの“c”はクラウドを表しており、Oracle社はクラウドと相性がいいアーキテクチャを12c R2で実装したのではないでしょうか。

その他にシャーディングのメリットとして挙げられるのが「可用性」です。シャーディング構成の場合、それぞれのサーバは独立して存在しているため、単一のサーバに障害が発生してもその他のサーバは影響を受けることがありません。そのため、障害が発生していないサーバへアクセスする処理は継続できます。図2のように、障害範囲を極小化することで高い可用性を得ることができます。

では、シャーディングを利用する場合、一般的にどのような課題が考えられるでしょうか。以下にいくつか例を挙げます。
- データを全シャードで均等に分散するための事前設計やデータ挿入が必要となる
- データに接続するためには、欲しいデータがどのシャードに格納されているかを把握する必要がある
- 複数台のシャードを構成するのに多くの手間と時間が発生する
- シャードを追加した際は新しいシャードにデータが格納されていないため、データを分散しなければいけない
シャーディングを利用する場合はアプリケーションからの接続方法やデータの配置方法などいくつかの課題にぶつかります。

この記事は参考になりましたか?
- Oracle Database 12cR2のすべて連載記事一覧
-
- 12c R2ではじめるOracle Databaseのシャーディング
- さらに使いやすく!Oracle Database 12cR2のDatabase In-Me...
- ユーザの意見をトコトン反映した12c R2のマルチテナント
- この記事の著者
-
川合 裕太(カワイ ユウタ)
株式会社アシスト データベース技術本部 入社以来フィールド・エンジニアとしてデータベース・システムの構築、Oracle Database Appliance環境構築などを担当。その他、Oracle教育セミナーの講師を経験し、現在はOracle Exadata Database Machine担当と...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア