結果データを上手にまとめるには?

結果をまとめ上げる難しさ パラレルクエリでは、結果をまとめ上げる段階でも大きな苦労があります。

田中 宏昌

2008年7月16日 20:00

結果をまとめ上げる難しさ

 パラレルクエリでは、結果をまとめ上げる段階でも大きな苦労があります。

 前回までのサンプルでは、最終的な結果が1つの数値に集約されるため非常に単純でしたが、実際には結果が巨大になることもしばしばあります。そして、結果が巨大であると場合は、通常、ソートや集計が行われています。例えば、検索エンジンの検索結果は、より意味のあるものが上位に表示されるよう何らかの法則でソートされています。

 すなわち、各プロセスが分担して計算したぶつ切りの結果を、単純につなぎ合わせるだけでは終わらない場合が多いということです。

基本はデータベースにまとめる

 上に記したことを実現するには、まとめ作業のために一時的にデータベースの力を借ります。

 具体的には、データベース上に一時的なテーブルを作成し、そこに各プロセスの結果を追記していき、その一時的なテーブルに対して集計やソートを行うクエリを投げ、その結果を返します。

 一時テーブルの作成する場所はいくつか考えられますが、シンプルなのは、図1の上に示すように、並列クエリを投げている親のサーバー上に構築することです。

 このほかに、並列クエリの結果を集計するための専用のサーバーを設置し、そこで集計する方法などがあります。

 また、分担してクエリを行った結果を、それぞれのサーバー上に一時テーブルを作成し、何らかの方法で、1つのサーバー上にこれらの一時ファイルをまとめるという方法もあります。例えば、図1の下に示すように、MySQL5.1以降でサポートされているFEDERATEDエンジンを用いることでこれを実現することができます。

 図1の上に示した方法はシンプルですが、結果をまとめる一時テーブルが1つのディスク上に作成されるため、速度面でのネックになる場合があります。この問題は、図1下の方法にすることで理屈の上では解消しますが、FEDERATEDエンジンは本番稼動に適するほど成熟していないといううわさもあり、何より筆者が本格的に使ったことが無いので、自信を持ってお勧めできる状況ではありません。

 以降は図1(上)の親サーバー上で結果を集約する方法で進めていきます。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30