InfiniDBは大きく分けるとUser Module(以下UM)と、Performance Module(以下PM)という2つのモジュールで構成されています。

構成パターンとしては、大きく分けると1台のマシンにUMとPMが同居する「シングル構成」と、UM用のマシンとPM用のマシンを別々に用意する「複数台構成」の2パターンがあります。(図1)

InfiniDB_Configure01         
【図1】代表的な構成パターン



上記の複数台構成は「UM1台、PM3台」の例ですが「UM1台、PM2台」や「UM2台、PM2台」といった構成を取ることも可能です。

また、UM、PMはそれぞれ以下のような役割を担っています。

User Module (UM)

<実行される主な処理>
・クライアントからの接続
・SQL構文の解析
・実行計画の策定
・PMへのリクエストの送信
・PMからの受け取った結果セットのクライアントへの返信

UMはクライアントからの接続要求を受けSQL構文の解析等を行います。InfiniDBはMySQLをベースに開発されたデータベースであり、このフロントエンドの処理はmysqldプロセスが担当します。

また、複雑なジョインやソートの処理はExeMgrというプロセスが行います。ExeMgrはメモリ上でジョイン等の処理を行うため、UMのマシンにメモリが多く積まれていると大量データのジョインやソートを行うことが可能です。

InfiniDB_Configure02
【図2】UM」及び「PM」の役割



Performance Module (PM)

<実行される主な処理>
・UMからのリクエストの受信
・ディスク(バッファキャッシュ)からのデータの抽出
・UMへの結果セットの送信

PMはUMからのリクエストを受け取り、ディスク(バッファキャッシュ)からデータを抽出する役割を担います。
この処理は主にPrimProcというプロセスが行います。PrimProcはマルチスレッドで処理するため、CPUコア数が多いマシンを利用すると、より高速に処理することが可能です。

また、PMが複数台の構成では、データは各PMが参照するディスクに分散して格納されます。(テーブルのサイズが大きければ、一つのテーブルであっても複数のPMに分散して格納されます。)
そのため、PMの数が多ければその分分散して処理が行われるため、パフォーマンスの向上が見込めます。