データベースのグラフ化(その1)

本HPを立ち上げてから凡そ2年になるが、ようやくデータベース化したデータをグラフ化できるようになった。

(その1)と記したのは、現時点では作成したグラフのスクリーンショットを掲載できるようになったというだけで、HP上で動的にグラフを作成できないからである。そちらの準備も進行中ではあるが、当初の目論見からの方向転換もあったので、諸々備忘録として残しておく。

Table of Contents

方針変換

当初はデータベース化に際して、Podsというプラグインを使ってWordPressの中にデータベースを構築しており、そのデータベースをグラフ化するという目論見であった。

しかし、Podsそのものについて、(特に日本語)情報が少なく、データベースをグラフ化したような公開事例も見つかっていない。そうこうするうちに、レンタルサーバーについても色々わかってきて、WordPress以外のデータベース構築も容易であるとわかって、それならWordPressとは独立したデータベースを構築して、そのデータをグラフ化する方が(昔、作ったこともあるので)簡単で、そちらの方向に切り替えることとした。

但し、Podsのプラグイン紹介ページには、Elementori ProWPGraphQLintegrate連携?)して使えるとあるので、これらから入る方法も考えられ、完全に捨てたということではない。当面グラフの作成を最優先として、それなら普通のSQLデータベースからグラフを作成するのが簡単なので、一旦回り道をするということである。

データベースの作成

WordPressのデータベースと独立した普通のSQLデータベースを作成するのに、せっかく上記Pods用データベースを作成してあるので、このデータベースをエクスポートできないかと考えた。多分、スクリプトでゴリゴリ出来そうな感はあったが、どうにもそのやり方がわからなかった。

そこで、ここでも挫折して、OpenFOAMのバージョン・計算環境毎のcsvデータを使ってアップロードするとした。これはPods用に作成したスクリプトをベースに、基本は不要な部分を削除することで、比較的簡単に作成できた。

つまり、先の記事で説明した方法(図1)に対して、以下の図2の方法でデータベースを作成できるようになった。

図1.Pods用データベースの作成手順

図2.独立データベース(of_tutorials)の作成手順

なお、Podsのデータベースを作成した際には、計算結果情報だけでなく、メッシュ作成方法やAllrunに関する情報もデータベース化していたが、これらの部分も省略した。あくまで、当面のグラフ作成が目的だからである。Podsを使うことを諦めて、こちらが本命になったとして、Pods相当のデータベース作り替えることも可能になるように全体的なフレームワークの変更はしていない。

データベースからグラフを作成する

基本的に、WordPressのプラグインを使ってグラフを作成したく、様々なプラグインを評価中であるが、現在のところ、フリーで使えるプラグインで出来ることは限られていた。

たとえば、右のグラフは、OpenFOAMのリリース年月日毎に、全チュートリアル数について横棒グラフで表示したものだが、ESI版とFoundation版も混在している。これらを区別して表示したくなるのは当然であるが、今の所、このグラフを作成したプラグイン(SQL Chrt Builder)では出来ていない。

但し、この問題は、データベースからデータの抽出方法を工夫すれば解決する可能性もある。昔使ったことがあるとはいえ、その方法をちゃんと理解して使えているかどうかは、大いに疑問点があった。

プラグインを詳細に比較するに際して、プラグインの機能そのものの問題なのか、データベースからグラフ化したいデータを抽出する方法の問題なのかを切り分けて考える必要があるということである。

図3.OpenFOAMの全チュートリアル数の推移

データベースからデータを抽出する

図3.のグラフを作成するに際しては、右のSQL構文を使ってデータを抽出している。

ツールによっては、このSQL構文そのもをメニュー方式で作成できるものもあるようだが、SQL Chart Builder では、SQL構文そのもを入力するカラムがあって、そこへ入力して使う仕組みとなっていた。

入力に間違いがなければ、意図したグラフが描かれ、そうでないとエラーメッセージが出たり、何も表示されなかったりするので、SQL構文を手直ししながら作り込んでいくことになる。

しかし、この作り込みをグラフ化ツール上でやろうとすると、ツールによってSQL構文作成方法が異なったり、エラーメッセージの表記方法も異なるので、これまた大変な労力が必要になる。

				
					select `ver_name` version,
 count(*) postcount,
`name` exeSys, 
`release_date`
 from `of_tutorials` 
JOIN of_ver ON of_tutorials.of_ver = of_ver.id 
JOIN of_exe_system ON of_tutorials.exe_system=of_exe_system.id 
group by `exe_system`, `of_ver`  
order by `release_date` 
				
			

phpMyAdminを使ってみる

phpMyAdminは、データベースを管理するソフトとして鉄板的存在のソフトで、データベースのインポート(図1,2の)/エクスポート(同、)はこのソフトを使って実施している。

HPを自宅サーバーで運用していた時代から使っていたものではあったが、自宅サーバーで運用していた時には、何故か更新がうまくいかなくて、古いバージョンのものを使っており、それでもインポート/エクスポートについては十分使えていた。

サーバーをレンタルサーバーに変更してからは、こちらのソフトも当然のように最新バージョンが使える環境となった。そこで、これを使ってSQL構文のチェックすれば良いことに思い至ると同時に、古いバージョンでは存在しなかったグラフ化機能が存在することを発見した!(補足1

具体的な作業の操作イメージを以下に示しておく。

図4.データベースから表示対象データを抽出

SQLコマンド画面を選択して、SQL構文を入力、実行ボタンを押すと、抽出されたデータセットがリストアップされる。ここで画面の最下段に「グラフで表示する」ボタンがあるのを発見。これを押すと・・・

図5.表示対象データのグラフ化

デフォルトでは折れ線グラフが表示されたが、様々なオプションがあり、これをGUIメニュー(ラジオボタンやプルダウン選択メニュー)を使って、その場でグラフの表示内容を変更できる、という優れものであった。

図3.の説明では、バージョンの混在が区別できなかったが、本グラフではバージョン名が縦軸の項目名として表示され、なおかつ使用した計算環境も(バーの色で)区別できている。

データベース化したそもそもの目的は、自身を含めてHP読者がこの操作をして、自在にデータの可視化(グラフ化)をできるようにしたかった。このphpMyAdminを使えば、そのものズバリの操作が出来るということである。

当面の措置

phpMyAdminのグラフ化機能についてはいくつか注文点もある(補足2)が、このインターフェースをユーザーに公開できれば、それで済む話でもある。とはいえ、セキュリティ面で、さすがにそれは現実的でない。

また先に、本家HPの「DEXCS2022 the Next」の記事において、

  • 総計算時間や、ディスク使用量を、以下の要領例でグラフ化する
    • ジャンル別
    • Ver比較
    • Ver履歴

と記しており、多分これらをphpMyAdminを使って実現できるだろうという感触は得ているものの、これも一朝一夕という訳にはいかない。SQL構文の作成方法についての学び直しも必要である。実現方法を模索しつつ、出来上がったグラフのスクリーンショットを適宜公開することにした。やっているうちにもっと面白いグラフ表現を思い付くかもしれない。

そこで、公開(その1)とした次第である。

今後

主要なグラフ作成について、グラフの出力イメージと、STL構文の使用方法が決まったら、次にグラフ化プラグインの選定に進む。

グラフ化プラグインを使って、STL構文の入力作業がどれだけ簡単になるか。phpMyAdminで作成したグラフと比べて、オプションや見栄えはどうか?とった点がプラグイン選定に際してポイントとなろう。

今のところ選定の対象として(すでに調査済を含めて)考え中のプラグインについて、以下列挙しておく。

このツールの紹介記事を読んで、当初はこれを本命と考えていたが、昨年の7月からダウンロード出来なくなっていた。

本記事中、図3のグラフを作成したものであるが、散布図を描けないなど、機能不足が否めない。

自宅でサーバーを運用していた時代に使っていたものであるが、いつの間にか製品化されていた。

補足事項

phpMyAdminでグラフが描けるようになったのは、バージョン3.4.0(2011/5)以降で、自宅サーバーで使っていたものは、バージョン2.7…くらいであったか。
  • 配色の変更が出来るのかどうか不明
  • グラフをイメージ保存できる機能があるが、見た目通りには程遠くて使い物にならない(手作業でスクリーンショットするしかない)
  •  横棒グラフで、X/Y軸の読み替えが必要
  • グラフ表示モードになった時に、データテーブルを参照できない。

「データベースのグラフ化(その1)」への2件のフィードバック

  1. ピンバック: OpenFOAM-v2306 – E.Mogura's OpenFOAM®

  2. ピンバック: OpenFOAM-v2312 – E.Mogura's OpenFOAM®

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です