Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

パーティショニング技術―上手に分割していただきたく

edited by DB Online   2015/02/10 00:00

 前回は「うどん店を繁盛させるため、いかに厨房を効率よく回せばいいか」について、うどん店の経営に詳しい日立の長江さんにテーテーしてもらいました…じゃなくて、ミッションクリティカルなデータベースシステムにおける並列処理「パラレルサーバ」について、うどん店のたとえを挙げながら紹介いたしました。「うどん屋のたとえ、思った以上に使える…!」との手ごたえを得た我々は、今回も前回に引き続き、ミッションクリティカルなうどん店におけるデータベースのゆで方やパーティショニングなどについてテーテーしてもらったのであります。もはやデータベースの話をしているのか、うどん店の話をしているのか、あいまいになってきて……。

DBオンラインリアルイベント開催!

3月13日開催 DB Online Day―ニッポンを強くする!データ活用の未来!
ニッポンのデータ活用を徹底討論!情シスの理想と現実とは?
後援:日本データベース学会/協賛:日立製作所、ウィングアーク1st、富士通
→詳細、お申込みは
こちら

ミッションクリティカルに欠かせないデータベース技術「パーティショニング」

吉村 さて、今月も始まりました、「規子のうどんでGO!」

長江 そんな連載ではありません。

吉村 えっ、じゃあ、今まで一体何の話をしてきたんですか……。

長江 今までもこれからも、ミッションクリティカルなデータベースについて話しています。

吉村 拝承。

長江 ちなみに今回のテーマは「パーティショニング」です。

吉村 うどんのたとえで説明していただきたく。あと、そろそろ新しい日立用語をテーテーしていただきたく。

長江 それはもうちょっと待っていただきたく。パーティショニング、何となく分かりますよね?

吉村 テーブルを分割するってやつですよね。何となくは知ってるつもりなんですけど、実は詳しくは知らなかったりします。

長江 大規模システムやミッションクリティカルなシステムの設計・開発に携わったことがない方だと、パーティショニングという言葉自体は聞いたことがあっても、実際に触る機会はあまりないかもしれません。実際、一般的なリレーショナルデータベース製品では、パーティショニングの機能はオプション扱いになっていることが多いですしね。

吉村 確かに、パーティショニングの機能を上手に扱えるデータベース技術者は「上級者」というイメージがあります。

長江 そうですよね。でもHiRDBのように、そもそもミッションクリティカル用途を前提に作られているデータベース製品では、パーティショニングって割と普通に使われているんですよね。

吉村 そもそも、なぜパーティショニングはミッションクリティカルなシステムで多く使われているんでしょう?

長江 第1回でも説明したように、ミッションクリティカルなシステムで使われるデータベースは、高負荷トランザクションに耐えられなくてはいけません。パーティショニングもそのための機能の1つなんです。具体的には、表を複数に分割することで、ある特定のエリアのデータに対するアクセスが集中してボトルネックになるような事態を未然に防いだり、ある特定のエリアの障害やメンテナンスがシステム全体に及ぼす影響を最小化するための技術です。

吉村 ちなみにパーティションって、パーティ・ションっていう人が発明したって知ってました? 嘘ですけど。

長江 ……前回、データの処理を複数のサーバに分割して並列処理させることで、高負荷トランザクションに対応できることを説明しましたよね。でも、サーバをいくらたくさん並べて並列処理しても、それらが皆同じ巨大なテーブルにアクセスするのでは、アクセス競合が頻発してボトルネックになってしまいます。これを回避するには、テーブルを複数のパーティションに分割して、それぞれでアクセスを均等化してやればいいわけです。

吉村 なるほど。うどん店のたとえで言うなら、うどんの長さをぴったり同じにそろえれば商売繁盛間違いなしということですね!

長江 全然違います。強いて言えば、うどんを茹でる鍋を複数用意するというイメージでしょうか。厨房でうどんを茹でる料理人をいくらたくさんそろえても、鍋が大鍋1個だけだと明らかに非効率ですよね? 

吉村 確かに。注文はばらばらに入ってきますし、茹でる人も複数いるので、大鍋1個だけだと茹でる量の調整が難しそうですし、作業の待ち時間も発生して無駄が多そうです。

長江 その点、小さめの鍋を複数並べて同時並行で茹でた場合は、複数いる調理人が常に無駄なく稼働できますし、ランダムに入ってくる注文にも柔軟に対応できます。それに、もし何らかの事情で鍋を交換しなくてはいけなくなった場合でも、大鍋を丸ごと交換となるとその間オーダーを完全にストップしなくてはいけませんが、小鍋に分けていればほかの鍋で茹でてる間にさっと交換できます。空の鍋を常に用意しておけば、鍋に問題が起きたときや、茹汁を交換したいときなどにすぐ交換できますし、何なら予備の鍋を常に火にかけて準備しておけば、ほぼ時間のロスなく交換できます。

吉村 それって、まさに「コールドスタンバイ」と「ホットスタンバイ」ですね!

長江 その通りです。パーティショニングは、大規模データベースの運用性や可用性を担保する上でもとても有効な技術なんです。

うどんのたとえ
うどん屋でいうと…

※この続きは、会員の方のみお読みいただけます(登録無料)。


※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 吉村 哲樹(ヨシムラ テツキ)

    早稲田大学政治経済学部卒業後、メーカー系システムインテグレーターにてソフトウェア開発に従事。その後、外資系ソフトウェアベンダーでコンサルタント、IT系Webメディアで編集者を務めた後、現在はフリーライターとして活動中。

バックナンバー

連載:規子と哲樹の、おしえて!ミッションクリティカル

もっと読む

All contents copyright © 2007-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5